X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLauncher%2FSALOME_LogManager.cxx;fp=src%2FLauncher%2FSALOME_LogManager.cxx;h=6e106965e835104b7ae92f6cfb31f7ed0f068e41;hb=560d20f18a6e5aa4f5f0c88ccf0bdb51185f5ae4;hp=54a8b90d56a3d9c2e21b820bccb9a804c534f31b;hpb=d2346b0e9fd04bdd3fa30faa5f2c236492e24166;p=modules%2Fkernel.git diff --git a/src/Launcher/SALOME_LogManager.cxx b/src/Launcher/SALOME_LogManager.cxx index 54a8b90d5..6e106965e 100644 --- a/src/Launcher/SALOME_LogManager.cxx +++ b/src/Launcher/SALOME_LogManager.cxx @@ -28,6 +28,8 @@ #include #endif +#include "utilities.h" + #include #include #include @@ -58,6 +60,17 @@ static SALOME::vectorOfByte *FromVectCharToCorba(const std::vector& data) return ret._retn(); } +SALOME_ContainerScriptPerfLog::~SALOME_ContainerScriptPerfLog() +{ + for(auto execSession : _sessions) + { + PortableServer::ServantBase *serv = getPOA()->reference_to_servant(execSession); + PortableServer::ObjectId_var oid = getPOA()->reference_to_id(execSession); + getPOA()->deactivate_object(oid); + } + _sessions.clear(); +} + PortableServer::POA_var SALOME_ContainerScriptExecPerfLog::getPOA() { return father()->getPOA(); @@ -142,6 +155,7 @@ void SALOME_ContainerScriptPerfLog::accept(SALOME_VisitorContainerLog &visitor) visitor.leaveContainerScriptPerfLog( *this ); } + Engines::ContainerScriptExecPerfLog_ptr SALOME_ContainerScriptPerfLog::addExecutionSession() { SALOME_ContainerScriptExecPerfLog *execution = new SALOME_ContainerScriptExecPerfLog(this); @@ -177,6 +191,17 @@ Engines::ListOfContainerScriptExecPerfLog *SALOME_ContainerScriptPerfLog::listOf ///// +SALOME_ContainerPerfLog::~SALOME_ContainerPerfLog() +{ + for(auto script : _scripts) + { + PortableServer::ServantBase *serv = getPOA()->reference_to_servant(script); + PortableServer::ObjectId_var oid = getPOA()->reference_to_id(script); + getPOA()->deactivate_object(oid); + } + _scripts.clear(); +} + PortableServer::POA_var SALOME_ContainerPerfLog::getPOA() { return father()->getPOA(); @@ -275,6 +300,22 @@ SALOME_LogManager::SALOME_LogManager(CORBA::ORB_ptr orb, PortableServer::POA_var } } +SALOME_LogManager::~SALOME_LogManager() +{ + this->clear(); +} + +void SALOME_LogManager::clear() +{ + for(auto cont : _containers) + { + PortableServer::ServantBase *serv = getPOA()->reference_to_servant(cont); + PortableServer::ObjectId_var oid = getPOA()->reference_to_id(cont); + getPOA()->deactivate_object(oid); + } + _containers.clear(); +} + Engines::ContainerPerfLog_ptr SALOME_LogManager::declareContainer(const char *contInNS, const char *logfile) { SALOME_ContainerPerfLog *cont = new SALOME_ContainerPerfLog(this,contInNS,logfile);