Added: #1440 File status cache for initial file status update

--HG--
branch : build_pipeline_v3
hg/feature/build_pipeline_v3
kaetemi 12 years ago
parent b159cd2502
commit b4619055d6

@ -1,4 +1,4 @@

///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
@ -19,7 +19,7 @@
namespace PIPELINE namespace PIPELINE
{ {
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !
@ -59,7 +59,7 @@ namespace PIPELINE
const TMessageHandlerMap &getMessageHandlers() const; const TMessageHandlerMap &getMessageHandlers() const;
void slaveFinishedBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message); void slaveFinishedBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
void slaveAbortedBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message); void slaveAbortedBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
@ -88,23 +88,23 @@ namespace PIPELINE
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// //
virtual void slaveFinishedBuildTask(NLNET::IModuleProxy *sender, uint8 errorLevel, const std::string &errorMessage) =0; virtual void slaveFinishedBuildTask(NLNET::IModuleProxy *sender, uint8 errorLevel, const std::string &errorMessage) =0;
// //
virtual void slaveAbortedBuildTask(NLNET::IModuleProxy *sender) =0; virtual void slaveAbortedBuildTask(NLNET::IModuleProxy *sender) =0;
// //
virtual void slaveRefusedBuildTask(NLNET::IModuleProxy *sender) =0; virtual void slaveRefusedBuildTask(NLNET::IModuleProxy *sender) =0;
// //
virtual void slaveReloadedSheets(NLNET::IModuleProxy *sender) =0; virtual void slaveReloadedSheets(NLNET::IModuleProxy *sender) =0;
// //
virtual void slaveBuildReadySuccess(NLNET::IModuleProxy *sender) =0; virtual void slaveBuildReadySuccess(NLNET::IModuleProxy *sender) =0;
// //
virtual void slaveBuildReadyFail(NLNET::IModuleProxy *sender) =0; virtual void slaveBuildReadyFail(NLNET::IModuleProxy *sender) =0;
// //
virtual void vectorPushString(NLNET::IModuleProxy *sender, const std::string &str) =0; virtual void vectorPushString(NLNET::IModuleProxy *sender, const std::string &str) =0;
// //
virtual void updateDatabaseStatusByVector(NLNET::IModuleProxy *sender) =0; virtual void updateDatabaseStatusByVector(NLNET::IModuleProxy *sender) =0;
// //
virtual void setAvailablePlugins(NLNET::IModuleProxy *sender, const std::vector<uint32> &pluginsAvailable) =0; virtual void setAvailablePlugins(NLNET::IModuleProxy *sender, const std::vector<uint32> &pluginsAvailable) =0;
@ -155,57 +155,57 @@ namespace PIPELINE
return _ModuleProxy; return _ModuleProxy;
} }
// //
void slaveFinishedBuildTask(NLNET::IModule *sender, uint8 errorLevel, const std::string &errorMessage); void slaveFinishedBuildTask(NLNET::IModule *sender, uint8 errorLevel, const std::string &errorMessage);
// //
void slaveAbortedBuildTask(NLNET::IModule *sender); void slaveAbortedBuildTask(NLNET::IModule *sender);
// //
void slaveRefusedBuildTask(NLNET::IModule *sender); void slaveRefusedBuildTask(NLNET::IModule *sender);
// //
void slaveReloadedSheets(NLNET::IModule *sender); void slaveReloadedSheets(NLNET::IModule *sender);
// //
void slaveBuildReadySuccess(NLNET::IModule *sender); void slaveBuildReadySuccess(NLNET::IModule *sender);
// //
void slaveBuildReadyFail(NLNET::IModule *sender); void slaveBuildReadyFail(NLNET::IModule *sender);
// //
void vectorPushString(NLNET::IModule *sender, const std::string &str); void vectorPushString(NLNET::IModule *sender, const std::string &str);
// //
void updateDatabaseStatusByVector(NLNET::IModule *sender); void updateDatabaseStatusByVector(NLNET::IModule *sender);
// //
void setAvailablePlugins(NLNET::IModule *sender, const std::vector<uint32> &pluginsAvailable); void setAvailablePlugins(NLNET::IModule *sender, const std::vector<uint32> &pluginsAvailable);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveFinishedBuildTask(NLNET::CMessage &__message, uint8 errorLevel, const std::string &errorMessage); static const NLNET::CMessage &buildMessageFor_slaveFinishedBuildTask(NLNET::CMessage &__message, uint8 errorLevel, const std::string &errorMessage);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveAbortedBuildTask(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_slaveAbortedBuildTask(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveRefusedBuildTask(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_slaveRefusedBuildTask(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveReloadedSheets(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_slaveReloadedSheets(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveBuildReadySuccess(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_slaveBuildReadySuccess(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_slaveBuildReadyFail(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_slaveBuildReadyFail(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_vectorPushString(NLNET::CMessage &__message, const std::string &str); static const NLNET::CMessage &buildMessageFor_vectorPushString(NLNET::CMessage &__message, const std::string &str);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_updateDatabaseStatusByVector(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_updateDatabaseStatusByVector(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_setAvailablePlugins(NLNET::CMessage &__message, const std::vector<uint32> &pluginsAvailable); static const NLNET::CMessage &buildMessageFor_setAvailablePlugins(NLNET::CMessage &__message, const std::vector<uint32> &pluginsAvailable);
}; };
} }
#endif #endif

@ -104,6 +104,8 @@ public:
CProcessPluginInfo m_ActivePlugin; CProcessPluginInfo m_ActivePlugin;
bool m_AbortRequested; bool m_AbortRequested;
std::map<std::string, CFileStatus> m_FileStatusCache;
public: public:
CModulePipelineSlave() : m_Master(NULL), m_TestCommand(false), m_ReloadSheetsState(REQUEST_NONE), m_BuildReadyState(false), m_SlaveTaskState(IDLE_WAIT_MASTER), m_TaskManager(NULL), m_StatusUpdateMasterDone("StatusUpdateMasterDone"), m_StatusUpdateSlaveDone("StatusUpdateSlaveDone"), m_ActiveProject(NULL), m_ActiveProcess(NULL), m_AbortRequested(false) CModulePipelineSlave() : m_Master(NULL), m_TestCommand(false), m_ReloadSheetsState(REQUEST_NONE), m_BuildReadyState(false), m_SlaveTaskState(IDLE_WAIT_MASTER), m_TaskManager(NULL), m_StatusUpdateMasterDone("StatusUpdateMasterDone"), m_StatusUpdateSlaveDone("StatusUpdateSlaveDone"), m_ActiveProject(NULL), m_ActiveProcess(NULL), m_AbortRequested(false)
@ -284,7 +286,9 @@ public:
CStatusUpdateSlaveTask(CModulePipelineSlave *slave) : m_Slave(slave) { } CStatusUpdateSlaveTask(CModulePipelineSlave *slave) : m_Slave(slave) { }
virtual void run() virtual void run()
{ {
// TODO... // ****************************************************************************** TODO...
// Read the last build results
// Update the database status of those files
// Mark as done // Mark as done
{ {
@ -343,7 +347,7 @@ public:
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
virtual void startBuildTask(NLNET::IModuleProxy *sender, const std::string &projectName, const uint32 &pluginId) virtual void startBuildTask(NLNET::IModuleProxy *sender, const std::string &projectName, uint32 pluginId)
{ {
nlassert(m_Master->getModuleProxy() == sender); // sanity check nlassert(m_Master->getModuleProxy() == sender); // sanity check
nlassert(m_ActiveProject == NULL); nlassert(m_ActiveProject == NULL);
@ -372,6 +376,7 @@ public:
{ {
m_ActiveProject = NULL; m_ActiveProject = NULL;
m_ActiveProcess = NULL; m_ActiveProcess = NULL;
m_FileStatusCache.clear();
m_SlaveTaskState = IDLE_WAIT_MASTER; m_SlaveTaskState = IDLE_WAIT_MASTER;
if (m_Master) // else was disconnect if (m_Master) // else was disconnect
m_Master->slaveAbortedBuildTask(this); m_Master->slaveAbortedBuildTask(this);
@ -384,6 +389,7 @@ public:
{ {
m_ActiveProject = NULL; m_ActiveProject = NULL;
m_ActiveProcess = NULL; m_ActiveProcess = NULL;
m_FileStatusCache.clear();
m_SlaveTaskState = IDLE_WAIT_MASTER; m_SlaveTaskState = IDLE_WAIT_MASTER;
if (m_Master) // else was disconnect if (m_Master) // else was disconnect
m_Master->slaveFinishedBuildTask(this, (uint8)errorLevel, errorMessage); m_Master->slaveFinishedBuildTask(this, (uint8)errorLevel, errorMessage);
@ -413,6 +419,15 @@ public:
} }
} }
virtual void addFileStatusToCache(NLNET::IModuleProxy *sender, const std::string &macroPath, const CFileStatus &fileStatus)
{
nlassert(sender == NULL || m_Master->getModuleProxy() == sender); // sanity check
std::string filePath = unMacroPath(macroPath);
nlassert(m_FileStatusCache.find(filePath) == m_FileStatusCache.end());
m_FileStatusCache[filePath] = fileStatus;
}
virtual void masterUpdatedDatabaseStatus(NLNET::IModuleProxy *sender) virtual void masterUpdatedDatabaseStatus(NLNET::IModuleProxy *sender)
{ {
nlassert(sender == NULL || m_Master->getModuleProxy() == sender); // sanity check nlassert(sender == NULL || m_Master->getModuleProxy() == sender); // sanity check

@ -34,6 +34,10 @@ namespace PIPELINE
// if this assert, you have a doubly message name in your interface definition ! // if this assert, you have a doubly message name in your interface definition !
nlassert(res.second); nlassert(res.second);
res = handlers.insert(std::make_pair(std::string("ADD_FS_CACHE"), &CModulePipelineSlaveSkel::addFileStatusToCache_skel));
// if this assert, you have a doubly message name in your interface definition !
nlassert(res.second);
res = handlers.insert(std::make_pair(std::string("RE_UPD_DB_ST"), &CModulePipelineSlaveSkel::masterUpdatedDatabaseStatus_skel)); res = handlers.insert(std::make_pair(std::string("RE_UPD_DB_ST"), &CModulePipelineSlaveSkel::masterUpdatedDatabaseStatus_skel));
// if this assert, you have a doubly message name in your interface definition ! // if this assert, you have a doubly message name in your interface definition !
nlassert(res.second); nlassert(res.second);
@ -95,6 +99,16 @@ namespace PIPELINE
abortBuildTask(sender); abortBuildTask(sender);
} }
void CModulePipelineSlaveSkel::addFileStatusToCache_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message)
{
H_AUTO(CModulePipelineSlaveSkel_addFileStatusToCache_ADD_FS_CACHE);
std::string macroPath;
nlRead(__message, serial, macroPath);
CFileStatus fileStatus;
nlRead(__message, serial, fileStatus);
addFileStatusToCache(sender, macroPath, fileStatus);
}
void CModulePipelineSlaveSkel::masterUpdatedDatabaseStatus_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message) void CModulePipelineSlaveSkel::masterUpdatedDatabaseStatus_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message)
{ {
H_AUTO(CModulePipelineSlaveSkel_masterUpdatedDatabaseStatus_RE_UPD_DB_ST); H_AUTO(CModulePipelineSlaveSkel_masterUpdatedDatabaseStatus_RE_UPD_DB_ST);
@ -137,7 +151,7 @@ namespace PIPELINE
} }
} }
// //
void CModulePipelineSlaveProxy::startBuildTask(NLNET::IModule *sender, const std::string &projectName, const uint32 &pluginId) void CModulePipelineSlaveProxy::startBuildTask(NLNET::IModule *sender, const std::string &projectName, uint32 pluginId)
{ {
if (_LocalModuleSkel && _LocalModule->isImmediateDispatchingSupported()) if (_LocalModuleSkel && _LocalModule->isImmediateDispatchingSupported())
{ {
@ -173,6 +187,24 @@ namespace PIPELINE
} }
} }
// //
void CModulePipelineSlaveProxy::addFileStatusToCache(NLNET::IModule *sender, const std::string &macroPath, const CFileStatus &fileStatus)
{
if (_LocalModuleSkel && _LocalModule->isImmediateDispatchingSupported())
{
// immediate local synchronous dispatching
_LocalModuleSkel->addFileStatusToCache(_ModuleProxy->getModuleGateway()->getPluggedModuleProxy(sender), macroPath, fileStatus);
}
else
{
// send the message for remote dispatching and execution or local queing
NLNET::CMessage __message;
buildMessageFor_addFileStatusToCache(__message, macroPath, fileStatus);
_ModuleProxy->sendModuleMessage(sender, __message);
}
}
//
void CModulePipelineSlaveProxy::masterUpdatedDatabaseStatus(NLNET::IModule *sender) void CModulePipelineSlaveProxy::masterUpdatedDatabaseStatus(NLNET::IModule *sender)
{ {
if (_LocalModuleSkel && _LocalModule->isImmediateDispatchingSupported()) if (_LocalModuleSkel && _LocalModule->isImmediateDispatchingSupported())
@ -255,11 +287,11 @@ namespace PIPELINE
} }
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
const NLNET::CMessage &CModulePipelineSlaveProxy::buildMessageFor_startBuildTask(NLNET::CMessage &__message, const std::string &projectName, const uint32 &pluginId) const NLNET::CMessage &CModulePipelineSlaveProxy::buildMessageFor_startBuildTask(NLNET::CMessage &__message, const std::string &projectName, uint32 pluginId)
{ {
__message.setType("GO_BT"); __message.setType("GO_BT");
nlWrite(__message, serial, const_cast < std::string& > (projectName)); nlWrite(__message, serial, const_cast < std::string& > (projectName));
nlWrite(__message, serial, const_cast < uint32& > (pluginId)); nlWrite(__message, serial, pluginId);
return __message; return __message;
@ -274,6 +306,17 @@ namespace PIPELINE
return __message; return __message;
} }
// Message serializer. Return the message received in reference for easier integration
const NLNET::CMessage &CModulePipelineSlaveProxy::buildMessageFor_addFileStatusToCache(NLNET::CMessage &__message, const std::string &macroPath, const CFileStatus &fileStatus)
{
__message.setType("ADD_FS_CACHE");
nlWrite(__message, serial, const_cast < std::string& > (macroPath));
nlWrite(__message, serial, const_cast < CFileStatus& > (fileStatus));
return __message;
}
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
const NLNET::CMessage &CModulePipelineSlaveProxy::buildMessageFor_masterUpdatedDatabaseStatus(NLNET::CMessage &__message) const NLNET::CMessage &CModulePipelineSlaveProxy::buildMessageFor_masterUpdatedDatabaseStatus(NLNET::CMessage &__message)
{ {

@ -17,6 +17,8 @@
#include "nel/net/module_message.h" #include "nel/net/module_message.h"
#include "nel/net/module_gateway.h" #include "nel/net/module_gateway.h"
#include "metadata_storage.h"
namespace PIPELINE namespace PIPELINE
{ {
@ -66,6 +68,8 @@ namespace PIPELINE
void abortBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message); void abortBuildTask_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
void addFileStatusToCache_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
void masterUpdatedDatabaseStatus_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message); void masterUpdatedDatabaseStatus_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
void reloadSheets_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message); void reloadSheets_skel(NLNET::IModuleProxy *sender, const NLNET::CMessage &__message);
@ -87,10 +91,12 @@ namespace PIPELINE
// //
virtual void submitToMaster(NLNET::IModuleProxy *sender) =0; virtual void submitToMaster(NLNET::IModuleProxy *sender) =0;
// //
virtual void startBuildTask(NLNET::IModuleProxy *sender, const std::string &projectName, const uint32 &pluginId) =0; virtual void startBuildTask(NLNET::IModuleProxy *sender, const std::string &projectName, uint32 pluginId) =0;
// //
virtual void abortBuildTask(NLNET::IModuleProxy *sender) =0; virtual void abortBuildTask(NLNET::IModuleProxy *sender) =0;
// //
virtual void addFileStatusToCache(NLNET::IModuleProxy *sender, const std::string &macroPath, const CFileStatus &fileStatus) =0;
//
virtual void masterUpdatedDatabaseStatus(NLNET::IModuleProxy *sender) =0; virtual void masterUpdatedDatabaseStatus(NLNET::IModuleProxy *sender) =0;
// //
virtual void reloadSheets(NLNET::IModuleProxy *sender) =0; virtual void reloadSheets(NLNET::IModuleProxy *sender) =0;
@ -150,10 +156,12 @@ namespace PIPELINE
// //
void submitToMaster(NLNET::IModule *sender); void submitToMaster(NLNET::IModule *sender);
// //
void startBuildTask(NLNET::IModule *sender, const std::string &projectName, const uint32 &pluginId); void startBuildTask(NLNET::IModule *sender, const std::string &projectName, uint32 pluginId);
// //
void abortBuildTask(NLNET::IModule *sender); void abortBuildTask(NLNET::IModule *sender);
// //
void addFileStatusToCache(NLNET::IModule *sender, const std::string &macroPath, const CFileStatus &fileStatus);
//
void masterUpdatedDatabaseStatus(NLNET::IModule *sender); void masterUpdatedDatabaseStatus(NLNET::IModule *sender);
// //
void reloadSheets(NLNET::IModule *sender); void reloadSheets(NLNET::IModule *sender);
@ -166,11 +174,14 @@ namespace PIPELINE
static const NLNET::CMessage &buildMessageFor_submitToMaster(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_submitToMaster(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_startBuildTask(NLNET::CMessage &__message, const std::string &projectName, const uint32 &pluginId); static const NLNET::CMessage &buildMessageFor_startBuildTask(NLNET::CMessage &__message, const std::string &projectName, uint32 pluginId);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_abortBuildTask(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_abortBuildTask(NLNET::CMessage &__message);
// Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_addFileStatusToCache(NLNET::CMessage &__message, const std::string &macroPath, const CFileStatus &fileStatus);
// Message serializer. Return the message received in reference for easier integration // Message serializer. Return the message received in reference for easier integration
static const NLNET::CMessage &buildMessageFor_masterUpdatedDatabaseStatus(NLNET::CMessage &__message); static const NLNET::CMessage &buildMessageFor_masterUpdatedDatabaseStatus(NLNET::CMessage &__message);

@ -1,38 +1,47 @@
<generator header_tag="PIPELINE_MODULE_PIPELINE_SLAVE_ITF_H"> <generator header_tag="PIPELINE_MODULE_PIPELINE_SLAVE_ITF_H">
<include file="metadata_storage.h"/>
<namespace name="PIPELINE"> <namespace name="PIPELINE">
<module_interface name="CModulePipelineSlave"> <module_interface name="CModulePipelineSlave">
<method name="submitToMaster" msg="M_HELLO"> <method name="submitToMaster" msg="M_HELLO">
<doc line=""/> <doc line="" />
</method> </method>
<method name="startBuildTask" msg="GO_BT"> <method name="startBuildTask" msg="GO_BT">
<doc line=""/> <doc line="" />
<param type="std::string" name="projectName" byref="true"/> <param type="std::string" name="projectName" byref="true" />
<param type="uint32" name="pluginId" byref="true"/> <param type="uint32" name="pluginId" />
</method> </method>
<method name="abortBuildTask" msg="ABORT_BT"> <method name="abortBuildTask" msg="ABORT_BT">
<doc line=""/> <doc line="" />
</method>
<method name="addFileStatusToCache" msg="ADD_FS_CACHE">
<doc line="" />
<param type="std::string" name="macroPath" byref="true" />
<param type="CFileStatus" name="fileStatus" byref="true" />
</method> </method>
<method name="masterUpdatedDatabaseStatus" msg="RE_UPD_DB_ST"> <method name="masterUpdatedDatabaseStatus" msg="RE_UPD_DB_ST">
<doc line=""/> <doc line="" />
</method> </method>
<method name="reloadSheets" msg="RELOAD_SHEETS"> <method name="reloadSheets" msg="RELOAD_SHEETS">
<doc line=""/> <doc line="" />
</method> </method>
<method name="enterBuildReadyState" msg="BRT_ENTER"> <method name="enterBuildReadyState" msg="BRT_ENTER">
<doc line=""/> <doc line="" />
</method> </method>
<method name="leaveBuildReadyState" msg="BRT_LEAVE"> <method name="leaveBuildReadyState" msg="BRT_LEAVE">
<doc line=""/> <doc line="" />
</method> </method>
</module_interface> </module_interface>

Loading…
Cancel
Save