Commit 115f617f authored by Pavel Vainerman's avatar Pavel Vainerman

(MBExchange): сделал завершение работы не через abort(), а через SIGTERM,

а так де мелкие правки оформления кода.
parent 54b685e2
......@@ -618,8 +618,7 @@ end_private(false)
throw SystemError( err.str() );
}
mylog.setLogName(myname);
<xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'">
......@@ -943,6 +942,8 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000))
throw SystemError( err.str() );
}
mylog.setLogName(myname);
si.node = conf->getLocalNode();
......
......@@ -2,7 +2,7 @@
USERID=0
BASEOMNIPORT=2809
UNISET_SCRIPT_VERBOSE=
[ -z "$UNISET_SCRIPT_VERBOSE" ] && UNISET_SCRIPT_VERBOSE=
# Получаем наш внутренний номер пользователя
function get_userid()
......
......@@ -43,7 +43,7 @@ class MBExchange:
emNone=0, /*!< нормальная работа (по умолчанию) */
emWriteOnly=1, /*!< "только посылка данных" (работают только write-функции) */
emReadOnly=2, /*!< "только чтение" (работают только read-функции) */
emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции */
emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции) */
emSkipExchange=4 /*!< отключить обмен */
};
......
......@@ -33,8 +33,6 @@
#include "UniSetObject.h"
#include "UniSetManager.h"
#include "OmniThreadCreator.h"
//#include "OmniThreadCreator.h"
//----------------------------------------------------------------------------------------
class UniSetActivator;
typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
......@@ -46,7 +44,7 @@ typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
* \warning Авктиватор может быть создан только один. Для его создания используйте код:
\code
...
UniSetActivator* act = UniSetActivator::Instance()
auto act = UniSetActivator::Instance()
...
\endcode
* Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами
......@@ -75,24 +73,6 @@ class UniSetActivator:
protected:
/*! Команды доступные при заказе сигналов
* см. askSignal()
*/
enum AskSigCommand {
Ask, /*!< заказать получение сигнала */
Denial /*!< отказаться от получения сигнала */
};
/*! заказ на обработку сигнала signo
* Для обработки предназначена функция signal().
* \warning Сообщение о приходе сигналов SITERM, SIGINT, SIGABRT приходит
* вне зависимости от заказа. От этих сообщений нельзя отказаться...
* \warning Заказ других сигналов пока не работает..
* \warning функция временно недоступна (private). Ведуться работы...
* \todo сделать возможность заказа других сигналов
*/
// void askSignal(int signo, AskSigCommand cmd=Ask);
virtual void work();
inline CORBA::ORB_ptr getORB()
......@@ -102,11 +82,9 @@ class UniSetActivator:
virtual void sysCommand( const UniSetTypes::SystemMessage *sm ) override;
// уносим в protected, т.к. Activator должен быть только один..
UniSetActivator();
UniSetActivator( const UniSetTypes::ObjectId id );
static std::shared_ptr<UniSetActivator> inst;
private:
......@@ -125,23 +103,10 @@ class UniSetActivator:
CORBA::ORB_var orb;
TerminateEvent_Signal s_term;
ost::AtomicCounter orbthrIsFinished;
bool omDestroy;
bool sig;
std::atomic_bool omDestroy;
pid_t thpid; // pid orb потока
};
/*
template<class TClass>
int UniSetActivator::attach(TClass* p, void(TClass:: *f)(void*) )
{
if( next >= MAX_CHILD_THREAD )
return -1;
callpull[next] = new OmniThreadCreator<TClass>( p, f);
next++;
return 0;
}
*/
//----------------------------------------------------------------------------------------
#endif
//----------------------------------------------------------------------------------------
......@@ -268,16 +268,14 @@ void UniSetActivator::Destroy()
// ---------------------------------------------------------------------------
UniSetActivator::UniSetActivator( const ObjectId id ):
UniSetManager(id),
omDestroy(false),
sig(false)
omDestroy(false)
{
UniSetActivator::init();
}
// ------------------------------------------------------------------------------------------
UniSetActivator::UniSetActivator():
UniSetManager(UniSetTypes::DefaultObjectId),
omDestroy(false),
sig(false)
omDestroy(false)
{
// thread(false); // отключаем поток (раз не задан id)
UniSetActivator::init();
......@@ -403,8 +401,7 @@ void UniSetActivator::run( bool thread )
offThread(); // отключение потока обработки сообщений, раз не задан ObjectId
UniSetManager::activate(); // а там вызывается активация всех подчиненных объектов и менеджеров
active=true;
active = true;
ulogsys << myname << "(run): активизируем менеджер"<<endl;
pman->activate();
......@@ -431,10 +428,10 @@ void UniSetActivator::run( bool thread )
*/
void UniSetActivator::stop()
{
// uniset_mutex_lock l(deactivateMutex, 500);
if( active )
{
active=false;
if( !active )
return;
active = false;
ulogsys << myname << "(stop): deactivate... "<< endl;
......@@ -462,7 +459,6 @@ void UniSetActivator::stop()
pman->discard_requests(true);
ulogsys << myname << "(stop): discard request ok."<< endl;
}
}
// ------------------------------------------------------------------------------------------
......@@ -602,8 +598,9 @@ void UniSetActivator::terminated( int signo )
// ------------------------------------------------------------------------------------------
void UniSetActivator::normalexit()
{
if( g_act )
{
if( !g_act )
return;
ulogsys << g_act->getName() << "(default exit): ..begin..."<< endl << flush;
if( g_term == false )
{
......@@ -631,13 +628,13 @@ void UniSetActivator::normalexit()
#endif
ulogsys << "(default exit): wait done OK (good bye)" << endl << flush;
}
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::normalterminate()
{
if( g_act )
{
if( !g_act )
return;
ulogsys << g_act->getName() << "(default terminate): ..begin..."<< endl << flush;
if( g_term == false )
{
......@@ -664,7 +661,6 @@ void UniSetActivator::normalterminate()
}
#endif
ulogsys << "(default terminate): wait done OK (good bye)" << endl << flush;
}
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::term( int signo )
......@@ -677,9 +673,6 @@ void UniSetActivator::term( int signo )
return;
}
if( signo )
sig = true;
try
{
ulogsys << myname << "(term): вызываем sigterm()" << endl;
......
// ADD PREDEFINED MACROS HERE!
This diff is collapsed. Click to expand it.
.
extensions/DBServer-MySQL
extensions/DBServer-SQLite
extensions/include
extensions/IOControl
extensions/LogicProcessor
extensions/ModbusMaster
extensions/ModbusMaster/tests
extensions/ModbusSlave
extensions/RRDServer
extensions/SharedMemory
extensions/SMDBServer
extensions/SMViewer
extensions/tests
extensions/tests/SMemoryTest
extensions/UNetUDP
extensions/UniNetwork
include
include/modbus
python/lib/pyUniSet
src/Log
Utilities/codegen
Utilities/codegen/tests
Utilities/MBTester
Utilities/NullController
\ No newline at end of file
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