From b159cd25026fd5b3dc783b74a11e44ec15227fba Mon Sep 17 00:00:00 2001 From: kaetemi Date: Wed, 1 Aug 2012 10:57:49 +0200 Subject: [PATCH] Changed: #1440 Correct encoding for generated itf. Change pipeline config for Linux --HG-- branch : build_pipeline_v3 --- .../service/example_cfg/gtk_run_master.sh | 4 +- .../service/example_cfg/linux_run_master.sh | 4 +- .../service/example_cfg/linux_run_slave.sh | 4 +- .../example_cfg/pipeline_service_linux.cfg | 2 +- .../tools/pipeline/service/metadata_storage.h | 14 ++- .../service/module_pipeline_master.cpp | 94 +++++++-------- .../service/module_pipeline_master_itf.cpp | Bin 28400 -> 13806 bytes .../service/module_pipeline_master_itf.h | Bin 16160 -> 7840 bytes .../service/module_pipeline_slave_itf.cpp | Bin 21496 -> 10434 bytes .../service/module_pipeline_slave_itf.h | Bin 13822 -> 6717 bytes .../pipeline/service/pipeline_service.cpp | 113 ++++++++++-------- 11 files changed, 124 insertions(+), 111 deletions(-) mode change 100644 => 100755 code/nel/tools/pipeline/service/example_cfg/gtk_run_master.sh mode change 100644 => 100755 code/nel/tools/pipeline/service/example_cfg/linux_run_master.sh mode change 100644 => 100755 code/nel/tools/pipeline/service/example_cfg/linux_run_slave.sh diff --git a/code/nel/tools/pipeline/service/example_cfg/gtk_run_master.sh b/code/nel/tools/pipeline/service/example_cfg/gtk_run_master.sh old mode 100644 new mode 100755 index 1b5d31b45..3adb32d8b --- a/code/nel/tools/pipeline/service/example_cfg/gtk_run_master.sh +++ b/code/nel/tools/pipeline/service/example_cfg/gtk_run_master.sh @@ -1,5 +1,5 @@ #!/bin/sh -cd /home/nevrax/build/devl/bin -./pipeline_service -C/home/nevrax/code/nel/tools/pipeline/service/example_cfg/master_gtk/ +cd /home/kaetemi/core/pipeline_v3/build/devl/bin +./pipeline_service -C/home/kaetemi/core/pipeline_v3/code/nel/tools/pipeline/service/example_cfg/master_gtk/ diff --git a/code/nel/tools/pipeline/service/example_cfg/linux_run_master.sh b/code/nel/tools/pipeline/service/example_cfg/linux_run_master.sh old mode 100644 new mode 100755 index df59e643a..e624a9ba0 --- a/code/nel/tools/pipeline/service/example_cfg/linux_run_master.sh +++ b/code/nel/tools/pipeline/service/example_cfg/linux_run_master.sh @@ -1,5 +1,5 @@ #!/bin/sh -cd /home/nevrax/build/devl/bin -./pipeline_service -C/home/nevrax/code/nel/tools/pipeline/service/example_cfg/master_linux/ +cd /home/kaetemi/core/pipeline_v3/build/devl/bin +./pipeline_service -C/home/kaetemi/core/pipeline_v3/code/nel/tools/pipeline/service/example_cfg/master_linux/ diff --git a/code/nel/tools/pipeline/service/example_cfg/linux_run_slave.sh b/code/nel/tools/pipeline/service/example_cfg/linux_run_slave.sh old mode 100644 new mode 100755 index a60d1cd94..b70759e20 --- a/code/nel/tools/pipeline/service/example_cfg/linux_run_slave.sh +++ b/code/nel/tools/pipeline/service/example_cfg/linux_run_slave.sh @@ -1,5 +1,5 @@ #!/bin/sh -cd /home/nevrax/build/devl/bin -./pipeline_service -C/home/nevrax/code/nel/tools/pipeline/service/example_cfg/master_slave/ +cd /home/kaetemi/core/pipeline_v3/build/devl/bin +./pipeline_service -C/home/kaetemi/core/pipeline_v3/code/nel/tools/pipeline/service/example_cfg/master_slave/ diff --git a/code/nel/tools/pipeline/service/example_cfg/pipeline_service_linux.cfg b/code/nel/tools/pipeline/service/example_cfg/pipeline_service_linux.cfg index 03eef4fa4..d044b6f38 100644 --- a/code/nel/tools/pipeline/service/example_cfg/pipeline_service_linux.cfg +++ b/code/nel/tools/pipeline/service/example_cfg/pipeline_service_linux.cfg @@ -2,5 +2,5 @@ SharedWork = "/srv/work"; // W: on Win SharedLeveldesign = "/srv/leveldesign"; // L: on Win -UsedPlugins = { }; +UsedPlugins = { "" }; // CConfigFile BUG: Need dummy value to += afterwards!!! diff --git a/code/nel/tools/pipeline/service/metadata_storage.h b/code/nel/tools/pipeline/service/metadata_storage.h index c64d2a0ed..eb2150433 100644 --- a/code/nel/tools/pipeline/service/metadata_storage.h +++ b/code/nel/tools/pipeline/service/metadata_storage.h @@ -6,20 +6,20 @@ * CMetadataStorage */ -/* +/* * Copyright (C) 2012 by authors - * + * * This file is part of RYZOM CORE PIPELINE. * RYZOM CORE PIPELINE is free software: you can redistribute it * and/or modify it under the terms of the GNU Affero General Public * License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version. - * + * * RYZOM CORE PIPELINE is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public * License along with RYZOM CORE PIPELINE. If not, see * . @@ -32,6 +32,7 @@ // STL includes // NeL includes +#include // Project includes #include "workspace_storage.h" @@ -106,6 +107,7 @@ public: #define PIPELINE_DATABASE_RESULT_SUFFIX ".result" struct CProjectResult { +public: std::vector FilePaths; struct CFileResult { @@ -115,7 +117,7 @@ struct CProjectResult void serial(NLMISC::IStream &stream) throw (NLMISC::EStream); }; std::vector FileResults; - + void serial(NLMISC::IStream &stream) throw (NLMISC::EStream); }; @@ -135,7 +137,7 @@ public: static bool readStatus(CFileStatus &status, const std::string &path); static void writeStatus(const CFileStatus &status, const std::string &path); static void eraseStatus(const std::string &path); - + /// Format like .../something.somedirectory.meta/path/file.remove // static std::string getRemovePath(const std::string &file); // static bool readRemove(CFileRemove &remove, const std::string & path); diff --git a/code/nel/tools/pipeline/service/module_pipeline_master.cpp b/code/nel/tools/pipeline/service/module_pipeline_master.cpp index c4567012f..ff0161544 100644 --- a/code/nel/tools/pipeline/service/module_pipeline_master.cpp +++ b/code/nel/tools/pipeline/service/module_pipeline_master.cpp @@ -6,20 +6,20 @@ * CModulePipelineMaster */ -/* +/* * Copyright (C) 2012 by authors - * + * * This file is part of RYZOM CORE PIPELINE. * RYZOM CORE PIPELINE is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 2 of * the License, or (at your option) any later version. - * + * * RYZOM CORE PIPELINE is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with RYZOM CORE PIPELINE; see the file COPYING. If not, see * . @@ -72,15 +72,15 @@ namespace PIPELINE { * CModulePipelineMaster */ class CModulePipelineMaster : - public CModulePipelineMasterSkel, + public CModulePipelineMasterSkel, public CEmptyModuleServiceBehav > > { struct CSlave { public: - CSlave(CModulePipelineMaster *master, IModuleProxy *moduleProxy) - : Master(master), - Proxy(moduleProxy), + CSlave(CModulePipelineMaster *master, IModuleProxy *moduleProxy) + : Master(master), + Proxy(moduleProxy), ActiveTaskId(0), SheetsOk(true), SaneBehaviour(3), @@ -95,7 +95,7 @@ class CModulePipelineMaster : sint SaneBehaviour; uint BuildReadyState; uint32 TimeOutStamp; - + ~CSlave() { if (!SheetsOk) @@ -109,7 +109,7 @@ class CModulePipelineMaster : return SheetsOk && (ActiveTaskId == 0) && SaneBehaviour > 0 && BuildReadyState == 2 && TimeOutStamp < NLMISC::CTime::getSecondsSince1970(); } }; - + protected: typedef std::map TSlaveMap; TSlaveMap m_Slaves; @@ -120,7 +120,7 @@ protected: bool m_AbortRequested; NLMISC::CTaskManager *m_TaskManager; // Manages tasks requested by a slave. - NLMISC::CSynchronized> m_WaitingCallbacks; + NLMISC::CSynchronized > m_WaitingCallbacks; // A runnable that's executed at next update state used as a callback. // Override runnable as normal as the callback function. @@ -128,8 +128,8 @@ protected: { public: CDelayedCallback(CModulePipelineMaster *master) : Master(master) - { - NLMISC::CSynchronized>::CAccessor waitingCallbacks(&Master->m_WaitingCallbacks); + { + NLMISC::CSynchronized >::CAccessor waitingCallbacks(&Master->m_WaitingCallbacks); waitingCallbacks.value().push_back(this); } inline CCallback getCallback() { return CCallback(this, &CDelayedCallback::callback); } @@ -142,7 +142,7 @@ protected: Master->addUpdateTask(this); } { - NLMISC::CSynchronized>::CAccessor waitingCallbacks(&Master->m_WaitingCallbacks); + NLMISC::CSynchronized >::CAccessor waitingCallbacks(&Master->m_WaitingCallbacks); waitingCallbacks.value().remove(this); } } @@ -150,7 +150,7 @@ protected: // Runnable tasks that are ran on the next update cycle. // The IRunnable instance is deleted by the update cycle. - NLMISC::CSynchronized> m_UpdateTasks; + NLMISC::CSynchronized > m_UpdateTasks; // build command bool m_BypassErrors; @@ -181,11 +181,11 @@ public: for (; ; ) { { - NLMISC::CSynchronized>::CAccessor waitingCallbacks(&m_WaitingCallbacks); + NLMISC::CSynchronized >::CAccessor waitingCallbacks(&m_WaitingCallbacks); if (waitingCallbacks.value().size() == 0) break; } - + nlwarning("Waiting for callbacks on the master to be called..."); nlSleep(1000); } @@ -194,11 +194,11 @@ public: handleUpdateTasks(); m_SlavesMutex.lock(); - + for (TSlaveMap::iterator it = m_Slaves.begin(), end = m_Slaves.end(); it != end; ++it) delete it->second; m_Slaves.clear(); - + m_SlavesMutex.unlock(); nldebug("END ~CModulePipelineMaster"); } @@ -242,7 +242,7 @@ public: if (moduleProxy->getModuleClassName() == "ModulePipelineSlave") { nlinfo("Slave UP (%s)", moduleProxy->getModuleName().c_str()); - + nlassert(m_Slaves.find(moduleProxy) == m_Slaves.end()); /* if (m_AbortRequested) @@ -263,7 +263,7 @@ public: } } } - + virtual void onModuleDown(IModuleProxy *moduleProxy) { if (moduleProxy->getModuleClassName() == "ModulePipelineSlave") @@ -277,9 +277,9 @@ public: m_ModuleUpDelay.erase(findDelay); } else*/ - { + { nlassert(m_Slaves.find(moduleProxy) != m_Slaves.end()); - + m_SlavesMutex.lock(); TSlaveMap::iterator slaveIt = m_Slaves.find(moduleProxy); @@ -292,11 +292,11 @@ public: // ... TODO ... slaveAbortedBuildTask(moduleProxy); // see if this works } - + m_Slaves.erase(slaveIt); delete slave; // nldebug("Now %i slaves remaining", m_Slaves.size()); - + m_SlavesMutex.unlock(); } } @@ -310,7 +310,7 @@ public: // The IRunnable will be deleted void addUpdateTask(IRunnable *runnable) { - NLMISC::CSynchronized>::CAccessor updateTasks(&m_UpdateTasks); + NLMISC::CSynchronized >::CAccessor updateTasks(&m_UpdateTasks); updateTasks.value().push_back(runnable); } @@ -322,7 +322,7 @@ public: { IRunnable *currentRunnable; { - NLMISC::CSynchronized>::CAccessor updateTasks(&m_UpdateTasks); + NLMISC::CSynchronized >::CAccessor updateTasks(&m_UpdateTasks); if (updateTasks.value().size() == 0) return; currentRunnable = updateTasks.value().front(); @@ -331,7 +331,7 @@ public: { currentRunnable->run(); { - NLMISC::CSynchronized>::CAccessor updateTasks(&m_UpdateTasks); + NLMISC::CSynchronized >::CAccessor updateTasks(&m_UpdateTasks); updateTasks.value().pop_front(); if (updateTasks.value().size() == 0) break; @@ -357,7 +357,7 @@ public: { it->second->BuildReadyState = 1; it->second->Proxy.enterBuildReadyState(this); - } + } // wait for confirmation, set BuildReadyState = 2 in that callback! } m_SlavesMutex.unlock(); @@ -393,9 +393,9 @@ public: else if (nbWorking == 0) { // done (or stuck) - + m_BuildWorking = false; - + m_SlavesMutex.lock(); // Iterate trough all slaves to tell them to end build_ready state. for (TSlaveMap::iterator it = m_Slaves.begin(), end = m_Slaves.end(); it != end; ++it) @@ -415,7 +415,7 @@ public: for (std::vector::iterator it = m_ModuleUpDelay.begin(), end = m_ModuleUpDelay.end(); it != end; ++it) onModuleUp(*it);*/ } - + PIPELINE::endedBuildReadyMaster(); } } @@ -447,7 +447,7 @@ public: nlerror("Slave returned bad error level"); break; } - + notifyTerminalTaskState(slave->ActiveTaskId, (TProcessResult)errorLevel, errorMessage); slave->ActiveTaskId = 0; @@ -466,7 +466,7 @@ public: notifyTerminalTaskState(slave->ActiveTaskId, FINISH_ABORT, "The task has been aborted"); slave->ActiveTaskId = 0; } - + // in fact slaves are not allowed to refuse tasks, but they may do this if the user is toying around with the slave service virtual void slaveRefusedBuildTask(NLNET::IModuleProxy *sender) { @@ -494,7 +494,7 @@ public: slave->SheetsOk = true; CInfoFlags::getInstance()->removeFlag(PIPELINE_INFO_MASTER_RELOAD_SHEETS); } - + virtual void slaveBuildReadySuccess(NLNET::IModuleProxy *sender) { //m_SlavesMutex.lock(); @@ -504,7 +504,7 @@ public: //m_SlavesMutex.unlock(); slave->BuildReadyState = 2; } - + virtual void slaveBuildReadyFail(NLNET::IModuleProxy *sender) { //m_SlavesMutex.lock(); @@ -546,7 +546,7 @@ public: { public: CUpdateDatabaseStatusSlaveCallback(CModulePipelineMaster *master, NLNET::IModuleProxy *slaveProxy) : CDelayedCallback(master), m_SlaveProxy(slaveProxy) { } - + virtual void run() // this is sanely run from the update thread { Master->m_SlavesMutex.lock(); @@ -568,7 +568,7 @@ public: delete this; } - + private: NLNET::IModuleProxy *m_SlaveProxy; }; @@ -576,8 +576,8 @@ public: class CUpdateDatabaseStatusByVectorTask : public IRunnable { public: - CUpdateDatabaseStatusByVectorTask(CModulePipelineMaster *master, NLNET::IModuleProxy *sender, std::vector &slaveVector) : m_Master(master), m_Sender(sender) - { + CUpdateDatabaseStatusByVectorTask(CModulePipelineMaster *master, NLNET::IModuleProxy *sender, std::vector &slaveVector) : m_Master(master), m_Sender(sender) + { std::swap(slaveVector, m_Vector); } virtual void run() // run from the master process task manager @@ -592,7 +592,7 @@ public: NLNET::IModuleProxy *m_Sender; std::vector m_Vector; }; - + virtual void updateDatabaseStatusByVector(NLNET::IModuleProxy *sender) { // FIXME: THIS MUST BE DONE ON A SEPERATE THREAD, IT HANGS WHILE ITERATING @@ -620,7 +620,7 @@ public: break; } } - + if (ok) { if (g_IsExiting) @@ -674,7 +674,7 @@ public: } // Yes, we effectively send the abort again to the slaves, it makes for a more epic abort button hammering experience. - + m_BuildTaskQueue.abortQueue(); m_SlavesMutex.lock(); @@ -693,7 +693,7 @@ public: return false; } } - + protected: NLMISC_COMMAND_HANDLER_TABLE_EXTEND_BEGIN(CModulePipelineMaster, CModuleBase) NLMISC_COMMAND_HANDLER_ADD(CModulePipelineMaster, reloadSheets, "Reload sheets across all services", "") @@ -717,11 +717,11 @@ protected: return false; } } - + void cbMasterSheetReloadUpdate() { m_SlavesMutex.lock(); - + for (TSlaveMap::iterator it = m_Slaves.begin(), end = m_Slaves.end(); it != end; ++it) { CSlave *slave = it->second; @@ -730,7 +730,7 @@ protected: slave->Proxy.reloadSheets(this); CInfoFlags::getInstance()->addFlag(PIPELINE_INFO_MASTER_RELOAD_SHEETS); } - + m_SlavesMutex.unlock(); PIPELINE::endedDirectTask(); diff --git a/code/nel/tools/pipeline/service/module_pipeline_master_itf.cpp b/code/nel/tools/pipeline/service/module_pipeline_master_itf.cpp index 35cfa69aa53e707bda3a755adb28b14f5fff4b92..542c7c07dfefca2ae794f6e97348da819b0fe09b 100644 GIT binary patch literal 13806 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 diff --git a/code/nel/tools/pipeline/service/module_pipeline_slave_itf.cpp b/code/nel/tools/pipeline/service/module_pipeline_slave_itf.cpp index 529c8cd0af7866d90a447a16e14d03c7ba2bcedf..7612489de6d21d48d4b3fd838e6b8a03fd2c2d02 100644 GIT binary patch literal 10434 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 XC##i{{IP{q$cZ~wuqZi^J>CBUln=X9 diff --git a/code/nel/tools/pipeline/service/module_pipeline_slave_itf.h b/code/nel/tools/pipeline/service/module_pipeline_slave_itf.h index fd50c8fe994b85749cc71ea02d23eecaa08ff8b8..c4d6156f1ff02f8e2ab3b70155033575730c3f35 100644 GIT binary patch literal 6717 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 diff --git a/code/nel/tools/pipeline/service/pipeline_service.cpp b/code/nel/tools/pipeline/service/pipeline_service.cpp index 82da1a1cf..3748f9437 100644 --- a/code/nel/tools/pipeline/service/pipeline_service.cpp +++ b/code/nel/tools/pipeline/service/pipeline_service.cpp @@ -6,20 +6,20 @@ * CPipelineService */ -/* +/* * Copyright (C) 2012 by authors - * + * * This file is part of RYZOM CORE PIPELINE. * RYZOM CORE PIPELINE is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 2 of * the License, or (at your option) any later version. - * + * * RYZOM CORE PIPELINE is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with RYZOM CORE PIPELINE; see the file COPYING. If not, see * . @@ -100,7 +100,7 @@ std::string macroPath(const std::string &path) std::string result = standardizePath(path, false); strFindReplace(result, g_WorkDir, PIPELINE_MACRO_WORKSPACE_DIRECTORY "/"); - + CConfigFile::CVar &rootDirectories = NLNET::IService::getInstance()->ConfigFile.getVar("RootDirectories"); for (uint i = 0; i < rootDirectories.size(); ++i) { @@ -178,14 +178,14 @@ namespace { /// Enum enum EState { - STATE_IDLE, - STATE_RELOAD_SHEETS, - STATE_DATABASE_STATUS, - STATE_RUNNABLE_TASK, - STATE_BUSY_TEST, - STATE_DIRECT_CODE, - STATE_BUILD_READY, - STATE_BUILD_PROCESS, + STATE_IDLE, + STATE_RELOAD_SHEETS, + STATE_DATABASE_STATUS, + STATE_RUNNABLE_TASK, + STATE_BUSY_TEST, + STATE_DIRECT_CODE, + STATE_BUILD_READY, + STATE_BUILD_PROCESS, }; /// Data @@ -211,7 +211,7 @@ void cbNull(CMessage & /* msgin */, const std::string & /* serviceName */, TServ /// Callbacks from shard TUnifiedCallbackItem s_ShardCallbacks[] = // pipeline_server { - { "N", cbNull }, + { "N", cbNull }, }; bool tryStateTask(EState state, IRunnable *task) @@ -227,9 +227,9 @@ bool tryStateTask(EState state, IRunnable *task) if (!result) return false; nlassert(s_State != STATE_IDLE); - + s_TaskManager->addTask(task); - + return true; } @@ -256,9 +256,9 @@ bool tryRunnableTask(const std::string &stateName, IRunnable *task) if (!result) return false; nlassert(s_State == STATE_RUNNABLE_TASK); - + s_TaskManager->addTask(task); - + return true; } @@ -294,7 +294,7 @@ bool tryDirectTask(const std::string &stateName) if (!result) return false; nlassert(s_State == STATE_DIRECT_CODE); - + return true; } @@ -317,7 +317,7 @@ bool tryBuildReadyMaster() if (!result) return false; nlassert((s_State == STATE_BUILD_READY) && (s_BuildReadyRecursive > 0)); - + return true; } @@ -348,7 +348,7 @@ bool tryBuildReady() if (!result) return false; nlassert((s_State == STATE_BUILD_READY) && (s_BuildReadyRecursive > 0)); - + return true; } @@ -377,7 +377,7 @@ bool tryBuildProcess(const std::string &stateName) if (!result) return false; nlassert(s_State == STATE_BUILD_PROCESS); - + return true; } @@ -400,11 +400,11 @@ void initSheets() IService::getInstance()->ConfigFile.getVar("WorkspaceDfnDirectory").setAsString(dfnDirectory); std::string sheetDirectory = standardizePath(IService::getInstance()->ConfigFile.getVar("WorkspaceSheetDirectory").asString(), true); IService::getInstance()->ConfigFile.getVar("WorkspaceSheetDirectory").setAsString(sheetDirectory); - + if (!CFile::isDirectory(dfnDirectory)) nlerror("'WorkspaceDfnDirectory' does not exist! (%s)", dfnDirectory.c_str()); nlinfo("Adding 'WorkspaceDfnDirectory' to search path (%s)", dfnDirectory.c_str()); CPath::addSearchPath(dfnDirectory, true, false); - + if (!CFile::isDirectory(sheetDirectory)) nlerror("'WorkspaceSheetDirectory' does not exist! (%s)", sheetDirectory.c_str()); nlinfo("Adding 'WorkspaceSheetDirectory' to search path (%s)", sheetDirectory.c_str()); CPath::addSearchPath(sheetDirectory, true, false); @@ -418,9 +418,9 @@ void initSheets() if (!CFile::isDirectory(dirName)) nlerror("'%s' does not exist! (%s)", rootName.c_str(), dirName.c_str()); CPath::addSearchPath(dirName, true, false); } - + g_FormLoader = UFormLoader::createLoader(); - + g_PipelineWorkspace = new CPipelineWorkspace(g_FormLoader, IService::getInstance()->ConfigFile.getVar("WorkspaceSheet").asString()); } @@ -437,14 +437,14 @@ void releaseSheets() class CReloadSheets : public IRunnable { - virtual void getName(std::string &result) const + virtual void getName(std::string &result) const { result = "CReloadSheets"; } - + virtual void run() { releaseSheets(); initSheets(); - + endedRunnableTask(STATE_RELOAD_SHEETS); } }; @@ -463,9 +463,9 @@ namespace { class CUpdateDatabaseStatus : public IRunnable { - virtual void getName(std::string &result) const + virtual void getName(std::string &result) const { result = "CUpdateDatabaseStatus"; } - + void databaseStatusUpdated() { endedRunnableTask(STATE_DATABASE_STATUS); @@ -489,7 +489,7 @@ bool updateDatabaseStatus() class CBusyTestStatus : public IRunnable { - virtual void getName(std::string &result) const + virtual void getName(std::string &result) const { result = "CBusyTestStatus"; } virtual void run() @@ -523,15 +523,15 @@ public: module_pipeline_master_forceLink(); module_pipeline_slave_forceLink(); } - + virtual ~CPipelineService() { - + } - + /** Called before the displayer is created, no displayer or network connection are built. Use this callback to check some args and perform some command line based stuff */ - virtual void commandStart() + virtual void commandStart() { // setup the randomizer properly { @@ -542,7 +542,7 @@ public: srand(s); } } - + /// Initializes the service (must be called before the first call to update()) virtual void init() { @@ -569,7 +569,7 @@ public: } s_TaskManager = new CTaskManager(); - + initSheets(); g_DatabaseStatus = new CDatabaseStatus(); @@ -578,27 +578,38 @@ public: s_PipelineProcessImpl = new CPipelineProcessImpl(NULL); // Create a singleton impl for global usage without running project for test purposes. // Load libraries + s_InfoFlags->addFlag("PLUGIN"); const CConfigFile::CVar &usedPlugins = ConfigFile.getVar("UsedPlugins"); s_LoadedLibraries.reserve(usedPlugins.size()); for (uint i = 0; i < usedPlugins.size(); ++i) { - CLibrary *library = new CLibrary(); - if (library->loadLibrary(usedPlugins.asString(i), true, true, true)) + std::string pluginName = usedPlugins.asString(i); + if (pluginName.size() > 0) { - s_LoadedLibraries.push_back(library); + CLibrary *library = new CLibrary(); + if (library->loadLibrary(usedPlugins.asString(i), true, true, true)) + { + nlinfo("Loaded plugin '%s'", pluginName.c_str()); + s_LoadedLibraries.push_back(library); + } + else + { + nlwarning("Failed to load plugin '%s'", pluginName.c_str()); + delete library; + } } - else delete library; } + s_InfoFlags->removeFlag("PLUGIN"); s_InfoFlags->removeFlag("INIT"); } - + /// This function is called every "frame" (you must call init() before). It returns false if the service is stopped. virtual bool update() { return true; } - + /// Finalization. Release the service. For example, this function frees all allocations made in the init() function. virtual void release() { @@ -611,9 +622,9 @@ public: nlSleep(10); } NLMISC::CAsyncFileManager::terminate(); - + NLNET::IModuleManager::releaseInstance(); - + for (std::vector::iterator it = s_LoadedLibraries.begin(), end = s_LoadedLibraries.end(); it != end; ++it) { (*it)->freeLibrary(); @@ -642,7 +653,7 @@ public: delete s_InfoFlags; s_InfoFlags = NULL; } - + }; /* class CPipelineService */ } /* anonymous namespace */ @@ -869,7 +880,7 @@ NLMISC_COMMAND(showDependencies, "Show dependencies.", " ::iterator it = tasks.begin(), end = tasks.end(); it != end; ++it) { PIPELINE::CBuildTaskInfo *task = *it; @@ -889,9 +900,9 @@ NLMISC_COMMAND(dumpTestTaskQueueLoad, "Test task queue generation. You MUST NOT } taskQueue.abortQueue(); - + log.displayNL("**********************************************************************"); - + return true; }