Commit 818aab74 authored by Pavel Vainerman's avatar Pavel Vainerman

make style..

parent faec0cbb
......@@ -120,11 +120,11 @@ int main( int argc, char **argv )
ls.run( addr, port, true );
if( verb )
ls.setSessionLog(Debug::ANY);
ls.setSessionLog(Debug::ANY);
unsigned int i=0;
while( true )
// for( int n=0; n<2; n++ )
// for( int n=0; n<2; n++ )
{
dlog->any() << "[" << ++i << "] Test message for log" << endl;
dlog->info() << ": dlog : INFO message" << endl;
......
......@@ -236,7 +236,7 @@ TEST_CASE("[UNetUDP]: check receiver","[unetudp][receiver]")
REQUIRE( ui->getValue(10) == 1 );
REQUIRE( ui->getValue(11) == 0 );
WARN("check respond sensor DISABLED!");
WARN("check respond sensor DISABLED!");
// msleep(1500);
// REQUIRE( ui->getValue(node2_respond_s) == 1 );
}
......
......@@ -22,24 +22,24 @@
#include "DebugStream.h"
// -----------------------------------------------------------------------------
class UObject_SK:
public UniSetObject,
public LT_Object
public UniSetObject,
public LT_Object
{
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
bool alarm( UniSetTypes::ObjectId sid, bool state );
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::uniset_conf()->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
std::shared_ptr<DebugStream> mylog;
void init_dlog( std::shared_ptr<DebugStream> d );
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
bool alarm( UniSetTypes::ObjectId sid, bool state );
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::uniset_conf()->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
std::shared_ptr<DebugStream> mylog;
void init_dlog( std::shared_ptr<DebugStream> d );
// "синтаксический сахар"..для логов
#define myinfo if( mylog->debugging(Debug::INFO) ) mylog->any()
......@@ -57,91 +57,91 @@ class UObject_SK:
#define mylogany mylog->any()
// Используемые идентификаторы
// Используемые идентификаторы сообщений
// Текущее значение
// --- public variables ---
// --- end of public variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override;
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
virtual void sigterm( int signo ) override;
virtual bool activateObject() override;
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( const UniSetTypes::SensorMessage* sm );
void preTimerInfo( const UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
// Выполнение очередного шага программы
virtual void step(){}
int sleep_msec; /*!< пауза между итерациями */
bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
bool forceOut; /*!< флаг принудительного обноления "выходов" */
private:
// --- private variables ---
// --- end of private variables ---
// предыдущее значение (для работы UpdateValue())
// Используемые идентификаторы сообщений
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
// Используемые идентификаторы
// Используемые идентификаторы сообщений
// Текущее значение
// --- public variables ---
// --- end of public variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override;
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
virtual void sigterm( int signo ) override;
virtual bool activateObject() override;
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( const UniSetTypes::SensorMessage* sm );
void preTimerInfo( const UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
// Выполнение очередного шага программы
virtual void step(){}
int sleep_msec; /*!< пауза между итерациями */
bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
bool forceOut; /*!< флаг принудительного обноления "выходов" */
private:
// --- private variables ---
// --- end of private variables ---
// предыдущее значение (для работы UpdateValue())
// Используемые идентификаторы сообщений
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
};
// -----------------------------------------------------------------------------
......
......@@ -45,19 +45,19 @@ forceOut(false),
end_private(false)
{
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
}
// -----------------------------------------------------------------------------
// ( val, confval, default val )
static const std::string init3_str( const std::string& s1, const std::string& s2, const std::string& s3 )
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& argprefix ):
......@@ -81,82 +81,82 @@ forceOut(false),
end_private(false)
{
auto conf = uniset_conf();
auto conf = uniset_conf();
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 )
{
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 )
{
// abort();
}
// abort();
}
if( getId() == DefaultObjectId )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
if( getId() == DefaultObjectId )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
mylog = make_shared<DebugStream>();
mylog->setLogName(myname);
{
ostringstream s;
s << myname << "-log";
conf->initLogStream(mylog,s.str());
}
mylog->setLogName(myname);
{
ostringstream s;
s << myname << "-log";
conf->initLogStream(mylog,s.str());
}
UniXML::iterator it(cnode);
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
UniXML::iterator it(cnode);
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10);
}
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10);
}
// Инициализация значений
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150);
// Инициализация значений
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime);
smReadyTimeout = conf->getArgInt("--" + argprefix + "sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
smReadyTimeout = conf->getArgInt("--" + argprefix + "sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000);
activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000);
int msec = conf->getArgPInt("--" + argprefix + "startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
int msec = conf->getArgPInt("--" + argprefix + "startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
// ===================== <variables> =====================
// ===================== end of <variables> =====================
// ===================== <variables> =====================
// ===================== end of <variables> =====================
}
// -----------------------------------------------------------------------------
......@@ -167,36 +167,36 @@ UObject_SK::~UObject_SK()
// -----------------------------------------------------------------------------
void UObject_SK::updateValues()
{
// Опрашиваем все входы...
// Опрашиваем все входы...
}
// -----------------------------------------------------------------------------
void UObject_SK::updatePreviousValues()
{
}
// -----------------------------------------------------------------------------
void UObject_SK::checkSensors()
{
}
// -----------------------------------------------------------------------------
bool UObject_SK::alarm( UniSetTypes::ObjectId _code, bool _state )
{
if( _code == UniSetTypes::DefaultObjectId )
{
if( _code == UniSetTypes::DefaultObjectId )
{
ucrit << getName()
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
ulog1 << getName() << "(alarm): " << ( _state ? "SEND " : "RESET " ) << endl;
ulog1 << " not found MessgeOID?!!" << endl;
return false;
return false;
}
// -----------------------------------------------------------------------------
void UObject_SK::resetMsg()
......@@ -207,11 +207,11 @@ void UObject_SK::resetMsg()
// -----------------------------------------------------------------------------
void UObject_SK::testMode( bool _state )
{
if( !_state )
return;
if( !_state )
return;
// отключаем все выходы
// отключаем все выходы
}
// -----------------------------------------------------------------------------
......@@ -220,140 +220,140 @@ void UObject_SK::testMode( bool _state )
// ------------------------------------------------------------------------------------------
void UObject_SK::init_dlog( std::shared_ptr<DebugStream> d )
{
UObject_SK::mylog = d;
UObject_SK::mylog = d;
}
// ------------------------------------------------------------------------------------------
void UObject_SK::processingMessage( UniSetTypes::VoidMessage* _msg )
{
try
{
switch( _msg->type )
{
case Message::SensorInfo:
preSensorInfo( reinterpret_cast<SensorMessage*>(_msg) );
break;
case Message::Timer:
preTimerInfo( reinterpret_cast<TimerMessage*>(_msg) );
break;
case Message::SysCommand:
sysCommand( reinterpret_cast<SystemMessage*>(_msg) );
break;
default:
break;
}
}
catch( const Exception& ex )
{
ucrit << myname << "(processingMessage): " << ex << endl;
}
try
{
switch( _msg->type )
{
case Message::SensorInfo:
preSensorInfo( reinterpret_cast<SensorMessage*>(_msg) );
break;
case Message::Timer:
preTimerInfo( reinterpret_cast<TimerMessage*>(_msg) );
break;
case Message::SysCommand:
sysCommand( reinterpret_cast<SystemMessage*>(_msg) );
break;
default:
break;
}
}
catch( const Exception& ex )
{
ucrit << myname << "(processingMessage): " << ex << endl;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sysCommand( const SystemMessage* _sm )
{
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulogany << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulogany << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
uwarn << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylogany << myname << "(sysCommand): logRotate" << endl;
string fname( mylog->getLogFile() );
if( !fname.empty() )
{
mylog->logFile(fname.c_str(),true);
mylogany << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylogany << myname << "(sysCommand): logRotate" << endl;
string fname( mylog->getLogFile() );
if( !fname.empty() )
{
mylog->logFile(fname.c_str(),true);
mylogany << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sigterm( int signo )
{
UniSetObject::sigterm(signo);
active = false;
UniSetObject::sigterm(signo);
active = false;
}
// -----------------------------------------------------------------------------
bool UObject_SK::activateObject()
{
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
}
// -----------------------------------------------------------------------------
void UObject_SK::preTimerInfo( const UniSetTypes::TimerMessage* _tm )
{
timerInfo(_tm);
timerInfo(_tm);
}
// ----------------------------------------------------------------------------
void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
{
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
return;
uinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
if( !ui->waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
if( _testID == DefaultObjectId )
return;
uinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
if( !ui->waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
ucrit << err.str() << endl;
// terminate();
// abort();
raise(SIGTERM);
terminate();
// throw SystemError(err.str());
}
// terminate();
// abort();
raise(SIGTERM);
terminate();
// throw SystemError(err.str());
}
}
......@@ -362,149 +362,149 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
// --------------------------------------------------------------------------
void UObject_SK::callback()
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(forceOut);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui->setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(forceOut);
updatePreviousValues();
}
catch( const Exception& ex )
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(forceOut);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui->setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(forceOut);
updatePreviousValues();
}
catch( const Exception& ex )
{
ucrit << myname << "(execute): " << ex << endl;
}
catch( const CORBA::SystemException& ex )
{
}
catch( const CORBA::SystemException& ex )
{
ucrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
}
catch( const std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
if( !active )
return;
msleep( sleep_msec );
if( !active )
return;
msleep( sleep_msec );
}
// -----------------------------------------------------------------------------
void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val )
{
ui->setValue(_sid,_val);
ui->setValue(_sid,_val);
}
// -----------------------------------------------------------------------------
void UObject_SK::updateOutputs( bool _force )
{
}
// -----------------------------------------------------------------------------
void UObject_SK::preSensorInfo( const UniSetTypes::SensorMessage* _sm )
{
sensorInfo(_sm);
sensorInfo(_sm);
}
// -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
ui->askRemoteSensor(_sid,_cmd,_node,getId());
ui->askRemoteSensor(_sid,_cmd,_node,getId());
}
// -----------------------------------------------------------------------------
long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
{
try
{
try
{
return ui->getValue(_sid);
}
catch( const Exception& ex )
{
return ui->getValue(_sid);
}
catch( const Exception& ex )
{
ucrit << myname << "(getValue): " << ex << endl;
throw;
}
throw;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch( const Exception& ex )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch( const Exception& ex )
{
ucrit << myname << "(preAskSensors): " << ex << endl;
}
catch( const std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
msleep(askPause);
}
}
catch( const std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
msleep(askPause);
}
}
// -----------------------------------------------------------------------------
void UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
{
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
}
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
}
// ----------------------------------------------------------------------------
......@@ -140,7 +140,7 @@ void LogServer::work()
continue;
}
}
auto s = make_shared<LogSession>(*tcp, elog, sessTimeout, cmdTimeout, outTimeout);
s->setSessionLogLevel(sessLogLevel);
{
......
......@@ -99,9 +99,9 @@ TEST_CASE("LogAgregator", "[LogServer][LogAgregator]" )
TEST_CASE("LogServer", "[LogServer]" )
{
g_read_cancel = false;
auto la = make_shared<LogAgregator>();
auto log1 = la->create("log1");
auto log2 = la->create("log2");
auto la = make_shared<LogAgregator>();
auto log1 = la->create("log1");
auto log2 = la->create("log2");
log1->level(Debug::ANY);
log2->level(Debug::ANY);
......@@ -115,7 +115,7 @@ TEST_CASE("LogServer", "[LogServer]" )
LogServer ls(la);
//ls.setSessionLog(Debug::ANY);
ls.run( ip, port, true );
ls.run( ip, port, true );
for( int i=0; i<3 && !ls.isRunning(); i++ )
msleep(500);
......
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