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();
+ DEBUG_MESSAGE("Destruction of SALOME_ContainerScriptPerfLog instance");
}
PortableServer::POA_var SALOME_ContainerScriptExecPerfLog::getPOA()
void SALOME_ContainerScriptPerfLog::accept(SALOME_VisitorContainerLog &visitor)
{
visitor.enterContainerScriptPerfLog( *this );
- for(auto session : _sessions)
+ for(auto& session : _sessions)
{
- PortableServer::ServantBase *serv = getPOA()->reference_to_servant( session );
- serv->_remove_ref();
- SALOME_ContainerScriptExecPerfLog *servC = dynamic_cast<SALOME_ContainerScriptExecPerfLog *>(serv);
- visitor.visitContainerScriptExecPerfLog( *servC );
+ visitor.visitContainerScriptExecPerfLog( *session.getServ() );
}
visitor.leaveContainerScriptPerfLog( *this );
}
{
SALOME_ContainerScriptExecPerfLog *execution = new SALOME_ContainerScriptExecPerfLog(this);
PortableServer::ObjectId_var id(getPOA()->activate_object(execution));
- execution->_remove_ref();
CORBA::Object_var executionPtr(getPOA()->id_to_reference(id));
Engines::ContainerScriptExecPerfLog_var executionPtr2 = Engines::ContainerScriptExecPerfLog::_narrow(executionPtr);
- _sessions.push_back( executionPtr2 );
+ _sessions.push_back( { executionPtr2,execution } );
{
AutoGIL gstate;
AutoPyRef result = PyObject_CallMethod(pyObj(),(char*)"addExecution","",nullptr);
auto sz = this->_sessions.size();
ret->length(sz);
for(auto i = 0 ; i < sz ; ++i)
- ret[i] = this->_sessions[i];
+ ret[i] = this->_sessions[i].getVar();
return ret._retn();
}
SALOME_ContainerPerfLog::~SALOME_ContainerPerfLog()
{
- this->destroyInternal();
}
PortableServer::POA_var SALOME_ContainerPerfLog::getPOA()
{
SALOME_ContainerScriptPerfLog *script = new SALOME_ContainerScriptPerfLog(this,name,code);
PortableServer::ObjectId_var id(getPOA()->activate_object(script));
- script->_remove_ref();
CORBA::Object_var scriptPtr(getPOA()->id_to_reference(id));
Engines::ContainerScriptPerfLog_var scriptPtr2 = Engines::ContainerScriptPerfLog::_narrow(scriptPtr);
- _scripts.push_back( scriptPtr2 );
+ _scripts.push_back( { scriptPtr2,script } );
{
AutoGIL gstate;
PyObject *result = PyObject_CallMethod(pyObj(),(char*)"addScript","",nullptr);
std::size_t len( this->_scripts.size() );
ret->length( len );
for(std::size_t i = 0 ; i < len ; ++i)
- ret[i] = this->_scripts[i];
+ ret[i] = this->_scripts[i].getVar();
return ret._retn();
}
void SALOME_ContainerPerfLog::destroyInternal()
{
_father->removeEntryBeforeDying( this );
- for(auto script : _scripts)
+ 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);
+ script.desactivateObjectFromPOA( );
}
_scripts.clear();
}
void SALOME_ContainerPerfLog::accept(SALOME_VisitorContainerLog &visitor)
{
visitor.enterContainerPerfLog( *this );
- for(auto script : _scripts)
+ for(auto& script : _scripts)
{
- PortableServer::ServantBase *serv = getPOA()->reference_to_servant( script );
- serv->_remove_ref();
- SALOME_ContainerScriptPerfLog *servC = dynamic_cast<SALOME_ContainerScriptPerfLog *>(serv);
- servC->accept(visitor);
+ script.getServ()->accept(visitor);
}
visitor.leaveContainerPerfLog( *this );
}
SALOME_LogManager::~SALOME_LogManager()
{
- this->clear();
}
void SALOME_LogManager::clear()
{
- for(auto cont : _containers)
+ 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);
+ cont.desactivateObjectFromPOA( );
}
_containers.clear();
}
SALOME_ContainerPerfLog *cont = new SALOME_ContainerPerfLog(this,contInNS,logfile);
PortableServer::ObjectId_var id(_poa->activate_object(cont));
CORBA::Object_var contPtr(_poa->id_to_reference(id));
- cont->_remove_ref();
Engines::ContainerPerfLog_var contPtr2 = Engines::ContainerPerfLog::_narrow(contPtr);
- _containers.push_back( contPtr2 );
+ _containers.push_back( { contPtr2, cont } );
{
AutoGIL gstate;
PyObject *result = PyObject_CallMethod(_pyLogManager,(char*)"declareContainer","ss",contInNS,logfile,nullptr);
ret->length( len );
for(std::size_t i = 0 ; i < len ; ++i)
{
- ret[i] = this->_containers[i];
+ ret[i] = this->_containers[i].getVar();
}
return ret._retn();
}
void SALOME_LogManager::accept(SALOME_VisitorContainerLog &visitor)
{
visitor.enterLogManager( *this );
- for(auto container : _containers)
+ for(auto& container : _containers)
{
- PortableServer::ServantBase *serv = getPOA()->reference_to_servant( container );
- serv->_remove_ref();
- SALOME_ContainerPerfLog *servC = dynamic_cast<SALOME_ContainerPerfLog *>(serv);
- servC->accept(visitor);
+ container.getServ()->accept(visitor);
}
visitor.leaveLogManager( *this );
}
{
for(auto cont = _containers.begin() ; cont != _containers.end() ; ++cont )
{
- PortableServer::ServantBase *serv = getPOA()->reference_to_servant(*cont);
- SALOME_ContainerPerfLog *servCand = dynamic_cast<SALOME_ContainerPerfLog *>(serv);
- if( servCand==child )
+ if( (*cont).getServ() == child )
{
+ (*cont).desactivateObjectFromPOA();
_containers.erase( cont );
break;
}