Commit a6f53638 authored by Pavel Vainerman's avatar Pavel Vainerman

Перевёл UniSetActivator (singleton) на использование std::shared_ptr

parent c8c59128
...@@ -31,12 +31,10 @@ Version 2.0 ...@@ -31,12 +31,10 @@ Version 2.0
- уйти по возможности на стандартные исключения.. вместо Exceptions.. - уйти по возможности на стандартные исключения.. вместо Exceptions..
- использовать везде где нужно(и можно) вместо прямых указателей.. shared_ptr и т.п. (например для conf и других глобальных переменных) - использовать везде где нужно(и можно) вместо прямых указателей.. shared_ptr и т.п. (например для conf и других глобальных переменных)
- встроить разсличные сигналы (sigc).. в ModbusExchange и другие классы.. - встроить различные сигналы (sigc).. в ModbusExchange и другие классы..
- добавить проверку наличия catch в configure.ac (добавить ключик disable-tests..?) - добавить проверку наличия catch в configure.ac (добавить ключик disable-tests..?)
Version 2.1 Version 2.1
============ ============
- smonit запись значений в файл (csv?,sqlite?) - smonit запись значений в файл (csv?,sqlite?)
......
...@@ -71,7 +71,7 @@ int main(int argc, char** argv) ...@@ -71,7 +71,7 @@ int main(int argc, char** argv)
bool dbDumping = conf->getArgInt("--dbDumping"); bool dbDumping = conf->getArgInt("--dbDumping");
NullController nc(ID,askfile,s_field,s_fvalue,c_field,c_fvalue,dbDumping); NullController nc(ID,askfile,s_field,s_fvalue,c_field,c_fvalue,dbDumping);
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&nc)); act->addObject(static_cast<class UniSetObject*>(&nc));
act->run(false); act->run(false);
return 0; return 0;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
ulimit -Sc 1000000 ulimit -Sc 1000000
uniset2-start.sh -f ./uniset2-nullController --name SharedMemory1 --confile test.xml --ulog-add-levels any ./uniset2-start.sh -f ./uniset2-nullController --name SharedMemory1 --confile test.xml --ulog-add-levels any
#info,warn,crit,system,level9 > 1.log #info,warn,crit,system,level9 > 1.log
#--c-filter-field cfilter --c-filter-value test1 --s-filter-field io --s-filter-value 1 #--c-filter-field cfilter --c-filter-value test1 --s-filter-field io --s-filter-value 1
../scripts/uniset2-functions.sh
\ No newline at end of file
../scripts/uniset2-start.sh
\ No newline at end of file
#!/bin/sh
ln -s -f /usr/bin/uniset2-stop.sh stop.sh
ln -s -f ../../conf/test.xml test.xml
...@@ -33,7 +33,7 @@ int main( int argc, const char **argv ) ...@@ -33,7 +33,7 @@ int main( int argc, const char **argv )
return 0; return 0;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
SMonitor tp(ID); SMonitor tp(ID);
act->addObject(&tp); act->addObject(&tp);
......
...@@ -52,7 +52,7 @@ int main(int argc, char** argv) ...@@ -52,7 +52,7 @@ int main(int argc, char** argv)
} }
DBServer_MySQL dbs(ID); DBServer_MySQL dbs(ID);
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&dbs)); act->addObject(static_cast<class UniSetObject*>(&dbs));
act->run(false); act->run(false);
} }
......
...@@ -53,7 +53,7 @@ int main(int argc, char** argv) ...@@ -53,7 +53,7 @@ int main(int argc, char** argv)
DBServer_SQLite dbs(ID); DBServer_SQLite dbs(ID);
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&dbs)); act->addObject(static_cast<class UniSetObject*>(&dbs));
act->run(false); act->run(false);
} }
......
...@@ -52,7 +52,7 @@ int main(int argc, const char **argv) ...@@ -52,7 +52,7 @@ int main(int argc, const char **argv)
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(ic)); act->addObject(static_cast<class UniSetObject*>(ic));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -70,7 +70,7 @@ int main(int argc, const char **argv) ...@@ -70,7 +70,7 @@ int main(int argc, const char **argv)
PassiveLProcessor plc(schema,ID,shmID); PassiveLProcessor plc(schema,ID,shmID);
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&plc)); act->addObject(static_cast<class UniSetObject*>(&plc));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -58,7 +58,7 @@ int main( int argc, const char** argv ) ...@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(mb)); act->addObject(static_cast<class UniSetObject*>(mb));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -58,7 +58,7 @@ int main( int argc, const char** argv ) ...@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(mb)); act->addObject(static_cast<class UniSetObject*>(mb));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -56,7 +56,7 @@ int main( int argc, char** argv ) ...@@ -56,7 +56,7 @@ int main( int argc, char** argv )
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(rs)); act->addObject(static_cast<class UniSetObject*>(rs));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -63,7 +63,7 @@ int main(int argc, const char **argv) ...@@ -63,7 +63,7 @@ int main(int argc, const char **argv)
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(s)); act->addObject(static_cast<class UniSetObject*>(s));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
act->broadcast( sm.transport_msg() ); act->broadcast( sm.transport_msg() );
......
...@@ -63,7 +63,7 @@ int main(int argc, const char **argv) ...@@ -63,7 +63,7 @@ int main(int argc, const char **argv)
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(s)); act->addObject(static_cast<class UniSetObject*>(s));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
act->broadcast( sm.transport_msg() ); act->broadcast( sm.transport_msg() );
......
...@@ -44,7 +44,7 @@ int main(int argc, char* argv[] ) ...@@ -44,7 +44,7 @@ int main(int argc, char* argv[] )
if( !mbs ) if( !mbs )
return 1; return 1;
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm)); act->addObject(static_cast<class UniSetObject*>(shm));
act->addObject(static_cast<class UniSetObject*>(mbs)); act->addObject(static_cast<class UniSetObject*>(mbs));
......
...@@ -58,7 +58,7 @@ int main( int argc, const char** argv ) ...@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(db)); act->addObject(static_cast<class UniSetObject*>(db));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -32,7 +32,7 @@ int main(int argc, const char **argv) ...@@ -32,7 +32,7 @@ int main(int argc, const char **argv)
if( !shm ) if( !shm )
return 1; return 1;
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm)); act->addObject(static_cast<class UniSetObject*>(shm));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
../../Utilities/scripts/uniset2-functions.sh
\ No newline at end of file
../../Utilities/scripts/uniset2-start.sh
\ No newline at end of file
...@@ -76,7 +76,7 @@ int main( int argc, const char **argv ) ...@@ -76,7 +76,7 @@ int main( int argc, const char **argv )
ulog.logFile( logname ); ulog.logFile( logname );
conf->initDebug(UniSetExtensions::dlog,"dlog"); conf->initDebug(UniSetExtensions::dlog,"dlog");
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->signal_terminate_event().connect( &activator_terminate ); act->signal_terminate_event().connect( &activator_terminate );
// ------------ SharedMemory ---------------- // ------------ SharedMemory ----------------
SharedMemory* shm = SharedMemory::init_smemory(argc,argv); SharedMemory* shm = SharedMemory::init_smemory(argc,argv);
......
...@@ -55,7 +55,7 @@ int main( int argc, const char** argv ) ...@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
return 1; return 1;
} }
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(unet)); act->addObject(static_cast<class UniSetObject*>(unet));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -45,7 +45,7 @@ int main(int argc, const char **argv) ...@@ -45,7 +45,7 @@ int main(int argc, const char **argv)
if( !shm ) if( !shm )
return 1; return 1;
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm)); act->addObject(static_cast<class UniSetObject*>(shm));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -33,7 +33,7 @@ int main(int argc, const char **argv) ...@@ -33,7 +33,7 @@ int main(int argc, const char **argv)
if( !shm ) if( !shm )
return 1; return 1;
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm)); act->addObject(static_cast<class UniSetObject*>(shm));
......
...@@ -42,7 +42,7 @@ int main(int argc, char* argv[] ) ...@@ -42,7 +42,7 @@ int main(int argc, char* argv[] )
if( !shm ) if( !shm )
return 1; return 1;
UniSetActivator* act = UniSetActivator::Instance(); UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm)); act->addObject(static_cast<class UniSetObject*>(shm));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#define UniSetActivator_H_ #define UniSetActivator_H_
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <deque> #include <deque>
#include <memory>
#include <omniORB4/CORBA.h> #include <omniORB4/CORBA.h>
#include <cc++/socket.h> #include <cc++/socket.h>
#include "UniSetTypes.h" #include "UniSetTypes.h"
...@@ -35,6 +36,9 @@ ...@@ -35,6 +36,9 @@
//#include "OmniThreadCreator.h" //#include "OmniThreadCreator.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class UniSetActivator;
typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
//----------------------------------------------------------------------------------------
/*! \class UniSetActivator /*! \class UniSetActivator
* Создает POA менеджер и регистрирует в нем объекты. * Создает POA менеджер и регистрирует в нем объекты.
* Для обработки CORBA-запросов создается поток или передаются ресурсы * Для обработки CORBA-запросов создается поток или передаются ресурсы
...@@ -53,7 +57,7 @@ class UniSetActivator: ...@@ -53,7 +57,7 @@ class UniSetActivator:
{ {
public: public:
static UniSetActivator* Instance( const UniSetTypes::ObjectId id=UniSetTypes::DefaultObjectId ); static UniSetActivatorPtr Instance( const UniSetTypes::ObjectId id=UniSetTypes::DefaultObjectId );
void Destroy(); void Destroy();
// ------------------------------------ // ------------------------------------
...@@ -105,7 +109,7 @@ class UniSetActivator: ...@@ -105,7 +109,7 @@ class UniSetActivator:
UniSetActivator(); UniSetActivator();
UniSetActivator( const UniSetTypes::ObjectId id ); UniSetActivator( const UniSetTypes::ObjectId id );
static UniSetActivator* inst; static std::shared_ptr<UniSetActivator> inst;
private: private:
......
...@@ -63,7 +63,7 @@ static UniSetTypes::uniset_rwmutex signalMutex("Activator::signalMutex"); ...@@ -63,7 +63,7 @@ static UniSetTypes::uniset_rwmutex signalMutex("Activator::signalMutex");
//static omni_condition pcondx(&pmutex); //static omni_condition pcondx(&pmutex);
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
static UniSetActivator* gActivator=0; static std::shared_ptr<UniSetActivator> gActivator;
//static omni_mutex termutex; //static omni_mutex termutex;
//static omni_condition termcond(&termutex); //static omni_condition termcond(&termutex);
//static ThreadCreator<UniSetActivator>* termthread=0; //static ThreadCreator<UniSetActivator>* termthread=0;
...@@ -75,12 +75,15 @@ ost::AtomicCounter doneterm = 0; ...@@ -75,12 +75,15 @@ ost::AtomicCounter doneterm = 0;
// PassiveTimer termtmr; // PassiveTimer termtmr;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UniSetActivator* UniSetActivator::inst=0; UniSetActivatorPtr UniSetActivator::inst;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UniSetActivator* UniSetActivator::Instance( const UniSetTypes::ObjectId id ) UniSetActivatorPtr UniSetActivator::Instance( const UniSetTypes::ObjectId id )
{ {
if(inst==0) if( inst == nullptr )
inst = new UniSetActivator(id); {
inst = shared_ptr<UniSetActivator>( new UniSetActivator(id) );
gActivator = inst;
}
return inst; return inst;
} }
...@@ -89,10 +92,7 @@ UniSetActivator* UniSetActivator::Instance( const UniSetTypes::ObjectId id ) ...@@ -89,10 +92,7 @@ UniSetActivator* UniSetActivator::Instance( const UniSetTypes::ObjectId id )
void UniSetActivator::Destroy() void UniSetActivator::Destroy()
{ {
if(inst) inst.reset();
delete inst;
inst=0;
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -131,7 +131,6 @@ void UniSetActivator::init() ...@@ -131,7 +131,6 @@ void UniSetActivator::init()
if( CORBA::is_nil(poa) ) if( CORBA::is_nil(poa) )
ucrit << myname << "(init): init poa failed!!!" << endl; ucrit << myname << "(init): init poa failed!!!" << endl;
gActivator=this;
atexit( UniSetActivator::normalexit ); atexit( UniSetActivator::normalexit );
set_terminate( UniSetActivator::normalterminate ); // ловушка для неизвестных исключений set_terminate( UniSetActivator::normalterminate ); // ловушка для неизвестных исключений
} }
...@@ -149,7 +148,7 @@ UniSetActivator::~UniSetActivator() ...@@ -149,7 +148,7 @@ UniSetActivator::~UniSetActivator()
procterm = 1; procterm = 1;
doneterm = 1; doneterm = 1;
set_signals(false); set_signals(false);
gActivator=0; gActivator.reset();
} }
if( orbthr ) if( orbthr )
...@@ -498,8 +497,7 @@ void UniSetActivator::terminated( int signo ) ...@@ -498,8 +497,7 @@ void UniSetActivator::terminated( int signo )
if( gActivator ) if( gActivator )
{ {
UniSetActivator::set_signals(false); UniSetActivator::set_signals(false);
delete gActivator; gActivator.reset();
gActivator = 0;
} }
sigset(SIGALRM, SIG_DFL); sigset(SIGALRM, SIG_DFL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment