Commit a6f53638 authored by Pavel Vainerman's avatar Pavel Vainerman

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

parent c8c59128
......@@ -31,12 +31,10 @@ Version 2.0
- уйти по возможности на стандартные исключения.. вместо Exceptions..
- использовать везде где нужно(и можно) вместо прямых указателей.. shared_ptr и т.п. (например для conf и других глобальных переменных)
- встроить разсличные сигналы (sigc).. в ModbusExchange и другие классы..
- встроить различные сигналы (sigc).. в ModbusExchange и другие классы..
- добавить проверку наличия catch в configure.ac (добавить ключик disable-tests..?)
Version 2.1
============
- smonit запись значений в файл (csv?,sqlite?)
......
......@@ -71,7 +71,7 @@ int main(int argc, char** argv)
bool dbDumping = conf->getArgInt("--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->run(false);
return 0;
......
......@@ -2,7 +2,7 @@
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
#--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 )
return 0;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
SMonitor tp(ID);
act->addObject(&tp);
......
......@@ -52,7 +52,7 @@ int main(int argc, char** argv)
}
DBServer_MySQL dbs(ID);
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&dbs));
act->run(false);
}
......
......@@ -53,7 +53,7 @@ int main(int argc, char** argv)
DBServer_SQLite dbs(ID);
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&dbs));
act->run(false);
}
......
......@@ -52,7 +52,7 @@ int main(int argc, const char **argv)
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(ic));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -70,7 +70,7 @@ int main(int argc, const char **argv)
PassiveLProcessor plc(schema,ID,shmID);
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(&plc));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(mb));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(mb));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -56,7 +56,7 @@ int main( int argc, char** argv )
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(rs));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -63,7 +63,7 @@ int main(int argc, const char **argv)
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(s));
SystemMessage sm(SystemMessage::StartUp);
act->broadcast( sm.transport_msg() );
......
......@@ -63,7 +63,7 @@ int main(int argc, const char **argv)
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(s));
SystemMessage sm(SystemMessage::StartUp);
act->broadcast( sm.transport_msg() );
......
......@@ -44,7 +44,7 @@ int main(int argc, char* argv[] )
if( !mbs )
return 1;
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm));
act->addObject(static_cast<class UniSetObject*>(mbs));
......
......@@ -58,7 +58,7 @@ int main( int argc, const char** argv )
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(db));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -32,7 +32,7 @@ int main(int argc, const char **argv)
if( !shm )
return 1;
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm));
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 )
ulog.logFile( logname );
conf->initDebug(UniSetExtensions::dlog,"dlog");
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->signal_terminate_event().connect( &activator_terminate );
// ------------ SharedMemory ----------------
SharedMemory* shm = SharedMemory::init_smemory(argc,argv);
......
......@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
return 1;
}
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(unet));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -45,7 +45,7 @@ int main(int argc, const char **argv)
if( !shm )
return 1;
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -33,7 +33,7 @@ int main(int argc, const char **argv)
if( !shm )
return 1;
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm));
......
......@@ -42,7 +42,7 @@ int main(int argc, char* argv[] )
if( !shm )
return 1;
UniSetActivator* act = UniSetActivator::Instance();
UniSetActivatorPtr act = UniSetActivator::Instance();
act->addObject(static_cast<class UniSetObject*>(shm));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -26,6 +26,7 @@
#define UniSetActivator_H_
// --------------------------------------------------------------------------
#include <deque>
#include <memory>
#include <omniORB4/CORBA.h>
#include <cc++/socket.h>
#include "UniSetTypes.h"
......@@ -35,6 +36,9 @@
//#include "OmniThreadCreator.h"
//----------------------------------------------------------------------------------------
class UniSetActivator;
typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
//----------------------------------------------------------------------------------------
/*! \class UniSetActivator
* Создает POA менеджер и регистрирует в нем объекты.
* Для обработки CORBA-запросов создается поток или передаются ресурсы
......@@ -53,7 +57,7 @@ class UniSetActivator:
{
public:
static UniSetActivator* Instance( const UniSetTypes::ObjectId id=UniSetTypes::DefaultObjectId );
static UniSetActivatorPtr Instance( const UniSetTypes::ObjectId id=UniSetTypes::DefaultObjectId );
void Destroy();
// ------------------------------------
......@@ -105,7 +109,7 @@ class UniSetActivator:
UniSetActivator();
UniSetActivator( const UniSetTypes::ObjectId id );
static UniSetActivator* inst;
static std::shared_ptr<UniSetActivator> inst;
private:
......
......@@ -63,7 +63,7 @@ static UniSetTypes::uniset_rwmutex signalMutex("Activator::signalMutex");
//static omni_condition pcondx(&pmutex);
// ------------------------------------------------------------------------------------------
static UniSetActivator* gActivator=0;
static std::shared_ptr<UniSetActivator> gActivator;
//static omni_mutex termutex;
//static omni_condition termcond(&termutex);
//static ThreadCreator<UniSetActivator>* termthread=0;
......@@ -75,12 +75,15 @@ ost::AtomicCounter doneterm = 0;
// 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)
inst = new UniSetActivator(id);
if( inst == nullptr )
{
inst = shared_ptr<UniSetActivator>( new UniSetActivator(id) );
gActivator = inst;
}
return inst;
}
......@@ -89,10 +92,7 @@ UniSetActivator* UniSetActivator::Instance( const UniSetTypes::ObjectId id )
void UniSetActivator::Destroy()
{
if(inst)
delete inst;
inst=0;
inst.reset();
}
// ---------------------------------------------------------------------------
......@@ -131,7 +131,6 @@ void UniSetActivator::init()
if( CORBA::is_nil(poa) )
ucrit << myname << "(init): init poa failed!!!" << endl;
gActivator=this;
atexit( UniSetActivator::normalexit );
set_terminate( UniSetActivator::normalterminate ); // ловушка для неизвестных исключений
}
......@@ -149,7 +148,7 @@ UniSetActivator::~UniSetActivator()
procterm = 1;
doneterm = 1;
set_signals(false);
gActivator=0;
gActivator.reset();
}
if( orbthr )
......@@ -498,8 +497,7 @@ void UniSetActivator::terminated( int signo )
if( gActivator )
{
UniSetActivator::set_signals(false);
delete gActivator;
gActivator = 0;
gActivator.reset();
}
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