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

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

а так де мелкие правки оформления кода.
parent 54b685e2
...@@ -618,8 +618,7 @@ end_private(false) ...@@ -618,8 +618,7 @@ end_private(false)
throw SystemError( err.str() ); throw SystemError( err.str() );
} }
mylog.setLogName(myname);
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
...@@ -943,6 +942,8 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000)) ...@@ -943,6 +942,8 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000))
throw SystemError( err.str() ); throw SystemError( err.str() );
} }
mylog.setLogName(myname);
si.node = conf->getLocalNode(); si.node = conf->getLocalNode();
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
USERID=0 USERID=0
BASEOMNIPORT=2809 BASEOMNIPORT=2809
UNISET_SCRIPT_VERBOSE= [ -z "$UNISET_SCRIPT_VERBOSE" ] && UNISET_SCRIPT_VERBOSE=
# Получаем наш внутренний номер пользователя # Получаем наш внутренний номер пользователя
function get_userid() function get_userid()
......
...@@ -43,7 +43,7 @@ class MBExchange: ...@@ -43,7 +43,7 @@ class MBExchange:
emNone=0, /*!< нормальная работа (по умолчанию) */ emNone=0, /*!< нормальная работа (по умолчанию) */
emWriteOnly=1, /*!< "только посылка данных" (работают только write-функции) */ emWriteOnly=1, /*!< "только посылка данных" (работают только write-функции) */
emReadOnly=2, /*!< "только чтение" (работают только read-функции) */ emReadOnly=2, /*!< "только чтение" (работают только read-функции) */
emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции */ emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции) */
emSkipExchange=4 /*!< отключить обмен */ emSkipExchange=4 /*!< отключить обмен */
}; };
......
...@@ -33,8 +33,6 @@ ...@@ -33,8 +33,6 @@
#include "UniSetObject.h" #include "UniSetObject.h"
#include "UniSetManager.h" #include "UniSetManager.h"
#include "OmniThreadCreator.h" #include "OmniThreadCreator.h"
//#include "OmniThreadCreator.h"
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
class UniSetActivator; class UniSetActivator;
typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr; typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
...@@ -46,7 +44,7 @@ typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr; ...@@ -46,7 +44,7 @@ typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
* \warning Авктиватор может быть создан только один. Для его создания используйте код: * \warning Авктиватор может быть создан только один. Для его создания используйте код:
\code \code
... ...
UniSetActivator* act = UniSetActivator::Instance() auto act = UniSetActivator::Instance()
... ...
\endcode \endcode
* Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами * Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами
...@@ -75,24 +73,6 @@ class UniSetActivator: ...@@ -75,24 +73,6 @@ class UniSetActivator:
protected: 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(); virtual void work();
inline CORBA::ORB_ptr getORB() inline CORBA::ORB_ptr getORB()
...@@ -102,11 +82,9 @@ class UniSetActivator: ...@@ -102,11 +82,9 @@ class UniSetActivator:
virtual void sysCommand( const UniSetTypes::SystemMessage *sm ) override; virtual void sysCommand( const UniSetTypes::SystemMessage *sm ) override;
// уносим в protected, т.к. Activator должен быть только один.. // уносим в protected, т.к. Activator должен быть только один..
UniSetActivator(); UniSetActivator();
UniSetActivator( const UniSetTypes::ObjectId id ); UniSetActivator( const UniSetTypes::ObjectId id );
static std::shared_ptr<UniSetActivator> inst; static std::shared_ptr<UniSetActivator> inst;
private: private:
...@@ -125,23 +103,10 @@ class UniSetActivator: ...@@ -125,23 +103,10 @@ class UniSetActivator:
CORBA::ORB_var orb; CORBA::ORB_var orb;
TerminateEvent_Signal s_term; TerminateEvent_Signal s_term;
ost::AtomicCounter orbthrIsFinished;
bool omDestroy; std::atomic_bool omDestroy;
bool sig;
pid_t thpid; // pid orb потока 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 #endif
//----------------------------------------------------------------------------------------
...@@ -268,16 +268,14 @@ void UniSetActivator::Destroy() ...@@ -268,16 +268,14 @@ void UniSetActivator::Destroy()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UniSetActivator::UniSetActivator( const ObjectId id ): UniSetActivator::UniSetActivator( const ObjectId id ):
UniSetManager(id), UniSetManager(id),
omDestroy(false), omDestroy(false)
sig(false)
{ {
UniSetActivator::init(); UniSetActivator::init();
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
UniSetActivator::UniSetActivator(): UniSetActivator::UniSetActivator():
UniSetManager(UniSetTypes::DefaultObjectId), UniSetManager(UniSetTypes::DefaultObjectId),
omDestroy(false), omDestroy(false)
sig(false)
{ {
// thread(false); // отключаем поток (раз не задан id) // thread(false); // отключаем поток (раз не задан id)
UniSetActivator::init(); UniSetActivator::init();
...@@ -403,8 +401,7 @@ void UniSetActivator::run( bool thread ) ...@@ -403,8 +401,7 @@ void UniSetActivator::run( bool thread )
offThread(); // отключение потока обработки сообщений, раз не задан ObjectId offThread(); // отключение потока обработки сообщений, раз не задан ObjectId
UniSetManager::activate(); // а там вызывается активация всех подчиненных объектов и менеджеров UniSetManager::activate(); // а там вызывается активация всех подчиненных объектов и менеджеров
active = true;
active=true;
ulogsys << myname << "(run): активизируем менеджер"<<endl; ulogsys << myname << "(run): активизируем менеджер"<<endl;
pman->activate(); pman->activate();
...@@ -431,10 +428,10 @@ void UniSetActivator::run( bool thread ) ...@@ -431,10 +428,10 @@ void UniSetActivator::run( bool thread )
*/ */
void UniSetActivator::stop() void UniSetActivator::stop()
{ {
// uniset_mutex_lock l(deactivateMutex, 500); if( !active )
if( active ) return;
{
active=false; active = false;
ulogsys << myname << "(stop): deactivate... "<< endl; ulogsys << myname << "(stop): deactivate... "<< endl;
...@@ -462,7 +459,6 @@ void UniSetActivator::stop() ...@@ -462,7 +459,6 @@ void UniSetActivator::stop()
pman->discard_requests(true); pman->discard_requests(true);
ulogsys << myname << "(stop): discard request ok."<< endl; ulogsys << myname << "(stop): discard request ok."<< endl;
}
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -602,8 +598,9 @@ void UniSetActivator::terminated( int signo ) ...@@ -602,8 +598,9 @@ void UniSetActivator::terminated( int signo )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetActivator::normalexit() void UniSetActivator::normalexit()
{ {
if( g_act ) if( !g_act )
{ return;
ulogsys << g_act->getName() << "(default exit): ..begin..."<< endl << flush; ulogsys << g_act->getName() << "(default exit): ..begin..."<< endl << flush;
if( g_term == false ) if( g_term == false )
{ {
...@@ -631,13 +628,13 @@ void UniSetActivator::normalexit() ...@@ -631,13 +628,13 @@ void UniSetActivator::normalexit()
#endif #endif
ulogsys << "(default exit): wait done OK (good bye)" << endl << flush; ulogsys << "(default exit): wait done OK (good bye)" << endl << flush;
}
} }
// ------------------------------------------------------------------------------------------
void UniSetActivator::normalterminate() void UniSetActivator::normalterminate()
{ {
if( g_act ) if( !g_act )
{ return;
ulogsys << g_act->getName() << "(default terminate): ..begin..."<< endl << flush; ulogsys << g_act->getName() << "(default terminate): ..begin..."<< endl << flush;
if( g_term == false ) if( g_term == false )
{ {
...@@ -664,7 +661,6 @@ void UniSetActivator::normalterminate() ...@@ -664,7 +661,6 @@ void UniSetActivator::normalterminate()
} }
#endif #endif
ulogsys << "(default terminate): wait done OK (good bye)" << endl << flush; ulogsys << "(default terminate): wait done OK (good bye)" << endl << flush;
}
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetActivator::term( int signo ) void UniSetActivator::term( int signo )
...@@ -677,9 +673,6 @@ void UniSetActivator::term( int signo ) ...@@ -677,9 +673,6 @@ void UniSetActivator::term( int signo )
return; return;
} }
if( signo )
sig = true;
try try
{ {
ulogsys << myname << "(term): вызываем sigterm()" << endl; 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