You need to sign in or sign up before continuing.
Commit ee28e7bd authored by Pavel Vainerman's avatar Pavel Vainerman

Добавил "синтаксический сахар" для логов (ucrit,uwarn,uinfo, и т.п.)

parent a155c412
...@@ -446,9 +446,9 @@ int omap() ...@@ -446,9 +446,9 @@ int omap()
conf->oind->printMap(cout); conf->oind->printMap(cout);
cout << "==========================================================================\n"; cout << "==========================================================================\n";
} }
catch(Exception& ex) catch( Exception& ex )
{ {
ulog.crit() << " configuration init FAILED!!! \n"; ucrit << " configuration init failed: " << ex << endl;
return 1; return 1;
} }
return 0; return 0;
......
...@@ -381,7 +381,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer ...@@ -381,7 +381,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK ); int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK );
if( fd <= 0 ) if( fd <= 0 )
{ {
dlog.warn() << "(fileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl;
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -393,7 +393,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer ...@@ -393,7 +393,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
int ret = ::read(fd,&buf,sizeof(buf)); int ret = ::read(fd,&buf,sizeof(buf));
if( ret < 0 ) if( ret < 0 )
{ {
dlog.warn() << "(fileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl;
close(fd); close(fd);
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -407,7 +407,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer ...@@ -407,7 +407,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
struct stat fs; struct stat fs;
if( fstat(fd,&fs) < 0 ) if( fstat(fd,&fs) < 0 )
{ {
dlog.warn() << "(fileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl;
close(fd); close(fd);
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -422,7 +422,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer ...@@ -422,7 +422,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
if( !reply.set(query.numfile,numpacks,query.numpacket,buf,ret) ) if( !reply.set(query.numfile,numpacks,query.numpacket,buf,ret) )
{ {
dlog.warn() << "(fileTransfer): set date failed..." << endl; dwarn << "(fileTransfer): set date failed..." << endl;
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
......
...@@ -376,7 +376,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage& ...@@ -376,7 +376,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK ); int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK );
if( fd <= 0 ) if( fd <= 0 )
{ {
dlog.warn() << "(fileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl;
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -388,7 +388,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage& ...@@ -388,7 +388,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
int ret = ::read(fd,&buf,sizeof(buf)); int ret = ::read(fd,&buf,sizeof(buf));
if( ret < 0 ) if( ret < 0 )
{ {
dlog.warn() << "(fileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl;
close(fd); close(fd);
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -402,7 +402,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage& ...@@ -402,7 +402,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
struct stat fs; struct stat fs;
if( fstat(fd,&fs) < 0 ) if( fstat(fd,&fs) < 0 )
{ {
dlog.warn() << "(fileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl; dwarn << "(fileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl;
close(fd); close(fd);
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
...@@ -417,7 +417,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage& ...@@ -417,7 +417,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
if( !reply.set(query.numfile,numpacks,query.numpacket,buf,ret) ) if( !reply.set(query.numfile,numpacks,query.numpacket,buf,ret) )
{ {
dlog.warn() << "(fileTransfer): set date failed..." << endl; dwarn << "(fileTransfer): set date failed..." << endl;
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
......
...@@ -89,19 +89,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback() ...@@ -89,19 +89,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(CORBA::SystemException&amp; ex) catch(CORBA::SystemException&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl; &lt;&lt; ex.NP_minorString() &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
} }
if( !active ) if( !active )
...@@ -124,7 +121,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM ...@@ -124,7 +121,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
if( _sm->id == <xsl:value-of select="../../@name"/> ) if( _sm->id == <xsl:value-of select="../../@name"/> )
{ {
<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _sm->value; <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _sm->value;
dlog.level( Debug::type(_sm->value) ); mylog.level( Debug::type(_sm->value) );
} }
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
...@@ -146,8 +143,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm ...@@ -146,8 +143,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
break; break;
} }
if( !activated &amp;&amp; ulog.is_crit() ) if( !activated )
ulog.crit() &lt;&lt; myname ucrit &lt;&lt; myname
&lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl; &lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl;
for( ;; ) for( ;; )
...@@ -165,18 +162,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm ...@@ -165,18 +162,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
} }
catch(SystemError&amp; err) catch(SystemError&amp; err)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
} }
msleep(askPause); msleep(askPause);
} }
...@@ -191,8 +185,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si ...@@ -191,8 +185,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'"> <xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="../../@name"/> ) if( _sid == <xsl:value-of select="../../@name"/> )
{ {
if( ulog.is_level2() ) ulog2 &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _val; <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _val;
<xsl:call-template name="setdata"/> <xsl:call-template name="setdata"/>
return; return;
...@@ -224,16 +217,14 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si ...@@ -224,16 +217,14 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl; &lt;&lt; _sid &lt;&lt; endl;
return 0; return 0;
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
} }
...@@ -299,8 +290,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -299,8 +290,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -335,8 +325,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -335,8 +325,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -351,8 +340,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -351,8 +340,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -365,7 +353,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -365,7 +353,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
if( prev_<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> != <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> ) if( prev_<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> != <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> )
</xsl:if> </xsl:if>
{ {
// приходится искуственно использовать третий параметр, // приходится искуственно использовать третий параметр,
// что-бы компилятор выбрал // что-бы компилятор выбрал
// правильный(для аналоговых) конструктор у SensorMessage // правильный(для аналоговых) конструктор у SensorMessage
IOController_i::CalibrateInfo _ci; IOController_i::CalibrateInfo _ci;
......
...@@ -94,19 +94,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback() ...@@ -94,19 +94,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(CORBA::SystemException&amp; ex) catch(CORBA::SystemException&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl; &lt;&lt; ex.NP_minorString() &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
} }
if( !active ) if( !active )
...@@ -157,8 +154,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si ...@@ -157,8 +154,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'"> <xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="../../@name"/> ) if( _sid == <xsl:value-of select="../../@name"/> )
{ {
if( ulog.is_level2() ) ulog2 &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _val; <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = _val;
return; return;
} }
...@@ -180,8 +176,7 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si ...@@ -180,8 +176,7 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl; &lt;&lt; _sid &lt;&lt; endl;
return 0; return 0;
...@@ -232,8 +227,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -232,8 +227,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -268,8 +262,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -268,8 +262,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -284,8 +277,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -284,8 +277,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
......
...@@ -88,19 +88,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback() ...@@ -88,19 +88,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(CORBA::SystemException&amp; ex) catch(CORBA::SystemException&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl; &lt;&lt; ex.NP_minorString() &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
} }
if( !active ) if( !active )
...@@ -116,8 +113,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si ...@@ -116,8 +113,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'"> <xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="@name"/> ) if( _sid == <xsl:value-of select="@name"/> )
{ {
if( ulog.is_level2() ) ulog2 &lt;&lt; "(setState): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog.level2() &lt;&lt; "(setState): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; _val &lt;&lt; endl;
<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = _val; <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = _val;
<xsl:call-template name="setdata"/> <xsl:call-template name="setdata"/>
return; return;
...@@ -163,7 +159,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM ...@@ -163,7 +159,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
if( _sm->id == <xsl:value-of select="@name"/> ) if( _sm->id == <xsl:value-of select="@name"/> )
{ {
<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = _sm->value; <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = _sm->value;
dlog.level( Debug::type(_sm->value) ); mylog.level( Debug::type(_sm->value) );
} }
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
...@@ -188,14 +184,12 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si ...@@ -188,14 +184,12 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
return <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/>; return <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/>;
} }
</xsl:for-each> </xsl:for-each>
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl; &lt;&lt; _sid &lt;&lt; endl;
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
...@@ -214,8 +208,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm ...@@ -214,8 +208,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
break; break;
} }
if( !activated &amp;&amp; ulog.is_crit() ) if( !activated )
ulog.crit() &lt;&lt; myname ucrit &lt;&lt; myname
&lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl; &lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl;
for( ;; ) for( ;; )
...@@ -232,18 +226,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm ...@@ -232,18 +226,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
} }
catch(SystemError&amp; err) catch(SystemError&amp; err)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
} }
catch(Exception&amp; ex) catch(Exception&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
} }
msleep(askPause); msleep(askPause);
} }
...@@ -275,8 +266,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -275,8 +266,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( UniSetTypes::Exception&amp; ex ) catch( UniSetTypes::Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
} }
...@@ -293,8 +283,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -293,8 +283,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( UniSetTypes::Exception&amp; ex ) catch( UniSetTypes::Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
} }
...@@ -312,8 +301,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code ...@@ -312,8 +301,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
} }
catch( UniSetTypes::Exception&amp; ex ) catch( UniSetTypes::Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
} }
......
...@@ -93,19 +93,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback() ...@@ -93,19 +93,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
} }
catch(CORBA::SystemException&amp; ex) catch(CORBA::SystemException&amp; ex)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl; &lt;&lt; ex.NP_minorString() &lt;&lt; endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
} }
if( !active ) if( !active )
...@@ -121,8 +118,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId sid ...@@ -121,8 +118,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId sid
<xsl:if test="normalize-space(@vartype)='out'"> <xsl:if test="normalize-space(@vartype)='out'">
if( sid == <xsl:value-of select="@name"/> ) if( sid == <xsl:value-of select="@name"/> )
{ {
if( ulog.is_level2() ) ulog2 &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; val &lt;&lt; endl;
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; val &lt;&lt; endl;
<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = val; <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = val;
return; return;
} }
...@@ -178,8 +174,7 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si ...@@ -178,8 +174,7 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
return <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/>; return <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/>;
</xsl:for-each> </xsl:for-each>
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl; &lt;&lt; _sid &lt;&lt; endl;
return 0; return 0;
} }
...@@ -214,8 +209,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code, ...@@ -214,8 +209,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -232,8 +226,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code, ...@@ -232,8 +226,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -251,8 +244,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code, ...@@ -251,8 +244,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
...@@ -269,8 +261,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code, ...@@ -269,8 +261,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
} }
catch( Exception&amp; ex ) catch( Exception&amp; ex )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; myname &lt;&lt; "(setmsg): " &lt;&lt; ex &lt;&lt; endl;
ulog.crit() &lt;&lt; myname &lt;&lt; "(setmsg): " &lt;&lt; ex &lt;&lt; endl;
throw; throw;
} }
</xsl:template> </xsl:template>
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='CHECK'"> <xsl:when test="$GENTYPE='CHECK'">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
<xsl:if test="normalize-space(../../@id)=''">if( ulog.is_warn() ) ulog.warn() &lt;&lt; myname &lt;&lt; ": Not found (Message)OID for mid_<xsl:value-of select="normalize-space(../../@name)"/>" &lt;&lt; endl; <xsl:if test="normalize-space(../../@id)=''">uwarn &lt;&lt; myname &lt;&lt; ": Not found (Message)OID for mid_<xsl:value-of select="normalize-space(../../@name)"/>" &lt;&lt; endl;
</xsl:if> </xsl:if>
</xsl:if> </xsl:if>
</xsl:when> </xsl:when>
...@@ -101,8 +101,7 @@ ...@@ -101,8 +101,7 @@
<xsl:when test="$GENTYPE='A'"> <xsl:when test="$GENTYPE='A'">
if( _code == mid_<xsl:value-of select="../../@name"/> ) if( _code == mid_<xsl:value-of select="../../@name"/> )
{ {
if( ulog.is_level8() ) ulog8 &lt;&lt; "<xsl:value-of select="../../@name"/>" &lt;&lt; endl;
ulog.level8() &lt;&lt; "<xsl:value-of select="../../@name"/>" &lt;&lt; endl;
m_<xsl:value-of select="../../@name"/> = _state; m_<xsl:value-of select="../../@name"/> = _state;
try try
{ {
...@@ -126,8 +125,7 @@ ...@@ -126,8 +125,7 @@
} }
catch( UniSetTypes::Exception&amp; ex ) catch( UniSetTypes::Exception&amp; ex )
{ {
if( ulog.is_level1() ) ulog1 &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
ulog.level1() &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
} }
} }
</xsl:when> </xsl:when>
...@@ -165,8 +163,22 @@ ...@@ -165,8 +163,22 @@
void updateValues(); void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state ); void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream dlog; DebugStream mylog;
void init_dlog(DebugStream&amp; dlog); void init_dlog( DebugStream&amp; d );
// "синтаксический сахар"..для логов
#define myinfo if( mylog.debugging(Debug::INFO) ) mylog
#define mywarn if( mylog.debugging(Debug::WARN) ) mylog
#define mycrit if( mylog.debugging(Debug::CRIT) ) mylog
#define mylog1 if( mylog.debugging(Debug::LEVEL1) ) mylog
#define mylog2 if( mylog.debugging(Debug::LEVEL2) ) mylog
#define mylog3 if( mylog.debugging(Debug::LEVEL3) ) mylog
#define mylog4 if( mylog.debugging(Debug::LEVEL4) ) mylog
#define mylog5 if( mylog.debugging(Debug::LEVEL5) ) mylog
#define mylog6 if( mylog.debugging(Debug::LEVEL6) ) mylog
#define mylog7 if( mylog.debugging(Debug::LEVEL7) ) mylog
#define mylog8 if( mylog.debugging(Debug::LEVEL8) ) mylog
#define mylog9 if( mylog.debugging(Debug::LEVEL9) ) mylog
</xsl:template> </xsl:template>
<xsl:template name="COMMON-HEAD-PROTECTED"> <xsl:template name="COMMON-HEAD-PROTECTED">
...@@ -226,7 +238,7 @@ ...@@ -226,7 +238,7 @@
int activateTimeout; /*!&lt; время ожидания готовности UniSetObject к работе */ int activateTimeout; /*!&lt; время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!&lt; время на блокировку обработки WatchDog, если недавно был StartUp */ PassiveTimer ptStartUpTimeout; /*!&lt; время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!&lt; пауза между неудачными попытками заказать датчики */ int askPause; /*!&lt; пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si; IOController_i::SensorInfo si;
</xsl:template> </xsl:template>
...@@ -238,7 +250,7 @@ ...@@ -238,7 +250,7 @@
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::init_dlog( DebugStream&amp; d ) void <xsl:value-of select="$CLASSNAME"/>_SK::init_dlog( DebugStream&amp; d )
{ {
<xsl:value-of select="$CLASSNAME"/>_SK::dlog = d; <xsl:value-of select="$CLASSNAME"/>_SK::mylog = d;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::VoidMessage* _msg ) void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::VoidMessage* _msg )
...@@ -272,9 +284,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi ...@@ -272,9 +284,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi
break; break;
} }
} }
catch(Exception&amp; ex) catch( Exception&amp; ex )
{ {
cout &lt;&lt; myname &lt;&lt; "(processingMessage): " &lt;&lt; ex &lt;&lt; endl; ucrit &lt;&lt; myname &lt;&lt; "(processingMessage): " &lt;&lt; ex &lt;&lt; endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -286,8 +298,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm ) ...@@ -286,8 +298,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): WatchDog" &lt;&lt; endl; ulog &lt;&lt; myname &lt;&lt; "(sysCommand): WatchDog" &lt;&lt; endl;
if( !active || !ptStartUpTimeout.checkTime() ) if( !active || !ptStartUpTimeout.checkTime() )
{ {
if( ulog.is_warn() ) uwarn &lt;&lt; myname &lt;&lt; "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl;
ulog.warn() &lt;&lt; myname &lt;&lt; "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl;
break; break;
} }
case SystemMessage::StartUp: case SystemMessage::StartUp:
...@@ -313,12 +324,12 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm ) ...@@ -313,12 +324,12 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
case SystemMessage::LogRotate: case SystemMessage::LogRotate:
{ {
// переоткрываем логи // переоткрываем логи
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl; mylog &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl;
string fname( ulog.getLogFile() ); string fname( mylog.getLogFile() );
if( !fname.empty() ) if( !fname.empty() )
{ {
ulog.logFile(fname.c_str()); mylog.logFile(fname.c_str());
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** ulog LOG ROTATE *****************" &lt;&lt; endl; mylog &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** mylog LOG ROTATE *****************" &lt;&lt; endl;
} }
} }
break; break;
...@@ -375,12 +386,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -375,12 +386,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
if( _testID == DefaultObjectId ) if( _testID == DefaultObjectId )
return; return;
if( ulog.is_info() ) uinfo &lt;&lt; myname &lt;&lt; "(waitSM): waiting SM ready "
{
ulog.info() &lt;&lt; myname &lt;&lt; "(waitSM): waiting SM ready "
&lt;&lt; wait_msec &lt;&lt; " msec" &lt;&lt; wait_msec &lt;&lt; " msec"
&lt;&lt; " testID=" &lt;&lt; _testID &lt;&lt; endl; &lt;&lt; " testID=" &lt;&lt; _testID &lt;&lt; endl;
}
if( !ui.waitReady(_testID,wait_msec) ) if( !ui.waitReady(_testID,wait_msec) )
{ {
...@@ -389,8 +397,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -389,8 +397,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
&lt;&lt; "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение " &lt;&lt; "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
&lt;&lt; wait_msec &lt;&lt; " мсек"; &lt;&lt; wait_msec &lt;&lt; " мсек";
if( ulog.is_crit() ) ucrit &lt;&lt; err.str() &lt;&lt; endl;
ulog.crit() &lt;&lt; err.str() &lt;&lt; endl;
terminate(); terminate();
abort(); abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... // kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
...@@ -407,8 +414,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -407,8 +414,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
&lt;&lt; "(waitSM): Не дождались готовности(work) SharedMemory к работе в течение " &lt;&lt; "(waitSM): Не дождались готовности(work) SharedMemory к работе в течение "
&lt;&lt; wait_msec &lt;&lt; " мсек"; &lt;&lt; wait_msec &lt;&lt; " мсек";
if( ulog.is_crit() ) ucrit &lt;&lt; err.str() &lt;&lt; endl;
ulog.crit() &lt;&lt; err.str() &lt;&lt; endl;
terminate(); terminate();
abort(); abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... // kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
...@@ -534,7 +540,7 @@ askPause(2000), ...@@ -534,7 +540,7 @@ askPause(2000),
</xsl:for-each> </xsl:for-each>
end_private(false) end_private(false)
{ {
ulog.crit() &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl; ucrit &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl;
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname+": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -545,7 +551,7 @@ static const std::string init3_str( const std::string&amp; s1, const std::string ...@@ -545,7 +551,7 @@ static const std::string init3_str( const std::string&amp; s1, const std::string
return s1; return s1;
if( !s2.empty() ) if( !s2.empty() )
return s2; return s2;
return s3; return s3;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -611,9 +617,9 @@ end_private(false) ...@@ -611,9 +617,9 @@ end_private(false)
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") ); throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") );
</xsl:if> </xsl:if>
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
...@@ -631,7 +637,7 @@ end_private(false) ...@@ -631,7 +637,7 @@ end_private(false)
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() ) if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
throw Exception( myname + ": Not found Message::NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") ); throw Exception( myname + ": Not found Message::NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") );
} }
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() ) if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
...@@ -710,16 +716,14 @@ end_private(false) ...@@ -710,16 +716,14 @@ end_private(false)
<xsl:if test="normalize-space(@min)!=''"> <xsl:if test="normalize-space(@min)!=''">
if( <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/> ) if( <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/> )
{ {
if( ulog.is_warn() ) uwarn &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &lt; <xsl:value-of select="@min"/>" &lt;&lt; endl;
ulog.warn() &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &lt; <xsl:value-of select="@min"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/>");</xsl:if> <xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/>");</xsl:if>
} }
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@max)!=''"> <xsl:if test="normalize-space(@max)!=''">
if( <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/> ) if( <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/> )
{ {
if( ulog.is_warn() ) uwarn &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &gt; <xsl:value-of select="@max"/>" &lt;&lt; endl;
ulog.warn() &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &gt; <xsl:value-of select="@max"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/>");</xsl:if> <xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/>");</xsl:if>
} }
</xsl:if> </xsl:if>
...@@ -777,29 +781,18 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code, ...@@ -777,29 +781,18 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
{ {
if( _code == UniSetTypes::DefaultObjectId ) if( _code == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; getName()
ulog.crit() &lt;&lt; getName() &lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; endl; &lt;&lt; endl;
return false; return false;
} }
if( ulog.is_level1() ) ulog1 &lt;&lt; getName() &lt;&lt; "(alarm): " &lt;&lt; ( _state ? "SEND " : "RESET " ) &lt;&lt; endl;
{
ulog.level1() &lt;&lt; getName() &lt;&lt; "(alarm): ";
if( _state )
ulog.level1(false) &lt;&lt; "SEND ";
else
ulog.level1(false) &lt;&lt; "RESET ";
ulog.level1(false) &lt;&lt; endl;
}
<xsl:for-each select="//msgmap/item"> <xsl:for-each select="//msgmap/item">
if( _code == <xsl:value-of select="@name"/> ) if( _code == <xsl:value-of select="@name"/> )
{ {
if( ulog.is_level1() ) ulog1 &lt;&lt; "<xsl:value-of select="@name"/>" &lt;&lt; endl;
ulog.level1() &lt;&lt; "<xsl:value-of select="@name"/>" &lt;&lt; endl;
try try
{ {
m_<xsl:value-of select="@name"/> = _state; m_<xsl:value-of select="@name"/> = _state;
...@@ -814,8 +807,7 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code, ...@@ -814,8 +807,7 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
} }
</xsl:for-each> </xsl:for-each>
if( ulog.is_level1() ) ulog1 &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
ulog.level1() &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
return false; return false;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -834,8 +826,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::resetMsg() ...@@ -834,8 +826,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::resetMsg()
} }
catch( UniSetTypes::Exception&amp; ex ) catch( UniSetTypes::Exception&amp; ex )
{ {
if( ulog.is_level1() ) ulog1 &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
ulog.level1() &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
} }
} }
</xsl:for-each> </xsl:for-each>
...@@ -893,7 +884,7 @@ confnode(0), ...@@ -893,7 +884,7 @@ confnode(0),
activated(false), activated(false),
askPause(2000) askPause(2000)
{ {
ulog.crit() &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl; ucrit &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl;
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname+": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1055,22 +1046,13 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code, ...@@ -1055,22 +1046,13 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
{ {
if( _code == UniSetTypes::DefaultObjectId ) if( _code == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit &lt;&lt; getName()
ulog.crit() &lt;&lt; getName() &lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; endl; &lt;&lt; endl;
return false; return false;
} }
if( ulog.is_level1() ) ulog1 &lt;&lt; getName() &lt;&lt; "(alarm): (" &lt;&lt; _code &lt;&lt; ")" &lt;&lt; ( _state ? "SEND" : "RESET" ) &lt;&lt; endl;
{
ulog.level1() &lt;&lt; getName() &lt;&lt; "(alarm): ";
if( _state )
ulog.level1(false) &lt;&lt; "SEND (" &lt;&lt; _code &lt;&lt; ")";
else
ulog.level1(false) &lt;&lt; "RESET (" &lt;&lt; _code &lt;&lt; ")";
}
<xsl:for-each select="//sensors/item"> <xsl:for-each select="//sensors/item">
<xsl:call-template name="setmsg"> <xsl:call-template name="setmsg">
...@@ -1078,22 +1060,21 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code, ...@@ -1078,22 +1060,21 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
</xsl:call-template> </xsl:call-template>
</xsl:for-each> </xsl:for-each>
if( ulog.is_level8() ) ulog8 &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
ulog.level8() &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
return false; return false;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
</xsl:template> </xsl:template>
<xsl:template name="check_changes"> <xsl:template name="check_changes">
<xsl:param name="onlymsg"></xsl:param> <xsl:param name="onlymsg"></xsl:param>
<xsl:if test="normalize-space($onlymsg)=''"> <xsl:if test="normalize-space($onlymsg)=''">
if( prev_<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> != <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> ) if( prev_<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> != <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> )
</xsl:if> </xsl:if>
{ {
<xsl:if test="normalize-space($onlymsg)=''"> <xsl:if test="normalize-space($onlymsg)=''">
</xsl:if> </xsl:if>
// приходится искуственно использовать третий параметр, // приходится искуственно использовать третий параметр,
// что-бы компилятор выбрал // что-бы компилятор выбрал
// правильный(для аналоговых) конструктор у SensorMessage // правильный(для аналоговых) конструктор у SensorMessage
IOController_i::CalibrateInfo _ci; IOController_i::CalibrateInfo _ci;
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#include <xsl:call-template name="preinclude"/>LT_Object.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>LT_Object.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UniXML.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Trigger.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>UniversalInterface.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UInterface.h<xsl:call-template name="postinclude"/>
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
class <xsl:value-of select="$CLASSNAME"/>_SK: class <xsl:value-of select="$CLASSNAME"/>_SK:
<xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if>
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#include &lt;sstream&gt; #include &lt;sstream&gt;
#include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>ObjectsActivator.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UniSetActivator.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Debug.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Debug.h<xsl:call-template name="postinclude"/>
#include "<xsl:value-of select="$CLASSNAME"/>.h" #include "<xsl:value-of select="$CLASSNAME"/>.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -53,10 +53,6 @@ int main( int argc,char* argv[] ) ...@@ -53,10 +53,6 @@ int main( int argc,char* argv[] )
string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" ); string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" );
conf = new Configuration(argc, argv,confile); conf = new Configuration(argc, argv,confile);
string logfilename = conf->getArgParam("--logfile","<xsl:value-of select="$CLASSNAME"/>.log");
string logname( conf->getLogDir() + logfilename );
ulog.logFile( logname.c_str() );
// определяем ID объекта // определяем ID объекта
ObjectId ID(DefaultObjectId); ObjectId ID(DefaultObjectId);
...@@ -73,8 +69,12 @@ int main( int argc,char* argv[] ) ...@@ -73,8 +69,12 @@ int main( int argc,char* argv[] )
} }
<xsl:value-of select="$CLASSNAME"/> obj(ID); <xsl:value-of select="$CLASSNAME"/> obj(ID);
ObjectsActivator act; string logfilename = conf->getArgParam("--logfile","<xsl:value-of select="$CLASSNAME"/>.log");
string logname( conf->getLogDir() + logfilename );
obj.mylog.logFile( logname.c_str() );
UniSetActivator act;
act.addObject(static_cast&lt;class UniSetObject*&gt;(&amp;obj)); act.addObject(static_cast&lt;class UniSetObject*&gt;(&amp;obj));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#include &lt;sstream&gt; #include &lt;sstream&gt;
#include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Configuration.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>ObjectsActivator.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>UniSetActivator.h<xsl:call-template name="postinclude"/>
#include <xsl:call-template name="preinclude"/>Debug.h<xsl:call-template name="postinclude"/> #include <xsl:call-template name="preinclude"/>Debug.h<xsl:call-template name="postinclude"/>
#include "<xsl:value-of select="$CLASSNAME"/>.h" #include "<xsl:value-of select="$CLASSNAME"/>.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -55,10 +55,6 @@ int main( int argc, const char** argv ) ...@@ -55,10 +55,6 @@ int main( int argc, const char** argv )
string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" ); string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" );
conf = new Configuration(argc, argv, confile); conf = new Configuration(argc, argv, confile);
string logfilename = conf->getArgParam("--logfile","<xsl:value-of select="$CLASSNAME"/>.log");
string logname( conf->getLogDir() + logfilename );
ulog.logFile( logname.c_str() );
<xsl:if test="not(normalize-space(//@OID))=''"> <xsl:if test="not(normalize-space(//@OID))=''">
<xsl:value-of select="$CLASSNAME"/> obj; <xsl:value-of select="$CLASSNAME"/> obj;
...@@ -79,9 +75,14 @@ int main( int argc, const char** argv ) ...@@ -79,9 +75,14 @@ int main( int argc, const char** argv )
} }
} }
<xsl:value-of select="$CLASSNAME"/> obj(ID); <xsl:value-of select="$CLASSNAME"/> obj(ID);
string logfilename = conf->getArgParam("--logfile","<xsl:value-of select="$CLASSNAME"/>.log");
string logname( conf->getLogDir() + logfilename );
obj.mylog.logFile( logname.c_str() );
</xsl:if> </xsl:if>
ObjectsActivator act; UniSetActivator act;
act.addObject(static_cast&lt;class UniSetObject*&gt;(&amp;obj)); act.addObject(static_cast&lt;class UniSetObject*&gt;(&amp;obj));
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
......
...@@ -31,10 +31,10 @@ int main( int argc, const char **argv ) ...@@ -31,10 +31,10 @@ int main( int argc, const char **argv )
SystemMessage sm(SystemMessage::StartUp); SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() ); act.broadcast( sm.transport_msg() );
ulog.ebug::ANY) << "\n\n\n"; ulog << "\n\n\n";
ulog.ebug::ANY] << "(Skel::main): -------------- Skel START -------------------------\n\n"; ulog << "(Skel::main): -------------- Skel START -------------------------\n\n";
dlog(Debug::ANY) << "\n\n\n"; dlog << "\n\n\n";
dlog[Debug::ANY] << "(Skel::main): -------------- Skel START -------------------------\n\n"; dlog << "(Skel::main): -------------- Skel START -------------------------\n\n";
act.run(false); act.run(false);
} }
catch(SystemError& err) catch(SystemError& err)
......
...@@ -356,6 +356,7 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -356,6 +356,7 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
- ObjectsActitvator --> UniSetActivator - ObjectsActitvator --> UniSetActivator
- remove deprecated property: "sensebility" - remove deprecated property: "sensebility"
- rename property "inverse" --> "threshold_invert" - rename property "inverse" --> "threshold_invert"
- add syntax sugar for ulog, dlog (dcrit,dwarn,dlog1,ulog1,ucrit,...)
* Tue Dec 10 2013 Pavel Vainerman <pv@altlinux.ru> 1.7-alt3 * Tue Dec 10 2013 Pavel Vainerman <pv@altlinux.ru> 1.7-alt3
- add RRDServer - add RRDServer
......
...@@ -152,20 +152,17 @@ void DBServer_MySQL::parse( UniSetTypes::ConfirmMessage* cem ) ...@@ -152,20 +152,17 @@ void DBServer_MySQL::parse( UniSetTypes::ConfirmMessage* cem )
if( !writeToBase(data.str()) ) if( !writeToBase(data.str()) )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): db error: "<< db->error() << endl;
ulog.crit() << myname << "(update_confirm): db error: "<< db->error() << endl;
db->freeResult(); db->freeResult();
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): " << ex << endl;
ulog.crit() << myname << "(update_confirm): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): catch..." << endl;
ulog.crit() << myname << "(update_confirm): catch..." << endl;
} }
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
...@@ -188,8 +185,7 @@ bool DBServer_MySQL::writeToBase( const string& query ) ...@@ -188,8 +185,7 @@ bool DBServer_MySQL::writeToBase( const string& query )
qbuf.pop(); qbuf.pop();
if( ulog.is_crit() ) ucrit << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
ulog.crit() << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
<< ") overflow! lost query: " << qlost << endl; << ") overflow! lost query: " << qlost << endl;
} }
return false; return false;
...@@ -231,11 +227,9 @@ void DBServer_MySQL::flushBuffer() ...@@ -231,11 +227,9 @@ void DBServer_MySQL::flushBuffer()
string err(db->error()); string err(db->error());
if( err.empty() ) if( err.empty() )
db->freeResult(); db->freeResult();
else if( ulog.is_crit() ) else
{ ucrit << myname << "(writeToBase): error: " << err <<
ulog.crit() << myname << "(writeToBase): error: " << err <<
" lost query: " << qbuf.front() << endl; " lost query: " << qbuf.front() << endl;
}
qbuf.pop(); qbuf.pop();
} }
...@@ -269,20 +263,17 @@ void DBServer_MySQL::parse( UniSetTypes::SensorMessage *si ) ...@@ -269,20 +263,17 @@ void DBServer_MySQL::parse( UniSetTypes::SensorMessage *si )
if( !writeToBase(data.str()) ) if( !writeToBase(data.str()) )
{ {
if( ulog.is_crit() ) ucrit << myname << "(insert) sensor msg error: "<< db->error() << endl;
ulog.crit() << myname << "(insert) sensor msg error: "<< db->error() << endl;
db->freeResult(); db->freeResult();
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(insert_main_history): " << ex << endl;
ulog.crit() << myname << "(insert_main_history): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
if( ulog.is_crit() ) ucrit << myname << "(insert_main_history): catch ..." << endl;
ulog.crit() << myname << "(insert_main_history): catch ..." << endl;
} }
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
...@@ -346,8 +337,7 @@ void DBServer_MySQL::init_dbserver() ...@@ -346,8 +337,7 @@ void DBServer_MySQL::init_dbserver()
if( !db->connect(dbnode, user, password, dbname) ) if( !db->connect(dbnode, user, password, dbname) )
{ {
// ostringstream err; // ostringstream err;
if( ulog.is_crit() ) ucrit << myname
ulog.crit() << myname
<< "(init): DB connection error: " << "(init): DB connection error: "
<< db->error() << endl; << db->error() << endl;
// throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) ); // throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) );
...@@ -372,8 +362,7 @@ void DBServer_MySQL::createTables( DBInterface *db ) ...@@ -372,8 +362,7 @@ void DBServer_MySQL::createTables( DBInterface *db )
UniXML_iterator it( conf->getNode("Tables") ); UniXML_iterator it( conf->getNode("Tables") );
if(!it) if(!it)
{ {
if( ulog.is_crit() ) ucrit << myname << ": section <Tables> not found.."<< endl;
ulog.crit() << myname << ": section <Tables> not found.."<< endl;
throw Exception(); throw Exception();
} }
...@@ -385,8 +374,8 @@ void DBServer_MySQL::createTables( DBInterface *db ) ...@@ -385,8 +374,8 @@ void DBServer_MySQL::createTables( DBInterface *db )
ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl; ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl;
ostringstream query; ostringstream query;
query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")"; query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")";
if( !db->query(query.str()) && ulog.is_crit() ) if( !db->query(query.str()) )
ulog.crit() << myname << "(createTables): error: \t\t" << db->error() << endl; ucrit << myname << "(createTables): error: \t\t" << db->error() << endl;
} }
} }
} }
...@@ -399,8 +388,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -399,8 +388,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
{ {
if( !db->ping() ) if( !db->ping() )
{ {
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): DB lost connection.." << endl;
ulog.warn() << myname << "(timerInfo): DB lost connection.." << endl;
connect_ok = false; connect_ok = false;
askTimer(DBServer_MySQL::PingTimer,0); askTimer(DBServer_MySQL::PingTimer,0);
askTimer(DBServer_MySQL::ReconnectTimer,ReconnectTime); askTimer(DBServer_MySQL::ReconnectTimer,ReconnectTime);
...@@ -427,8 +415,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -427,8 +415,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
askTimer(DBServer_MySQL::PingTimer,PingTime); askTimer(DBServer_MySQL::PingTimer,PingTime);
} }
connect_ok = false; connect_ok = false;
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): DB no connection.." << endl;
ulog.warn() << myname << "(timerInfo): DB no connection.." << endl;
} }
else else
init_dbserver(); init_dbserver();
...@@ -436,8 +423,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -436,8 +423,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
break; break;
default: default:
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
ulog.warn() << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
break; break;
} }
} }
......
...@@ -148,19 +148,16 @@ void DBServer_SQLite::parse( UniSetTypes::ConfirmMessage* cem ) ...@@ -148,19 +148,16 @@ void DBServer_SQLite::parse( UniSetTypes::ConfirmMessage* cem )
if( !writeToBase(data.str()) ) if( !writeToBase(data.str()) )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): db error: "<< db->error() << endl;
ulog.crit() << myname << "(update_confirm): db error: "<< db->error() << endl;
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): " << ex << endl;
ulog.crit() << myname << "(update_confirm): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
if( ulog.is_crit() ) ucrit << myname << "(update_confirm): catch..." << endl;
ulog.crit() << myname << "(update_confirm): catch..." << endl;
} }
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
...@@ -183,8 +180,7 @@ bool DBServer_SQLite::writeToBase( const string& query ) ...@@ -183,8 +180,7 @@ bool DBServer_SQLite::writeToBase( const string& query )
qbuf.pop(); qbuf.pop();
if( ulog.is_crit() ) ucrit << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
ulog.crit() << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
<< ") overflow! lost query: " << qlost << endl; << ") overflow! lost query: " << qlost << endl;
} }
return false; return false;
...@@ -207,9 +203,9 @@ void DBServer_SQLite::flushBuffer() ...@@ -207,9 +203,9 @@ void DBServer_SQLite::flushBuffer()
// Сперва пробуем очистить всё что накопилось в очереди до этого... // Сперва пробуем очистить всё что накопилось в очереди до этого...
while( !qbuf.empty() ) while( !qbuf.empty() )
{ {
if( !db->insert(qbuf.front()) && ulog.is_crit() ) if( !db->insert(qbuf.front()) )
{ {
ulog.crit() << myname << "(writeToBase): error: " << db->error() << ucrit << myname << "(writeToBase): error: " << db->error() <<
" lost query: " << qbuf.front() << endl; " lost query: " << qbuf.front() << endl;
} }
qbuf.pop(); qbuf.pop();
...@@ -244,17 +240,16 @@ void DBServer_SQLite::parse( UniSetTypes::SensorMessage *si ) ...@@ -244,17 +240,16 @@ void DBServer_SQLite::parse( UniSetTypes::SensorMessage *si )
if( !writeToBase(data.str()) ) if( !writeToBase(data.str()) )
{ {
if( ulog.is_crit() ) ucrit << myname << "(insert) sensor msg error: "<< db->error() << endl;
ulog.crit() << myname << "(insert) sensor msg error: "<< db->error() << endl;
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
ulog.crit() << myname << "(insert_main_history): " << ex << endl; ucrit << myname << "(insert_main_history): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
ulog.crit() << myname << "(insert_main_history): catch ..." << endl; ucrit << myname << "(insert_main_history): catch ..." << endl;
} }
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
...@@ -311,8 +306,7 @@ void DBServer_SQLite::init_dbserver() ...@@ -311,8 +306,7 @@ void DBServer_SQLite::init_dbserver()
if( !db->connect(dbfile,false) ) if( !db->connect(dbfile,false) )
{ {
// ostringstream err; // ostringstream err;
if( ulog.is_crit() ) ucrit << myname
ulog.crit() << myname
<< "(init): DB connection error: " << "(init): DB connection error: "
<< db->error() << endl; << db->error() << endl;
// throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) ); // throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) );
...@@ -337,8 +331,7 @@ void DBServer_SQLite::createTables( SQLiteInterface *db ) ...@@ -337,8 +331,7 @@ void DBServer_SQLite::createTables( SQLiteInterface *db )
UniXML_iterator it( conf->getNode("Tables") ); UniXML_iterator it( conf->getNode("Tables") );
if(!it) if(!it)
{ {
if( ulog.is_crit() ) ucrit << myname << ": section <Tables> not found.."<< endl;
ulog.crit() << myname << ": section <Tables> not found.."<< endl;
throw Exception(); throw Exception();
} }
...@@ -350,8 +343,8 @@ void DBServer_SQLite::createTables( SQLiteInterface *db ) ...@@ -350,8 +343,8 @@ void DBServer_SQLite::createTables( SQLiteInterface *db )
ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl; ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl;
ostringstream query; ostringstream query;
query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")"; query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")";
if( !db->query(query.str()) && ulog.is_crit() ) if( !db->query(query.str()) )
ulog.crit() << myname << "(createTables): error: \t\t" << db->error() << endl; ucrit << myname << "(createTables): error: \t\t" << db->error() << endl;
} }
} }
} }
...@@ -364,8 +357,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -364,8 +357,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
{ {
if( !db->ping() ) if( !db->ping() )
{ {
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): DB lost connection.." << endl;
ulog.warn() << myname << "(timerInfo): DB lost connection.." << endl;
connect_ok = false; connect_ok = false;
askTimer(DBServer_SQLite::PingTimer,0); askTimer(DBServer_SQLite::PingTimer,0);
askTimer(DBServer_SQLite::ReconnectTimer,ReconnectTime); askTimer(DBServer_SQLite::ReconnectTimer,ReconnectTime);
...@@ -392,8 +384,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -392,8 +384,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
askTimer(DBServer_SQLite::PingTimer,PingTime); askTimer(DBServer_SQLite::PingTimer,PingTime);
} }
connect_ok = false; connect_ok = false;
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): DB no connection.." << endl;
ulog.warn() << myname << "(timerInfo): DB no connection.." << endl;
} }
else else
init_dbserver(); init_dbserver();
...@@ -401,8 +392,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -401,8 +392,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
break; break;
default: default:
if( ulog.is_warn() ) uwarn << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
ulog.warn() << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
break; break;
} }
} }
......
#include <sstream> #include <sstream>
#include "ORepHelpers.h" #include "ORepHelpers.h"
#include "UniSetTypes.h" #include "UniSetTypes.h"
#include "Extensions.h" #include "Extensions.h"
...@@ -11,13 +11,13 @@ using namespace UniSetExtensions; ...@@ -11,13 +11,13 @@ using namespace UniSetExtensions;
std::ostream& operator<<( std::ostream& os, IOControl::IOInfo& inf ) std::ostream& operator<<( std::ostream& os, IOControl::IOInfo& inf )
{ {
os << "(" << inf.si.id << ")" << conf->oind->getMapName(inf.si.id) os << "(" << inf.si.id << ")" << conf->oind->getMapName(inf.si.id)
<< " card=" << inf.ncard << " channel=" << inf.channel << " subdev=" << inf.subdev << " card=" << inf.ncard << " channel=" << inf.channel << " subdev=" << inf.subdev
<< " aref=" << inf.aref << " range=" << inf.range << " aref=" << inf.aref << " range=" << inf.range
<< " default=" << inf.defval << " safety=" << inf.safety; << " default=" << inf.defval << " safety=" << inf.safety;
if( inf.cal.minRaw!=inf.cal.maxRaw ) if( inf.cal.minRaw!=inf.cal.maxRaw )
os << inf.cal; os << inf.cal;
return os; return os;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -59,7 +59,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -59,7 +59,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
maxCardNum = conf->getArgInt("--"+prefix+"-max-cardnum","10"); maxCardNum = conf->getArgInt("--"+prefix+"-max-cardnum","10");
cards.resize(maxCardNum+1); cards.resize(maxCardNum+1);
dlog.info() << myname << "(init): numcards=" << numcards << endl; dinfo << myname << "(init): numcards=" << numcards << endl;
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
...@@ -84,8 +84,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -84,8 +84,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{ {
if( cards[i] == NULL ) if( cards[i] == NULL )
{ {
if( dlog.is_level3() ) dlog.level3() << myname << "(init): Card N" << i dlog3 << myname << "(init): Card N" << i
<< " DISABLED! dev='" << " DISABLED! dev='"
<< iodev << "'" << endl; << iodev << "'" << endl;
} }
} }
...@@ -93,7 +93,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -93,7 +93,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{ {
noCards = false; noCards = false;
cards[i] = new ComediInterface(iodev); cards[i] = new ComediInterface(iodev);
if( dlog.is_level3() ) dlog.level3() << myname << "(init): ADD card" << i << " dev=" << iodev << endl; dlog3 << myname << "(init): ADD card" << i << " dev=" << iodev << endl;
} }
if( cards[i] != NULL ) if( cards[i] != NULL )
...@@ -103,7 +103,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -103,7 +103,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
stringstream t1; stringstream t1;
t1 << s1.str() << "-subdev" << s << "-type"; t1 << s1.str() << "-subdev" << s << "-type";
string stype = conf->getArgParam(t1.str()); string stype( conf->getArgParam(t1.str()) );
if( !stype.empty() ) if( !stype.empty() )
{ {
ComediInterface::SubdevType st = ComediInterface::str2type(stype.c_str()); ComediInterface::SubdevType st = ComediInterface::str2type(stype.c_str());
...@@ -116,9 +116,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -116,9 +116,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
if( !stype.empty() ) if( !stype.empty() )
{ {
if( dlog.is_info() ) dinfo << myname
dlog.info() << myname << "(init): card" << i
<< "(init): card" << i
<< " subdev" << s << " set type " << stype << endl; << " subdev" << s << " set type " << stype << endl;
cards[i]->configureSubdev(s-1,st); cards[i]->configureSubdev(s-1,st);
...@@ -128,8 +127,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -128,8 +127,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
} }
} }
if( dlog.is_info() ) dinfo << myname << "(init): result numcards=" << cards.size() << endl;
dlog.info() << myname << "(init): result numcards=" << cards.size() << endl;
polltime = conf->getArgInt("--"+prefix+"-polltime",it.getProp("polltime")); polltime = conf->getArgInt("--"+prefix+"-polltime",it.getProp("polltime"));
if( !polltime ) if( !polltime )
...@@ -150,13 +148,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -150,13 +148,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{ {
ostringstream err; ostringstream err;
err << myname << ": Unkown ID for " << testlamp; err << myname << ": Unkown ID for " << testlamp;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
if( dlog.is_info() ) dinfo << myname << "(init): testLamp_S='" << testlamp << "'" << endl;
dlog.info() << myname << "(init): testLamp_S='" << testlamp << "'" << endl;
} }
string tmode = conf->getArgParam("--"+prefix+"-test-mode",it.getProp("testmode_as")); string tmode = conf->getArgParam("--"+prefix+"-test-mode",it.getProp("testmode_as"));
...@@ -167,13 +163,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -167,13 +163,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown ID for " << tmode; err << myname << ": Unknown ID for " << tmode;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
if( dlog.is_info() ) dinfo << myname << "(init): testMode_as='" << testmode << "'" << endl;
dlog.info() << myname << "(init): testMode_as='" << testmode << "'" << endl;
} }
shm = new SMInterface(icID,&ui,myid,ic); shm = new SMInterface(icID,&ui,myid,ic);
...@@ -182,8 +176,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -182,8 +176,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
s_field = conf->getArgParam("--"+prefix+"-s-filter-field"); s_field = conf->getArgParam("--"+prefix+"-s-filter-field");
s_fvalue = conf->getArgParam("--"+prefix+"-s-filter-value"); s_fvalue = conf->getArgParam("--"+prefix+"-s-filter-value");
if( dlog.is_info() ) dinfo << myname << "(init): read s_field='" << s_field
dlog.info() << myname << "(init): read s_field='" << s_field
<< "' s_fvalue='" << s_fvalue << "'" << endl; << "' s_fvalue='" << s_fvalue << "'" << endl;
int blink_msec = conf->getArgPInt("--"+prefix+"-blink-time",it.getProp("blink-time"), 300); int blink_msec = conf->getArgPInt("--"+prefix+"-blink-time",it.getProp("blink-time"), 300);
...@@ -207,13 +200,12 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -207,13 +200,12 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
if( sidTestSMReady == DefaultObjectId ) if( sidTestSMReady == DefaultObjectId )
{ {
sidTestSMReady = conf->getSensorID("TestMode_S"); sidTestSMReady = conf->getSensorID("TestMode_S");
if( dlog.is_warn() ) dwarn << myname
dlog.warn() << myname
<< "(init): Unknown ID for sm-ready-test-sid (--" << prefix << "-sm-ready-test-sid)." << "(init): Unknown ID for sm-ready-test-sid (--" << prefix << "-sm-ready-test-sid)."
<< " Use 'TestMode_S'" << endl; << " Use 'TestMode_S'" << endl;
} }
else if( dlog.is_info() ) else
dlog.info() << myname << "(init): test-sid: " << sm_ready_sid << endl; dinfo << myname << "(init): test-sid: " << sm_ready_sid << endl;
// ----------------------- // -----------------------
...@@ -225,8 +217,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID, ...@@ -225,8 +217,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{ {
ostringstream err; ostringstream err;
err << myname << ": Not found ID for 'HeartBeat' " << heart; err << myname << ": Not found ID for 'HeartBeat' " << heart;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -251,7 +242,7 @@ IOControl::~IOControl() ...@@ -251,7 +242,7 @@ IOControl::~IOControl()
{ {
// здесь бы ещё пройтись по списку с сделать delete для // здесь бы ещё пройтись по списку с сделать delete для
// всех cdiagram созданных через new // всех cdiagram созданных через new
// //
for( unsigned int i=0; i<cards.size(); i++ ) for( unsigned int i=0; i<cards.size(); i++ )
delete cards[i]; delete cards[i];
...@@ -267,7 +258,7 @@ void IOControl::execute() ...@@ -267,7 +258,7 @@ void IOControl::execute()
waitSM(); // необходимо дождаться, чтобы нормально инициализировать итераторы waitSM(); // необходимо дождаться, чтобы нормально инициализировать итераторы
PassiveTimer pt(UniSetTimer::WaitUpTime); PassiveTimer pt(UniSetTimer::WaitUpTime);
if( shm->isLocalwork() ) if( shm->isLocalwork() )
{ {
maxItem = 0; maxItem = 0;
...@@ -285,10 +276,9 @@ void IOControl::execute() ...@@ -285,10 +276,9 @@ void IOControl::execute()
readconf_ok = true; // т.к. waitSM() уже был... readconf_ok = true; // т.к. waitSM() уже был...
} }
maxHalf = maxItem / 2; maxHalf = maxItem / 2;
if( dlog.is_info() ) dinfo << myname << "(init): iomap size = " << iomap.size() << endl;
dlog.info() << myname << "(init): iomap size = " << iomap.size() << endl;
cerr << myname << "(iomap size): " << iomap.size() << endl; cerr << myname << "(iomap size): " << iomap.size() << endl;
...@@ -305,7 +295,7 @@ void IOControl::execute() ...@@ -305,7 +295,7 @@ void IOControl::execute()
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
cout << myname << "(execute): wait activate..." << endl; cout << myname << "(execute): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
...@@ -315,8 +305,8 @@ void IOControl::execute() ...@@ -315,8 +305,8 @@ void IOControl::execute()
} }
} }
if( !activated && dlog.is_crit() ) if( !activated )
dlog.crit() << myname << "(execute): ************* don`t activate?! ************" << endl; dcrit << myname << "(execute): ************* don`t activate?! ************" << endl;
try try
{ {
...@@ -330,12 +320,12 @@ void IOControl::execute() ...@@ -330,12 +320,12 @@ void IOControl::execute()
} }
} }
catch(...){} catch(...){}
while( !term ) while( !term )
{ {
try try
{ {
if( !noCards ) if( !noCards )
{ {
check_testmode(); check_testmode();
...@@ -383,27 +373,24 @@ void IOControl::execute() ...@@ -383,27 +373,24 @@ void IOControl::execute()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(execute): " << ex << endl;
dlog.level3() << myname << "(execute): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.is_level3() ) dlog3 << myname << "(execute): CORBA::SystemException: "
dlog.level3() << myname << "(execute): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_level3() ) dlog3 << myname << "(execute): catch ..." << endl;
dlog.level3() << myname << "(execute): catch ..." << endl;
} }
if( term ) if( term )
break; break;
msleep( polltime ); msleep( polltime );
} }
term = false; term = false;
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
...@@ -432,8 +419,8 @@ void IOControl::iopoll() ...@@ -432,8 +419,8 @@ void IOControl::iopoll()
IOBase::processingThreshold((IOBase*)&(*it),shm,force); IOBase::processingThreshold((IOBase*)&(*it),shm,force);
ioread( (IOInfo*)&(*it) ); ioread( (IOInfo*)&(*it) );
// на середине // на середине
// опять опросим приоритетные // опять опросим приоритетные
if( !prior && i>maxHalf ) if( !prior && i>maxHalf )
{ {
...@@ -445,18 +432,18 @@ void IOControl::iopoll() ...@@ -445,18 +432,18 @@ void IOControl::iopoll()
IOBase::processingThreshold((IOBase*)&(iomap[it->index]),shm,force); IOBase::processingThreshold((IOBase*)&(iomap[it->index]),shm,force);
} }
} }
prior = true; prior = true;
} }
} }
// Опрос приоритетной очереди // Опрос приоритетной очереди
for( PIOMap::iterator it=pmap.begin(); it!=pmap.end(); ++it ) for( PIOMap::iterator it=pmap.begin(); it!=pmap.end(); ++it )
{ {
if( it->priority > 2 ) if( it->priority > 2 )
{ {
ioread( &(iomap[it->index]) ); ioread( &(iomap[it->index]) );
IOBase::processingThreshold((IOBase*)&(iomap[it->index]),shm,force); IOBase::processingThreshold((IOBase*)&(iomap[it->index]),shm,force);
} }
} }
} }
...@@ -494,8 +481,7 @@ void IOControl::ioread( IOInfo* it ) ...@@ -494,8 +481,7 @@ void IOControl::ioread( IOInfo* it )
if( it->si.id == DefaultObjectId ) if( it->si.id == DefaultObjectId )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): sid=DefaultObjectId?!" << endl;
dlog.level3() << myname << "(iopoll): sid=DefaultObjectId?!" << endl;
return; return;
} }
...@@ -507,32 +493,18 @@ void IOControl::ioread( IOInfo* it ) ...@@ -507,32 +493,18 @@ void IOControl::ioread( IOInfo* it )
{ {
int val = card->getAnalogChannel(it->subdev,it->channel, it->range, it->aref); int val = card->getAnalogChannel(it->subdev,it->channel, it->range, it->aref);
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): read AI "
{ << " sid=" << it->si.id
dlog.level3() << myname << "(iopoll): read AI " << " subdev=" << it->subdev
<< " sid=" << it->si.id
<< " subdev=" << it->subdev
<< " chan=" << it->channel << " chan=" << it->channel
<< " val=" << val << " val=" << val
<< endl; << endl;
}
IOBase::processingAsAI( ib, val, shm, force ); IOBase::processingAsAI( ib, val, shm, force );
} }
else if( it->stype == UniversalIO::DI ) else if( it->stype == UniversalIO::DI )
{ {
bool set = card->getDigitalChannel(it->subdev,it->channel); bool set = card->getDigitalChannel(it->subdev,it->channel);
/*
if( dlog.is_level3() )
{
dlog.level3() << myname << "(iopoll): read DI "
<< " sid=" << it->si.id
<< " subdev=" << it->subdev
<< " chan=" << it->channel
<< " state=" << set
<< endl;
}
*/
IOBase::processingAsDI( ib, set, shm, force ); IOBase::processingAsDI( ib, set, shm, force );
// немного оптимизации // немного оптимизации
...@@ -558,7 +530,7 @@ void IOControl::ioread( IOInfo* it ) ...@@ -558,7 +530,7 @@ void IOControl::ioread( IOInfo* it )
{ {
case lmpOFF: case lmpOFF:
{ {
if( force_out && (prev_val == lmpBLINK if( force_out && (prev_val == lmpBLINK
|| prev_val == lmpBLINK2 || prev_val == lmpBLINK2
|| prev_val == lmpBLINK3) ) || prev_val == lmpBLINK3) )
{ {
...@@ -571,10 +543,10 @@ void IOControl::ioread( IOInfo* it ) ...@@ -571,10 +543,10 @@ void IOControl::ioread( IOInfo* it )
card->setDigitalChannel(it->subdev,it->channel,0); card->setDigitalChannel(it->subdev,it->channel,0);
} }
break; break;
case lmpON: case lmpON:
{ {
if( force_out && (prev_val == lmpBLINK if( force_out && (prev_val == lmpBLINK
|| prev_val == lmpBLINK2 || prev_val == lmpBLINK2
|| prev_val == lmpBLINK3) ) || prev_val == lmpBLINK3) )
{ {
...@@ -626,7 +598,7 @@ void IOControl::ioread( IOInfo* it ) ...@@ -626,7 +598,7 @@ void IOControl::ioread( IOInfo* it )
} }
} }
break; break;
default: default:
return; return;
} }
...@@ -641,34 +613,28 @@ void IOControl::ioread( IOInfo* it ) ...@@ -641,34 +613,28 @@ void IOControl::ioread( IOInfo* it )
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll):(NameNotFound) " << ex.err << endl;
dlog.level3() << myname << "(iopoll):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll):(IOBadParam) " << ex.err << endl;
dlog.level3() << myname << "(iopoll):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): (BadRange)..." << endl;
dlog.level3() << myname << "(iopoll): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): " << ex << endl;
dlog.level3() << myname << "(iopoll): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): СORBA::SystemException: "
dlog.level3() << myname << "(iopoll): СORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_level3() ) dlog3 << myname << "(iopoll): catch ..." << endl;
dlog.level3() << myname << "(iopoll): catch ..." << endl;
} }
} }
...@@ -688,8 +654,7 @@ void IOControl::readConfiguration() ...@@ -688,8 +654,7 @@ void IOControl::readConfiguration()
UniXML_iterator it(root); UniXML_iterator it(root);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(readConfiguration): section <sensors> empty?!!\n";
dlog.warn() << myname << "(readConfiguration): section <sensors> empty?!!\n";
return; return;
} }
...@@ -706,7 +671,7 @@ bool IOControl::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -706,7 +671,7 @@ bool IOControl::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
{ {
if( UniSetTypes::check_filter(it,s_field,s_fvalue) ) if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initIOItem(it); initIOItem(it);
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -720,16 +685,15 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -720,16 +685,15 @@ bool IOControl::initIOItem( UniXML_iterator& it )
if( c.empty() || inf.ncard < 0 || inf.ncard >= (int)cards.size() ) if( c.empty() || inf.ncard < 0 || inf.ncard >= (int)cards.size() )
{ {
if( dlog.is_level3() ) dlog3 << myname
dlog.level3() << myname << "(initIOItem): Unknown or bad card number ("
<< "(initIOItem): Unknown or bad card number (" << inf.ncard << ") for " << it.getProp("name")
<< inf.ncard << ") for " << it.getProp("name")
<< " set default=" << defCardNum << endl; << " set default=" << defCardNum << endl;
inf.ncard = defCardNum; inf.ncard = defCardNum;
} }
inf.subdev = it.getIntProp("subdev"); inf.subdev = it.getIntProp("subdev");
if( inf.subdev < 0 ) if( inf.subdev < 0 )
inf.subdev = DefaultSubdev; inf.subdev = DefaultSubdev;
...@@ -749,12 +713,11 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -749,12 +713,11 @@ bool IOControl::initIOItem( UniXML_iterator& it )
else else
inf.subdev = DefaultSubdev; inf.subdev = DefaultSubdev;
} }
inf.channel = it.getIntProp("channel"); inf.channel = it.getIntProp("channel");
if( inf.channel < 0 || inf.channel > 32 ) if( inf.channel < 0 || inf.channel > 32 )
{ {
if( dlog.is_warn() ) dwarn << myname << "(readItem): Unknown channel: " << inf.channel
dlog.warn() << myname << "(readItem): Unknown channel: " << inf.channel
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -774,9 +737,8 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -774,9 +737,8 @@ bool IOControl::initIOItem( UniXML_iterator& it )
inf.range = it.getIntProp("range"); inf.range = it.getIntProp("range");
if( inf.range < 0 || inf.range > 3 ) if( inf.range < 0 || inf.range > 3 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readItem): Unknown 'range': " << inf.range
dlog.crit() << myname << "(readItem): Unknown 'range': " << inf.range << " for " << it.getProp("name")
<< " for " << it.getProp("name")
<< " Must be range=[0..3]" << endl; << " Must be range=[0..3]" << endl;
return false; return false;
} }
...@@ -784,16 +746,14 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -784,16 +746,14 @@ bool IOControl::initIOItem( UniXML_iterator& it )
inf.aref = it.getIntProp("aref"); inf.aref = it.getIntProp("aref");
if( inf.aref < 0 || inf.aref > 3 ) if( inf.aref < 0 || inf.aref > 3 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readItem): Unknown 'aref': " << inf.aref
dlog.crit() << myname << "(readItem): Unknown 'aref': " << inf.aref
<< " for " << it.getProp("name") << " for " << it.getProp("name")
<< ". Must be aref=[0..3]" << endl; << ". Must be aref=[0..3]" << endl;
return false; return false;
} }
} }
if( dlog.is_level3() ) dlog3 << myname << "(readItem): add: " << inf.stype << " " << inf << endl;
dlog.level3() << myname << "(readItem): add: " << inf.stype << " " << inf << endl;
// если вектор уже заполнен // если вектор уже заполнен
// то увеличиваем его на 10 элементов (с запасом) // то увеличиваем его на 10 элементов (с запасом)
...@@ -807,12 +767,11 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -807,12 +767,11 @@ bool IOControl::initIOItem( UniXML_iterator& it )
{ {
IOPriority p(prior,maxItem); IOPriority p(prior,maxItem);
pmap.push_back(p); pmap.push_back(p);
if( dlog.is_level3() ) dlog3 << myname << "(readItem): add to priority list: "
dlog.level3() << myname << "(readItem): add to priority list: " << it.getProp("name")
<< it.getProp("name")
<< " priority=" << prior << endl; << " priority=" << prior << endl;
} }
iomap[maxItem++] = inf; iomap[maxItem++] = inf;
return true; return true;
} }
...@@ -820,7 +779,7 @@ bool IOControl::initIOItem( UniXML_iterator& it ) ...@@ -820,7 +779,7 @@ bool IOControl::initIOItem( UniXML_iterator& it )
bool IOControl::activateObject() bool IOControl::activateObject()
{ {
// блокирование обработки Startup // блокирование обработки Startup
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. sysCommand()
{ {
...@@ -860,20 +819,18 @@ void IOControl::sigterm( int signo ) ...@@ -860,20 +819,18 @@ void IOControl::sigterm( int signo )
bool set = it->invert ? !((bool)it->safety) : (bool)it->safety; bool set = it->invert ? !((bool)it->safety) : (bool)it->safety;
card->setDigitalChannel(it->subdev,it->channel,set); card->setDigitalChannel(it->subdev,it->channel,set);
} }
else if( it->stype == UniversalIO::AO ) else if( it->stype == UniversalIO::AO )
{ {
card->setAnalogChannel(it->subdev,it->channel,it->safety,it->range,it->aref); card->setAnalogChannel(it->subdev,it->channel,it->safety,it->range,it->aref);
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(sigterm): " << ex << endl;
dlog.level3() << myname << "(sigterm): " << ex << endl;
} }
catch(...){} catch(...){}
} }
while( term ){} while( term ){}
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -904,8 +861,7 @@ void IOControl::initOutputs() ...@@ -904,8 +861,7 @@ void IOControl::initOutputs()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(initOutput): " << ex << endl;
dlog.level3() << myname << "(initOutput): " << ex << endl;
} }
} }
} }
...@@ -926,7 +882,7 @@ void IOControl::initIOCard() ...@@ -926,7 +882,7 @@ void IOControl::initIOCard()
continue; continue;
try try
{ {
// конфигурировать необходимо только дискретные входы/выходы // конфигурировать необходимо только дискретные входы/выходы
// или "лампочки" (т.к. они фиктивные аналоговые датчики) // или "лампочки" (т.к. они фиктивные аналоговые датчики)
if( it->lamp ) if( it->lamp )
...@@ -946,11 +902,10 @@ void IOControl::initIOCard() ...@@ -946,11 +902,10 @@ void IOControl::initIOCard()
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(initIOCard): sid=" << it->si.id << " " << ex << endl;
dlog.crit() << myname << "(initIOCard): sid=" << it->si.id << " " << ex << endl;
} }
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void IOControl::blink( BlinkList& lst, bool& bstate ) void IOControl::blink( BlinkList& lst, bool& bstate )
{ {
...@@ -960,7 +915,7 @@ void IOControl::blink( BlinkList& lst, bool& bstate ) ...@@ -960,7 +915,7 @@ void IOControl::blink( BlinkList& lst, bool& bstate )
for( BlinkList::iterator it=lst.begin(); it!=lst.end(); ++it ) for( BlinkList::iterator it=lst.begin(); it!=lst.end(); ++it )
{ {
IOInfo* io(*it); IOInfo* io(*it);
if( io->subdev==DefaultSubdev || io->channel==DefaultChannel ) if( io->subdev==DefaultSubdev || io->channel==DefaultChannel )
continue; continue;
...@@ -974,11 +929,10 @@ void IOControl::blink( BlinkList& lst, bool& bstate ) ...@@ -974,11 +929,10 @@ void IOControl::blink( BlinkList& lst, bool& bstate )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(blink): " << ex << endl;
dlog.crit() << myname << "(blink): " << ex << endl;
} }
} }
bstate ^= true; bstate ^= true;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -990,7 +944,7 @@ void IOControl::addBlink( IOInfo* io, BlinkList& lst ) ...@@ -990,7 +944,7 @@ void IOControl::addBlink( IOInfo* io, BlinkList& lst )
if( (*it) == io ) if( (*it) == io )
return; return;
} }
lst.push_back(io); lst.push_back(io);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1018,9 +972,9 @@ void IOControl::check_testmode() ...@@ -1018,9 +972,9 @@ void IOControl::check_testmode()
if( prev_testmode == testmode ) if( prev_testmode == testmode )
return; return;
prev_testmode = testmode; prev_testmode = testmode;
// если режим "выключено всё" // если режим "выключено всё"
// то гасим все выходы // то гасим все выходы
if( testmode == tmOffPoll ) if( testmode == tmOffPoll )
...@@ -1052,15 +1006,14 @@ void IOControl::check_testmode() ...@@ -1052,15 +1006,14 @@ void IOControl::check_testmode()
bool set = it->invert ? !((bool)it->safety) : (bool)it->safety; bool set = it->invert ? !((bool)it->safety) : (bool)it->safety;
card->setDigitalChannel(it->subdev,it->channel,set); card->setDigitalChannel(it->subdev,it->channel,set);
} }
else if( it->stype == UniversalIO::AO ) else if( it->stype == UniversalIO::AO )
{ {
card->setAnalogChannel(it->subdev,it->channel,it->safety,it->range,it->aref); card->setAnalogChannel(it->subdev,it->channel,it->safety,it->range,it->aref);
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(sigterm): " << ex << endl;
dlog.level3() << myname << "(sigterm): " << ex << endl;
} }
catch(...){} catch(...){}
} }
...@@ -1069,12 +1022,11 @@ void IOControl::check_testmode() ...@@ -1069,12 +1022,11 @@ void IOControl::check_testmode()
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(check_testmode): " << ex << endl;
dlog.crit() << myname << "(check_testmode): " << ex << endl;
} }
catch(...) catch(...)
{ {
dcrit << myname << "(check_testmode): catch ..." << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1087,14 +1039,14 @@ void IOControl::check_testlamp() ...@@ -1087,14 +1039,14 @@ void IOControl::check_testlamp()
{ {
if( force_out ) if( force_out )
isTestLamp = shm->localGetValue( itTestLamp, testLamp_S ); isTestLamp = shm->localGetValue( itTestLamp, testLamp_S );
if( !trTestLamp.change(isTestLamp) ) if( !trTestLamp.change(isTestLamp) )
return; // если состояние не менялось, то продолжаем работу... return; // если состояние не менялось, то продолжаем работу...
if( isTestLamp ) if( isTestLamp )
blink_state = true; // первый такт всегда зажигаем... blink_state = true; // первый такт всегда зажигаем...
// cout << myname << "(check_test_lamp): ************* test lamp " // cout << myname << "(check_test_lamp): ************* test lamp "
// << isTestLamp << " *************" << endl; // << isTestLamp << " *************" << endl;
// проходим по списку и формируем список мигающих выходов... // проходим по списку и формируем список мигающих выходов...
...@@ -1102,7 +1054,7 @@ void IOControl::check_testlamp() ...@@ -1102,7 +1054,7 @@ void IOControl::check_testlamp()
{ {
if( !it->lamp || it->no_testlamp ) if( !it->lamp || it->no_testlamp )
continue; continue;
if( it->stype == UniversalIO::AO ) if( it->stype == UniversalIO::AO )
{ {
if( isTestLamp ) if( isTestLamp )
...@@ -1135,12 +1087,11 @@ void IOControl::check_testlamp() ...@@ -1135,12 +1087,11 @@ void IOControl::check_testlamp()
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(check_testlamp): " << ex << endl;
dlog.crit() << myname << "(check_testlamp): " << ex << endl;
} }
catch(...) catch(...)
{ {
dcrit << myname << "(check_testlamp): catch ..." << endl;
} }
} }
...@@ -1159,15 +1110,14 @@ IOControl* IOControl::init_iocontrol( int argc, const char* const* argv, ...@@ -1159,15 +1110,14 @@ IOControl* IOControl::init_iocontrol( int argc, const char* const* argv,
ObjectId ID = conf->getObjectID(name); ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
cerr << "(iocontrol): Unknown ID for " << name cerr << "(iocontrol): Unknown ID for " << name
<< "' Not found in <objects>" << endl; << "' Not found in <objects>" << endl;
return 0; return 0;
} }
int numcards = conf->getArgPInt("--"+prefix+"-numcards",1); int numcards = conf->getArgPInt("--"+prefix+"-numcards",1);
if( dlog.is_info() ) dinfo << "(iocontrol): name = " << name << "(" << ID << ")" << endl;
dlog.info() << "(iocontrol): name = " << name << "(" << ID << ")" << endl;
return new IOControl(ID,icID,ic,numcards,prefix); return new IOControl(ID,icID,ic,numcards,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1197,7 +1147,7 @@ void IOControl::help_print( int argc, const char* const* argv ) ...@@ -1197,7 +1147,7 @@ void IOControl::help_print( int argc, const char* const* argv )
cout << "--prefix-blink3-time msec - Вторая частота мигания (lmpBLINK3), мсек. По умолчанию в configure.xml" << endl; cout << "--prefix-blink3-time msec - Вторая частота мигания (lmpBLINK3), мсек. По умолчанию в configure.xml" << endl;
cout << "--prefix-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком." << endl; cout << "--prefix-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком." << endl;
cout << "--prefix-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10." << endl; cout << "--prefix-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10." << endl;
cout << "--prefix-ready-timeout - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно')" << endl; cout << "--prefix-ready-timeout - Время ожидания готовности SM к работе, мсек. (-1 - ждать 'вечно')" << endl;
cout << "--prefix-force - Сохранять значения в SM, независимо от, того менялось ли значение" << endl; cout << "--prefix-force - Сохранять значения в SM, независимо от, того менялось ли значение" << endl;
cout << "--prefix-force-out - Обновлять выходы принудительно (не по заказу)" << endl; cout << "--prefix-force-out - Обновлять выходы принудительно (не по заказу)" << endl;
cout << "--prefix-skip-init-output - Не инициализировать 'выходы' при старте" << endl; cout << "--prefix-skip-init-output - Не инициализировать 'выходы' при старте" << endl;
...@@ -1233,12 +1183,11 @@ void IOControl::processingMessage( UniSetTypes::VoidMessage* msg ) ...@@ -1233,12 +1183,11 @@ void IOControl::processingMessage( UniSetTypes::VoidMessage* msg )
default: default:
break; break;
} }
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): " << ex << endl;
dlog.crit() << myname << "(processingMessage): " << ex << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1250,16 +1199,15 @@ void IOControl::sysCommand( SystemMessage* sm ) ...@@ -1250,16 +1199,15 @@ void IOControl::sysCommand( SystemMessage* sm )
{ {
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
if( dlog.is_info() ) dinfo << myname << "(sysCommand): wait activate..." << endl;
dlog.info() << myname << "(sysCommand): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
break; break;
} }
if( !activated && dlog.is_crit() ) if( !activated )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl; dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
askSensors(UniversalIO::UIONotify); askSensors(UniversalIO::UIONotify);
break; break;
...@@ -1273,7 +1221,7 @@ void IOControl::sysCommand( SystemMessage* sm ) ...@@ -1273,7 +1221,7 @@ void IOControl::sysCommand( SystemMessage* sm )
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
{ {
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте) // ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
// Если идёт локальная работа // Если идёт локальная работа
// (т.е. IOControl запущен в одном процессе с SharedMemory2) // (т.е. IOControl запущен в одном процессе с SharedMemory2)
// то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM // то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM
// при заказе датчиков, а если SM вылетит, то вместе с этим процессом(IOControl) // при заказе датчиков, а если SM вылетит, то вместе с этим процессом(IOControl)
...@@ -1293,7 +1241,7 @@ void IOControl::sysCommand( SystemMessage* sm ) ...@@ -1293,7 +1241,7 @@ void IOControl::sysCommand( SystemMessage* sm )
} }
} }
catch(...){} catch(...){}
} }
break; break;
case SystemMessage::LogRotate: case SystemMessage::LogRotate:
...@@ -1328,16 +1276,15 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1328,16 +1276,15 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
return; return;
waitSM(); waitSM();
if( sidTestSMReady!=DefaultObjectId && if( sidTestSMReady!=DefaultObjectId &&
!shm->waitSMworking(sidTestSMReady ,activateTimeout,50) ) !shm->waitSMworking(sidTestSMReady ,activateTimeout,50) )
{ {
ostringstream err; ostringstream err;
err << myname err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение " << "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек"; << activateTimeout << " мсек";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -1345,15 +1292,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1345,15 +1292,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !readconf_ok && !ptAct.checkTime() ) while( !readconf_ok && !ptAct.checkTime() )
{ {
if( dlog.is_info() ) dinfo << myname << "(askSensors): wait read configuration..." << endl;
dlog.info() << myname << "(askSensors): wait read configuration..." << endl;
msleep(50); msleep(50);
if( readconf_ok ) if( readconf_ok )
break; break;
} }
if( !readconf_ok && dlog.is_crit() ) if( !readconf_ok )
dlog.crit() << myname << "(askSensors): ************* don`t read configuration?! ************" << endl; dcrit << myname << "(askSensors): ************* don`t read configuration?! ************" << endl;
try try
{ {
...@@ -1362,8 +1308,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1362,8 +1308,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(askSensors): " << ex << endl;
dlog.crit() << myname << "(askSensors): " << ex << endl;
} }
try try
...@@ -1373,8 +1318,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1373,8 +1318,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(askSensors): " << ex << endl;
dlog.crit() << myname << "(askSensors): " << ex << endl;
} }
for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it ) for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it )
...@@ -1396,8 +1340,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1396,8 +1340,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( Exception& ex) catch( Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(askSensors): " << ex << endl;
dlog.crit() << myname << "(askSensors): " << ex << endl;
} }
} }
} }
...@@ -1405,19 +1348,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -1405,19 +1348,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
{ {
if( dlog.is_level1() ) dlog1 << myname << "(sensorInfo): sm->id=" << sm->id
{
dlog.level1() << myname << "(sensorInfo): sm->id=" << sm->id
<< " val=" << sm->value << endl; << " val=" << sm->value << endl;
}
if( force_out ) if( force_out )
return; return;
if( sm->id == testLamp_S ) if( sm->id == testLamp_S )
{ {
if( dlog.is_info() ) dinfo << myname << "(sensorInfo): test_lamp=" << sm->value << endl;
dlog.info() << myname << "(sensorInfo): test_lamp=" << sm->value << endl;
isTestLamp = (bool)sm->value; isTestLamp = (bool)sm->value;
} }
else if( sm->id == testMode_as ) else if( sm->id == testMode_as )
...@@ -1430,12 +1368,9 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -1430,12 +1368,9 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
{ {
if( it->si.id == sm->id ) if( it->si.id == sm->id )
{ {
if( dlog.is_info() ) dinfo << myname << "(sensorInfo): sid=" << sm->id
{
dlog.info() << myname << "(sensorInfo): sid=" << sm->id
<< " value=" << sm->value << " value=" << sm->value
<< endl; << endl;
}
if( it->stype == UniversalIO::AO ) if( it->stype == UniversalIO::AO )
{ {
...@@ -1457,7 +1392,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -1457,7 +1392,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
delBlink(&(*it),lstBlink2); delBlink(&(*it),lstBlink2);
delBlink(&(*it),lstBlink3); delBlink(&(*it),lstBlink3);
break; break;
case lmpON: case lmpON:
delBlink(&(*it),lstBlink); delBlink(&(*it),lstBlink);
delBlink(&(*it),lstBlink2); delBlink(&(*it),lstBlink2);
...@@ -1496,7 +1431,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -1496,7 +1431,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
// (так комфортнее выглядит для оператора) // (так комфортнее выглядит для оператора)
if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel ) if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel )
break; break;
ComediInterface* card = cards.getCard(it->ncard); ComediInterface* card = cards.getCard(it->ncard);
if( card != NULL ) if( card != NULL )
...@@ -1516,7 +1451,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -1516,7 +1451,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
// (так комфортнее выглядит для оператора) // (так комфортнее выглядит для оператора)
if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel ) if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel )
break; break;
ComediInterface* card = cards.getCard(it->ncard); ComediInterface* card = cards.getCard(it->ncard);
if( card != NULL ) if( card != NULL )
...@@ -1532,17 +1467,14 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -1532,17 +1467,14 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
} }
else if( it->stype == UniversalIO::DO ) else if( it->stype == UniversalIO::DO )
{ {
if( dlog.is_level1() ) dlog1 << myname << "(sensorInfo): DO: sm->id=" << sm->id
{
dlog.level1() << myname << "(sensorInfo): DO: sm->id=" << sm->id
<< " val=" << sm->value << endl; << " val=" << sm->value << endl;
}
uniset_rwmutex_wrlock lock(it->val_lock); uniset_rwmutex_wrlock lock(it->val_lock);
it->value = sm->value ? 1:0; it->value = sm->value ? 1:0;
} }
break; break;
} }
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1559,8 +1491,7 @@ void IOControl::waitSM() ...@@ -1559,8 +1491,7 @@ void IOControl::waitSM()
err << myname << "(execute): did not wait for the ready 'SharedMemory'. Timeout " err << myname << "(execute): did not wait for the ready 'SharedMemory'. Timeout "
<< smReadyTimeout << " msec"; << smReadyTimeout << " msec";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -1570,16 +1501,14 @@ void IOControl::buildCardsList() ...@@ -1570,16 +1501,14 @@ void IOControl::buildCardsList()
xmlNode* nnode = conf->getXMLNodesSection(); xmlNode* nnode = conf->getXMLNodesSection();
if( !nnode ) if( !nnode )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildCardsList): <nodes> not found?!" << endl;
dlog.warn() << myname << "(buildCardsList): <nodes> not found?!" << endl;
return; return;
} }
UniXML* xml = conf->getConfXML(); UniXML* xml = conf->getConfXML();
if( !xml ) if( !xml )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildCardsList): xml=NULL?!" << endl;
dlog.warn() << myname << "(buildCardsList): xml=NULL?!" << endl;
return; return;
} }
...@@ -1597,27 +1526,24 @@ void IOControl::buildCardsList() ...@@ -1597,27 +1526,24 @@ void IOControl::buildCardsList()
if( !mynode ) if( !mynode )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildCardsList): node='" << conf->getLocalNodeName() << "' not found.." << endl;
dlog.warn() << myname << "(buildCardsList): node='" << conf->getLocalNodeName() << "' not found.." << endl;
return; return;
} }
//xmlNode* cnode = xml->findNode(mynode,"iocards",""); //xmlNode* cnode = xml->findNode(mynode,"iocards","");
//xmlNode* extFindNode(xmlNode* node, int depth, int width, const std::string searchnode, const std::string name = "", bool top=true ); //xmlNode* extFindNode(xmlNode* node, int depth, int width, const std::string searchnode, const std::string name = "", bool top=true );
xmlNode* cnode = xml->extFindNode(mynode,1,1,"iocards",""); xmlNode* cnode = xml->extFindNode(mynode,1,1,"iocards","");
if( !cnode ) if( !cnode )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildCardsList): Not found <iocards> for node=" << conf->getLocalNodeName() << "(" << conf->getLocalNode() << ")" << endl;
dlog.warn() << myname << "(buildCardsList): Not found <iocards> for node=" << conf->getLocalNodeName() << "(" << conf->getLocalNode() << ")" << endl;
return; return;
} }
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildCardsList): <iocards> empty.." << endl;
dlog.warn() << myname << "(buildCardsList): <iocards> empty.." << endl;
return; return;
} }
...@@ -1630,29 +1556,26 @@ void IOControl::buildCardsList() ...@@ -1630,29 +1556,26 @@ void IOControl::buildCardsList()
for( ; it.getCurrent(); it.goNext() ) for( ; it.getCurrent(); it.goNext() )
{ {
std::string cname(it.getProp("name")); std::string cname(it.getProp("name"));
int cardnum = it.getIntProp("card"); int cardnum = it.getIntProp("card");
if( cardnum <=0 ) if( cardnum <=0 )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(init): Unknown card number?! card=" << it.getIntProp("card") << "(" << cname << ")" << endl;
dlog.level3() << myname << "(init): Unknown card number?! card=" << it.getIntProp("card") << "(" << cname << ")" << endl;
continue; continue;
} }
if( cardnum > maxCardNum ) if( cardnum > maxCardNum )
{ {
if( dlog.is_level3() ) dlog3 << myname << "(init): BAD card number card='" << it.getIntProp("card") << "'(" << cname << "). Must be < " << maxCardNum << endl;
dlog.level3() << myname << "(init): BAD card number card='" << it.getIntProp("card") << "'(" << cname << "). Must be < " << maxCardNum << endl;
continue; continue;
} }
if( it.getIntProp("ignore") ) if( it.getIntProp("ignore") )
{ {
cards[cardnum] = NULL; cards[cardnum] = NULL;
if( dlog.is_level3() ) dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! ignore=1" << endl; << " DISABLED! ignore=1" << endl;
continue; continue;
} }
...@@ -1660,11 +1583,10 @@ void IOControl::buildCardsList() ...@@ -1660,11 +1583,10 @@ void IOControl::buildCardsList()
stringstream s; stringstream s;
s << "--" << prefix << "-card" << cardnum << "-ignore"; s << "--" << prefix << "-card" << cardnum << "-ignore";
if( findArgParam( s.str(), conf->getArgc(), conf->getArgv()) != -1 ) if( findArgParam( s.str(), conf->getArgc(), conf->getArgv()) != -1 )
{ {
cards[cardnum] = NULL; cards[cardnum] = NULL;
if( dlog.is_level3() ) dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! (" << s.str() << ")" << endl; << " DISABLED! (" << s.str() << ")" << endl;
continue; continue;
} }
...@@ -1674,15 +1596,13 @@ void IOControl::buildCardsList() ...@@ -1674,15 +1596,13 @@ void IOControl::buildCardsList()
if( iodev.empty() || iodev == "/dev/null" ) if( iodev.empty() || iodev == "/dev/null" )
{ {
cards[cardnum] = NULL; cards[cardnum] = NULL;
if( dlog.is_level3() ) dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")" << " DISABLED! iodev='"
<< " DISABLED! iodev='"
<< iodev << "'" << endl; << iodev << "'" << endl;
continue; continue;
} }
if( dlog.is_level3() ) dlog3 << myname << "(init): ADD card=" << it.getProp("card") << "(" << cname << ")" << " dev=" << iodev << endl;
dlog.level3() << myname << "(init): ADD card=" << it.getProp("card") << "(" << cname << ")" << " dev=" << iodev << endl;
try try
{ {
...@@ -1691,8 +1611,7 @@ void IOControl::buildCardsList() ...@@ -1691,8 +1611,7 @@ void IOControl::buildCardsList()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(buildCardsList): " << ex << endl;
dlog.crit() << myname << "(buildCardsList): " << ex << endl;
throw; throw;
} }
...@@ -1710,18 +1629,17 @@ void IOControl::buildCardsList() ...@@ -1710,18 +1629,17 @@ void IOControl::buildCardsList()
int k = 4; int k = 4;
if( cname == "UNIO48" ) if( cname == "UNIO48" )
k = 2; k = 2;
// инициализация subdev-ов // инициализация subdev-ов
for( int i=1; i<=k; i++ ) for( int i=1; i<=k; i++ )
{ {
ostringstream s; ostringstream s;
s << "subdev" << i; s << "subdev" << i;
string subdev_name( it.getProp(s.str()) ); string subdev_name( it.getProp(s.str()) );
if( subdev_name.empty() ) if( subdev_name.empty() )
{ {
if( dlog.is_info() ) dinfo << myname << "(buidCardList): empty subdev. ignore... (" << s.str() << ")" << endl;
dlog.info() << myname << "(buidCardList): empty subdev. ignore... (" << s.str() << ")" << endl;
continue; continue;
} }
...@@ -1737,15 +1655,13 @@ void IOControl::buildCardsList() ...@@ -1737,15 +1655,13 @@ void IOControl::buildCardsList()
if( st == ComediInterface::GRAYHILL ) if( st == ComediInterface::GRAYHILL )
{ {
// для Grayhill конфигурирование не требуется // для Grayhill конфигурирование не требуется
if( dlog.is_info() ) dinfo << myname << "(buildCardsList): card=" << it.getProp("card")
dlog.info() << myname << "(buildCardsList): card=" << it.getProp("card")
<< "(" << cname << ")" << "(" << cname << ")"
<< " init subdev" << i << " 'GRAYHILL'" << endl; << " init subdev" << i << " 'GRAYHILL'" << endl;
continue; continue;
} }
if( dlog.is_info() ) dinfo << myname << "(buildCardsList): card=" << it.getProp("card")
dlog.info() << myname << "(buildCardsList): card=" << it.getProp("card")
<< "(" << cname << ")" << "(" << cname << ")"
<< " init subdev" << i << " " << it.getProp(s.str()) << endl; << " init subdev" << i << " " << it.getProp(s.str()) << endl;
cards[cardnum]->configureSubdev(i-1,st); cards[cardnum]->configureSubdev(i-1,st);
......
...@@ -48,7 +48,7 @@ int main(int argc, const char **argv) ...@@ -48,7 +48,7 @@ int main(int argc, const char **argv)
IOControl* ic = IOControl::init_iocontrol(argc,argv,shmID); IOControl* ic = IOControl::init_iocontrol(argc,argv,shmID);
if( !ic ) if( !ic )
{ {
dlog.crit() << "(iocontrol): init не прошёл..." << endl; dcrit << "(iocontrol): init не прошёл..." << endl;
return 1; return 1;
} }
...@@ -69,15 +69,15 @@ int main(int argc, const char **argv) ...@@ -69,15 +69,15 @@ int main(int argc, const char **argv)
} }
catch(SystemError& err) catch(SystemError& err)
{ {
dlog.crit() << "(iocontrol): " << err << endl; dcrit << "(iocontrol): " << err << endl;
} }
catch(Exception& ex) catch(Exception& ex)
{ {
dlog.crit() << "(iocontrol): " << ex << endl; dcrit << "(iocontrol): " << ex << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(iocontrol): catch(...)" << endl; dcrit << "(iocontrol): catch(...)" << endl;
} }
return 1; return 1;
......
...@@ -35,15 +35,15 @@ void LProcessor::execute( const string& lfile ) ...@@ -35,15 +35,15 @@ void LProcessor::execute( const string& lfile )
} }
catch( LogicException& ex ) catch( LogicException& ex )
{ {
dlog.crit() << logname << "(execute): " << ex << endl; dcrit << logname << "(execute): " << ex << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << logname << "(execute): " << ex << endl; dcrit << logname << "(execute): " << ex << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << logname << "(execute): catch...\n"; dcrit << logname << "(execute): catch...\n";
} }
msleep(sleepTime); msleep(sleepTime);
} }
...@@ -54,12 +54,12 @@ void LProcessor::step() ...@@ -54,12 +54,12 @@ void LProcessor::step()
getInputs(); getInputs();
processing(); processing();
setOuts(); setOuts();
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void LProcessor::build( const string& lfile ) void LProcessor::build( const string& lfile )
{ {
sch.read(lfile); sch.read(lfile);
// составляем карту внешних входов // составляем карту внешних входов
// считая, что в поле name записано название датчика // считая, что в поле name записано название датчика
for( Schema::EXTiterator it=sch.extBegin(); it!=sch.extEnd(); ++it ) for( Schema::EXTiterator it=sch.extBegin(); it!=sch.extEnd(); ++it )
...@@ -67,7 +67,7 @@ void LProcessor::build( const string& lfile ) ...@@ -67,7 +67,7 @@ void LProcessor::build( const string& lfile )
UniSetTypes::ObjectId sid = conf->getSensorID(it->name); UniSetTypes::ObjectId sid = conf->getSensorID(it->name);
if( sid == DefaultObjectId ) if( sid == DefaultObjectId )
{ {
dlog.crit() << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ДАТЧИКА: " << it->name << endl; dcrit << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ДАТЧИКА: " << it->name << endl;
continue; continue;
} }
...@@ -78,18 +78,18 @@ void LProcessor::build( const string& lfile ) ...@@ -78,18 +78,18 @@ void LProcessor::build( const string& lfile )
ei.iotype = conf->getIOType(sid); ei.iotype = conf->getIOType(sid);
if( ei.iotype == UniversalIO::UnknownIOType ) if( ei.iotype == UniversalIO::UnknownIOType )
{ {
dlog.crit() << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl; dcrit << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl;
continue; continue;
} }
extInputs.push_front(ei); extInputs.push_front(ei);
} }
for( Schema::OUTiterator it=sch.outBegin(); it!=sch.outEnd(); ++it ) for( Schema::OUTiterator it=sch.outBegin(); it!=sch.outEnd(); ++it )
{ {
UniSetTypes::ObjectId sid = conf->getSensorID(it->name); UniSetTypes::ObjectId sid = conf->getSensorID(it->name);
if( sid == DefaultObjectId ) if( sid == DefaultObjectId )
{ {
dlog.crit() << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ВЫХОДА: " << it->name << endl; dcrit << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ВЫХОДА: " << it->name << endl;
continue; continue;
} }
...@@ -99,13 +99,13 @@ void LProcessor::build( const string& lfile ) ...@@ -99,13 +99,13 @@ void LProcessor::build( const string& lfile )
ei.iotype = conf->getIOType(sid); ei.iotype = conf->getIOType(sid);
if( ei.iotype == UniversalIO::UnknownIOType ) if( ei.iotype == UniversalIO::UnknownIOType )
{ {
dlog.crit() << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl; dcrit << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl;
continue; continue;
} }
extOuts.push_front(ei); extOuts.push_front(ei);
} }
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
/*! /*!
...@@ -147,11 +147,11 @@ void LProcessor::setOuts() ...@@ -147,11 +147,11 @@ void LProcessor::setOuts()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(LProcessor::setOuts): " << ex << endl; dcrit << "(LProcessor::setOuts): " << ex << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(LProcessor::setOuts): catch...\n"; dcrit << "(LProcessor::setOuts): catch...\n";
} }
} }
} }
......
...@@ -24,8 +24,7 @@ PassiveLProcessor::PassiveLProcessor( std::string lfile, UniSetTypes::ObjectId o ...@@ -24,8 +24,7 @@ PassiveLProcessor::PassiveLProcessor( std::string lfile, UniSetTypes::ObjectId o
{ {
ostringstream err; ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart; err << myname << ": ID not found ('HeartBeat') for " << heart;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -52,8 +51,7 @@ void PassiveLProcessor::step() ...@@ -52,8 +51,7 @@ void PassiveLProcessor::step()
} }
catch(Exception& ex ) catch(Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(step): (hb) " << ex << std::endl;
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
} }
if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() ) if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
...@@ -65,8 +63,7 @@ void PassiveLProcessor::step() ...@@ -65,8 +63,7 @@ void PassiveLProcessor::step()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(step): (hb) " << ex << std::endl;
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
} }
} }
...@@ -86,8 +83,7 @@ void PassiveLProcessor::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -86,8 +83,7 @@ void PassiveLProcessor::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(askSensors): " << ex << endl;
dlog.crit() << myname << "(askSensors): " << ex << endl;
throw SystemError(myname +"(askSensors): do not ask sensors" ); throw SystemError(myname +"(askSensors): do not ask sensors" );
} }
} }
...@@ -115,8 +111,7 @@ void PassiveLProcessor::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -115,8 +111,7 @@ void PassiveLProcessor::sysCommand( UniSetTypes::SystemMessage *sm )
{ {
if( !shm->waitSMready(smReadyTimeout) ) if( !shm->waitSMready(smReadyTimeout) )
{ {
if( dlog.is_crit() ) dcrit << myname << "(ERR): SM not ready. Terminated... " << endl;
dlog.crit() << myname << "(ERR): SM not ready. Terminated... " << endl;
raise(SIGTERM); raise(SIGTERM);
return; return;
} }
...@@ -202,11 +197,11 @@ void PassiveLProcessor::setOuts() ...@@ -202,11 +197,11 @@ void PassiveLProcessor::setOuts()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << myname << "(setOuts): " << ex << endl; dcrit << myname << "(setOuts): " << ex << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << myname << "(setOuts): catch...\n"; dcrit << myname << "(setOuts): catch...\n";
} }
} }
} }
...@@ -221,11 +216,11 @@ void PassiveLProcessor::sigterm( int signo ) ...@@ -221,11 +216,11 @@ void PassiveLProcessor::sigterm( int signo )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << myname << "(sigterm): " << ex << endl; dcrit << myname << "(sigterm): " << ex << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << myname << "(sigterm): catch...\n"; dcrit << myname << "(sigterm): catch...\n";
} }
} }
} }
...@@ -263,7 +258,7 @@ void PassiveLProcessor::processingMessage( UniSetTypes::VoidMessage* msg ) ...@@ -263,7 +258,7 @@ void PassiveLProcessor::processingMessage( UniSetTypes::VoidMessage* msg )
} }
catch(Exception& ex) catch(Exception& ex)
{ {
dlog.crit() << myname << "(processingMessage): " << ex << endl; dcrit << myname << "(processingMessage): " << ex << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -110,8 +110,7 @@ void Schema::extlink( const string& name, Element::ElementID childID, int numIn ...@@ -110,8 +110,7 @@ void Schema::extlink( const string& name, Element::ElementID childID, int numIn
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
Element* Schema::manage( Element* el ) Element* Schema::manage( Element* el )
{ {
if( dlog.is_info() ) dinfo << "Schema: manage new element id=" << el->getId()
dlog.info() << "Schema: manage new element id=" << el->getId()
<< " type=" << el->getType() << " type=" << el->getType()
<< " inputs=" << el->inCount() << endl; << " inputs=" << el->inCount() << endl;
......
...@@ -23,8 +23,8 @@ void TAND::setIn( int num, bool state ) ...@@ -23,8 +23,8 @@ void TAND::setIn( int num, bool state )
{ {
if( it->state == state ) if( it->state == state )
return; // вход не менялся можно вообще прервать проверку return; // вход не менялся можно вообще прервать проверку
it->state = state; it->state = state;
break; break;
} }
} }
...@@ -47,8 +47,7 @@ void TAND::setIn( int num, bool state ) ...@@ -47,8 +47,7 @@ void TAND::setIn( int num, bool state )
if( !brk ) if( !brk )
myout = true; myout = true;
if( dlog.is_info() ) dinfo << this << ": myout " << myout << endl;
dlog.info() << this << ": myout " << myout << endl;
if( prev != myout ) if( prev != myout )
Element::setChildOut(); Element::setChildOut();
......
...@@ -30,8 +30,7 @@ void TDelay::setIn( int num, bool state ) ...@@ -30,8 +30,7 @@ void TDelay::setIn( int num, bool state )
{ {
pt.setTiming(0); // reset timer pt.setTiming(0); // reset timer
myout = false; myout = false;
if( dlog.is_info() ) dinfo << this << ": set " << myout << endl;
dlog.info() << this << ": set " << myout << endl;
if( prev != myout ) if( prev != myout )
Element::setChildOut(); Element::setChildOut();
return; return;
...@@ -44,8 +43,7 @@ void TDelay::setIn( int num, bool state ) ...@@ -44,8 +43,7 @@ void TDelay::setIn( int num, bool state )
{ {
pt.setTiming(0); // reset timer pt.setTiming(0); // reset timer
myout = true; myout = true;
if( dlog.is_info() ) dinfo << this << ": set " << myout << endl;
dlog.info() << this << ": set " << myout << endl;
if( prev != myout ) if( prev != myout )
Element::setChildOut(); Element::setChildOut();
return; return;
...@@ -54,8 +52,7 @@ void TDelay::setIn( int num, bool state ) ...@@ -54,8 +52,7 @@ void TDelay::setIn( int num, bool state )
// засекаем, если ещё не установлен таймер // засекаем, если ещё не установлен таймер
if( !myout && !prev ) // т.е. !myout && prev != myout if( !myout && !prev ) // т.е. !myout && prev != myout
{ {
if( dlog.is_info() ) dinfo << this << ": set timer " << delay << " [msec]" << endl;
dlog.info() << this << ": set timer " << delay << " [msec]" << endl;
pt.setTiming(delay); pt.setTiming(delay);
} }
} }
...@@ -66,15 +63,14 @@ void TDelay::tick() ...@@ -66,15 +63,14 @@ void TDelay::tick()
{ {
myout = true; myout = true;
pt.setTiming(0); // reset timer pt.setTiming(0); // reset timer
if( dlog.is_info() ) dinfo << getType() << "(" << myid << "): TIMER!!!! myout=" << myout << endl;
dlog.info() << getType() << "(" << myid << "): TIMER!!!! myout=" << myout << endl;
Element::setChildOut(); Element::setChildOut();
} }
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
bool TDelay::getOut() bool TDelay::getOut()
{ {
return myout; return myout;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void TDelay::setDelay( int timeMS ) void TDelay::setDelay( int timeMS )
......
...@@ -22,9 +22,6 @@ void TNOT::setIn( int num, bool state ) ...@@ -22,9 +22,6 @@ void TNOT::setIn( int num, bool state )
bool prev = myout; bool prev = myout;
myout = !state; myout = !state;
if( dlog.is_info() )
dlog.info() << this << ": myout " << myout << endl;
if( prev != myout ) if( prev != myout )
Element::setChildOut(); Element::setChildOut();
} }
......
...@@ -29,15 +29,15 @@ TOR::~TOR() ...@@ -29,15 +29,15 @@ TOR::~TOR()
void TOR::setIn( int num, bool state ) void TOR::setIn( int num, bool state )
{ {
// cout << getType() << "(" << myid << "): input " << num << " set " << state << endl; // cout << getType() << "(" << myid << "): input " << num << " set " << state << endl;
for( InputList::iterator it=ins.begin(); it!=ins.end(); ++it ) for( InputList::iterator it=ins.begin(); it!=ins.end(); ++it )
{ {
if( it->num == num ) if( it->num == num )
{ {
if( it->state == state ) if( it->state == state )
return; // вход не менялся можно вообще прервать проверку return; // вход не менялся можно вообще прервать проверку
it->state = state; it->state = state;
break; break;
} }
} }
...@@ -60,8 +60,7 @@ void TOR::setIn( int num, bool state ) ...@@ -60,8 +60,7 @@ void TOR::setIn( int num, bool state )
if( !brk ) if( !brk )
myout = false; myout = false;
if( dlog.is_info() ) dinfo << this << ": myout " << myout << endl;
dlog.info() << this << ": myout " << myout << endl;
if( prev != myout ) if( prev != myout )
Element::setChildOut(); Element::setChildOut();
} }
......
...@@ -29,7 +29,7 @@ int main(int argc, const char **argv) ...@@ -29,7 +29,7 @@ int main(int argc, const char **argv)
string schema = conf->getArgParam("--schema"); string schema = conf->getArgParam("--schema");
if( schema.empty() ) if( schema.empty() )
{ {
dlog.crit() << "schema-file not defined. Use --schema" << endl; dcrit << "schema-file not defined. Use --schema" << endl;
return 1; return 1;
} }
......
...@@ -52,9 +52,8 @@ pollActivated(false) ...@@ -52,9 +52,8 @@ pollActivated(false)
// определяем фильтр // определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field"); s_field = conf->getArgParam("--" + prefix + "-filter-field");
s_fvalue = conf->getArgParam("--" + prefix + "-filter-value"); s_fvalue = conf->getArgParam("--" + prefix + "-filter-value");
if( dlog.is_info() ) dinfo << myname << "(init): read fileter-field='" << s_field
dlog.info() << myname << "(init): read fileter-field='" << s_field << "' filter-value='" << s_fvalue << "'" << endl;
<< "' filter-value='" << s_fvalue << "'" << endl;
stat_time = conf->getArgPInt("--" + prefix + "-statistic-sec",it.getProp("statistic_sec"),0); stat_time = conf->getArgPInt("--" + prefix + "-statistic-sec",it.getProp("statistic_sec"),0);
if( stat_time > 0 ) if( stat_time > 0 )
...@@ -76,7 +75,7 @@ pollActivated(false) ...@@ -76,7 +75,7 @@ pollActivated(false)
noQueryOptimization = conf->getArgInt("--" + prefix + "-no-query-optimization",it.getProp("no_query_optimization")); noQueryOptimization = conf->getArgInt("--" + prefix + "-no-query-optimization",it.getProp("no_query_optimization"));
mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id",it.getProp("reg_from_id")); mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id",it.getProp("reg_from_id"));
dlog.info() << myname << "(init): mbregFromID=" << mbregFromID << endl; dinfo << myname << "(init): mbregFromID=" << mbregFromID << endl;
polltime = conf->getArgPInt("--" + prefix + "-polltime",it.getProp("polltime"), 100); polltime = conf->getArgPInt("--" + prefix + "-polltime",it.getProp("polltime"), 100);
...@@ -97,8 +96,7 @@ pollActivated(false) ...@@ -97,8 +96,7 @@ pollActivated(false)
{ {
ostringstream err; ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart; err << myname << ": ID not found ('HeartBeat') for " << heart;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -118,13 +116,12 @@ pollActivated(false) ...@@ -118,13 +116,12 @@ pollActivated(false)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found..."; err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
dlog.info() << myname << "(init): test_id=" << test_id << endl; dinfo << myname << "(init): test_id=" << test_id << endl;
string emode = conf->getArgParam("--" + prefix + "-exchange-mode-id",it.getProp("exchangeModeID")); string emode = conf->getArgParam("--" + prefix + "-exchange-mode-id",it.getProp("exchangeModeID"));
if( !emode.empty() ) if( !emode.empty() )
...@@ -134,8 +131,7 @@ pollActivated(false) ...@@ -134,8 +131,7 @@ pollActivated(false)
{ {
ostringstream err; ostringstream err;
err << myname << ": ID not found ('ExchangeMode') for " << emode; err << myname << ": ID not found ('ExchangeMode') for " << emode;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -200,8 +196,7 @@ void MBExchange::waitSMReady() ...@@ -200,8 +196,7 @@ void MBExchange::waitSMReady()
{ {
ostringstream err; ostringstream err;
err << myname << "(waitSMReady): failed waiting SharedMemory " << ready_timeout << " msec"; err << myname << "(waitSMReady): failed waiting SharedMemory " << ready_timeout << " msec";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -222,8 +217,7 @@ void MBExchange::step() ...@@ -222,8 +217,7 @@ void MBExchange::step()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(step): (hb) " << ex << std::endl;
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
} }
} }
} }
...@@ -243,8 +237,7 @@ void MBExchange::setProcActive( bool st ) ...@@ -243,8 +237,7 @@ void MBExchange::setProcActive( bool st )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void MBExchange::sigterm( int signo ) void MBExchange::sigterm( int signo )
{ {
if( dlog.is_warn() ) dwarn << myname << ": ********* SIGTERM(" << signo << ") ********" << endl;
dlog.warn() << myname << ": ********* SIGTERM(" << signo << ") ********" << endl;
setProcActive(false); setProcActive(false);
UniSetObject_LT::sigterm(signo); UniSetObject_LT::sigterm(signo);
} }
...@@ -263,8 +256,7 @@ void MBExchange::readConfiguration() ...@@ -263,8 +256,7 @@ void MBExchange::readConfiguration()
UniXML_iterator it(root); UniXML_iterator it(root);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
dlog.crit() << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
return; return;
} }
...@@ -273,7 +265,7 @@ void MBExchange::readConfiguration() ...@@ -273,7 +265,7 @@ void MBExchange::readConfiguration()
if( UniSetTypes::check_filter(it,s_field,s_fvalue) ) if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initItem(it); initItem(it);
} }
// readconf_ok = true; // readconf_ok = true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -326,32 +318,28 @@ bool MBExchange::checkUpdateSM( bool wrFunc, long mdev ) ...@@ -326,32 +318,28 @@ bool MBExchange::checkUpdateSM( bool wrFunc, long mdev )
if( wrFunc ) if( wrFunc )
return true; // данные для посылки, должны обновляться всегда (чтобы быть актуальными) return true; // данные для посылки, должны обновляться всегда (чтобы быть актуальными)
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << "(checkUpdateSM):"
dlog[Debug::LEVEL3] << "(checkUpdateSM):" << " skip... mode='emSkipExchange' " << endl;
<< " skip... mode='emSkipExchange' " << endl;
return false; return false;
} }
if( wrFunc && (exchangeMode == emReadOnly || mdev == emReadOnly) ) if( wrFunc && (exchangeMode == emReadOnly || mdev == emReadOnly) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << "(checkUpdateSM):"
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
<< " skip... mode='emReadOnly' " << endl; << " skip... mode='emReadOnly' " << endl;
return false; return false;
} }
if( !wrFunc && (exchangeMode == emWriteOnly || mdev == emWriteOnly) ) if( !wrFunc && (exchangeMode == emWriteOnly || mdev == emWriteOnly) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << "(checkUpdateSM):"
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
<< " skip... mode='emWriteOnly' " << endl; << " skip... mode='emWriteOnly' " << endl;
return false; return false;
} }
if( wrFunc && (exchangeMode == emSkipSaveToSM || mdev == emSkipSaveToSM) ) if( wrFunc && (exchangeMode == emSkipSaveToSM || mdev == emSkipSaveToSM) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << "(checkUpdateSM):"
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
<< " skip... mode='emSkipSaveToSM' " << endl; << " skip... mode='emSkipSaveToSM' " << endl;
return false; return false;
} }
...@@ -363,16 +351,13 @@ bool MBExchange::checkPoll( bool wrFunc ) ...@@ -363,16 +351,13 @@ bool MBExchange::checkPoll( bool wrFunc )
{ {
if( exchangeMode == emWriteOnly && !wrFunc ) if( exchangeMode == emWriteOnly && !wrFunc )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(checkPoll): skip.. mode='emWriteOnly'" << endl;
dlog[Debug::LEVEL3] << myname << "(checkPoll): skip.. mode='emWriteOnly'" << endl;
return false; return false;
} }
if( exchangeMode == emReadOnly && wrFunc ) if( exchangeMode == emReadOnly && wrFunc )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(checkPoll): skip.. poll mode='emReadOnly'" << endl;
dlog[Debug::LEVEL3] << myname << "(checkPoll): skip.. poll mode='emReadOnly'" << endl;
return false; return false;
} }
...@@ -461,12 +446,12 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m ) ...@@ -461,12 +446,12 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m )
if( noQueryOptimization ) if( noQueryOptimization )
return; return;
dlog.info() << myname << "(rtuQueryOptimization): optimization..." << endl; dinfo << myname << "(rtuQueryOptimization): optimization..." << endl;
for( MBExchange::RTUDeviceMap::iterator it1=m.begin(); it1!=m.end(); ++it1 ) for( MBExchange::RTUDeviceMap::iterator it1=m.begin(); it1!=m.end(); ++it1 )
{ {
RTUDevice* d(it1->second); RTUDevice* d(it1->second);
// Вообще в map они уже лежат в нужном порядке, т.е. функция genRegID() гарантирует // Вообще в map они уже лежат в нужном порядке, т.е. функция genRegID() гарантирует
// что регистры идущие подряд с одниковой функцией чтения/записи получат подряд идущие ID. // что регистры идущие подряд с одниковой функцией чтения/записи получат подряд идущие ID.
// так что оптимтизация это просто нахождение мест где id идут не подряд... // так что оптимтизация это просто нахождение мест где id идут не подряд...
...@@ -498,19 +483,17 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m ) ...@@ -498,19 +483,17 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m )
// check correct function... // check correct function...
if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnWriteOutputSingleRegister ) if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnWriteOutputSingleRegister )
{ {
if( dlog.is_warn() ) dwarn << myname << "(rtuQueryOptimization): "
dlog.warn() << myname << "(rtuQueryOptimization): "
<< " optimization change func=" << ModbusRTU::fnWriteOutputSingleRegister << " optimization change func=" << ModbusRTU::fnWriteOutputSingleRegister
<< " <--> func=" << ModbusRTU::fnWriteOutputRegisters << " <--> func=" << ModbusRTU::fnWriteOutputRegisters
<< " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr) << " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
<< " mbreg=" << ModbusRTU::dat2str(beg->second->mbreg); << " mbreg=" << ModbusRTU::dat2str(beg->second->mbreg);
beg->second->mbfunc = ModbusRTU::fnWriteOutputRegisters; beg->second->mbfunc = ModbusRTU::fnWriteOutputRegisters;
} }
else if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnForceSingleCoil ) else if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnForceSingleCoil )
{ {
if( dlog.is_warn() ) dwarn << myname << "(rtuQueryOptimization): "
dlog.warn() << myname << "(rtuQueryOptimization): "
<< " optimization change func=" << ModbusRTU::fnForceSingleCoil << " optimization change func=" << ModbusRTU::fnForceSingleCoil
<< " <--> func=" << ModbusRTU::fnForceMultipleCoils << " <--> func=" << ModbusRTU::fnForceMultipleCoils
<< " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr) << " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
...@@ -550,12 +533,9 @@ void MBExchange::firstInitRegisters() ...@@ -550,12 +533,9 @@ void MBExchange::firstInitRegisters()
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
allInitOK = false; allInitOK = false;
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(preInitRead): FAILED ask addr=" << ModbusRTU::addr2str(it->dev->mbaddr)
{
dlog[Debug::LEVEL3] << myname << "(preInitRead): FAILED ask addr=" << ModbusRTU::addr2str(it->dev->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->mbreg) << " reg=" << ModbusRTU::dat2str(it->mbreg)
<< " err: " << ex << endl; << " err: " << ex << endl;
}
if( !it->dev->ask_every_reg ) if( !it->dev->ask_every_reg )
break; break;
...@@ -571,9 +551,9 @@ bool MBExchange::preInitRead( InitList::iterator& p ) ...@@ -571,9 +551,9 @@ bool MBExchange::preInitRead( InitList::iterator& p )
RTUDevice* dev = p->dev; RTUDevice* dev = p->dev;
int q_count = p->p.rnum; int q_count = p->p.rnum;
if( dlog.debugging(Debug::LEVEL3) ) if( dlog.is_level3() )
{ {
dlog[Debug::LEVEL3] << myname << "(preInitRead): poll " dlog3 << myname << "(preInitRead): poll "
<< " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr) << " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr)
<< " mbreg=" << ModbusRTU::dat2str(p->mbreg) << " mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " mbfunc=" << p->mbfunc << " mbfunc=" << p->mbfunc
...@@ -582,7 +562,7 @@ bool MBExchange::preInitRead( InitList::iterator& p ) ...@@ -582,7 +562,7 @@ bool MBExchange::preInitRead( InitList::iterator& p )
if( q_count > ModbusRTU::MAXDATALEN ) if( q_count > ModbusRTU::MAXDATALEN )
{ {
dlog[Debug::LEVEL3] << myname << "(preInitRead): count(" << q_count dlog3 << myname << "(preInitRead): count(" << q_count
<< ") > MAXDATALEN(" << ModbusRTU::MAXDATALEN << ") > MAXDATALEN(" << ModbusRTU::MAXDATALEN
<< " ..ignore..." << " ..ignore..."
<< endl; << endl;
...@@ -685,8 +665,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty ...@@ -685,8 +665,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
return true; return true;
} }
if( dlog.is_crit() ) dcrit << myname << "(initSMValue): IGNORE item: rnum=" << p->rnum
dlog.crit() << myname << "(initSMValue): IGNORE item: rnum=" << p->rnum
<< " > 1 ?!! for id=" << p->si.id << endl; << " > 1 ?!! for id=" << p->si.id << endl;
return false; return false;
...@@ -719,8 +698,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty ...@@ -719,8 +698,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
{ {
if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize ) if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initSMValue): IGNORE item: sid=" << ModbusRTU::dat2str(p->si.id)
dlog.crit() << myname << "(initSMValue): IGNORE item: sid=" << ModbusRTU::dat2str(p->si.id)
<< " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl; << " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl;
return false; return false;
} }
...@@ -754,34 +732,28 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty ...@@ -754,34 +732,28 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(initSMValue):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(initSMValue):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(initSMValue): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(initSMValue): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(initSMValue): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(initSMValue): catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(initSMValue): catch ..." << endl;
} }
return false; return false;
...@@ -793,8 +765,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -793,8 +765,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( dev->mode == emSkipExchange ) if( dev->mode == emSkipExchange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(pollRTU): SKIP EXCHANGE (mode=emSkipExchange) "
dlog[Debug::LEVEL3] << myname << "(pollRTU): SKIP EXCHANGE (mode=emSkipExchange) "
<< " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr) << " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr)
<< endl; << endl;
return true; return true;
...@@ -802,7 +773,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -802,7 +773,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( dlog.debugging(Debug::LEVEL3) ) if( dlog.debugging(Debug::LEVEL3) )
{ {
dlog[Debug::LEVEL3] << myname << "(pollRTU): poll " dlog3 << myname << "(pollRTU): poll "
<< " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr) << " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr)
<< " mbreg=" << ModbusRTU::dat2str(p->mbreg) << " mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " mbfunc=" << p->mbfunc << " mbfunc=" << p->mbfunc
...@@ -811,14 +782,13 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -811,14 +782,13 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
<< " sm_initOK=" << p->sm_initOK << " sm_initOK=" << p->sm_initOK
<< " mbval=" << p->mbval << " mbval=" << p->mbval
<< endl; << endl;
if( p->q_count > ModbusRTU::MAXDATALEN ) if( p->q_count > ModbusRTU::MAXDATALEN )
{ {
dlog[Debug::LEVEL3] << myname << "(pollRTU): count(" << p->q_count dlog3 << myname << "(pollRTU): count(" << p->q_count
<< ") > MAXDATALEN(" << ModbusRTU::MAXDATALEN << ") > MAXDATALEN(" << ModbusRTU::MAXDATALEN
<< " ..ignore..." << " ..ignore..."
<< endl; << endl;
} }
} }
...@@ -827,12 +797,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -827,12 +797,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( p->q_count == 0 ) if( p->q_count == 0 )
{ {
if( dlog.is_info() ) dinfo << myname << "(pollRTU): q_count=0 for mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog.info() << myname << "(pollRTU): q_count=0 for mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE register..." << endl; << " IGNORE register..." << endl;
return false; return false;
} }
switch( p->mbfunc ) switch( p->mbfunc )
{ {
case ModbusRTU::fnReadInputRegisters: case ModbusRTU::fnReadInputRegisters:
...@@ -880,21 +849,19 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -880,21 +849,19 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
it--; it--;
} }
break; break;
case ModbusRTU::fnWriteOutputSingleRegister: case ModbusRTU::fnWriteOutputSingleRegister:
{ {
if( p->q_count != 1 ) if( p->q_count != 1 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog.crit() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE WRITE SINGLE REGISTER (0x06) q_count=" << p->q_count << " ..." << endl; << " IGNORE WRITE SINGLE REGISTER (0x06) q_count=" << p->q_count << " ..." << endl;
return false; return false;
} }
if( !p->sm_initOK ) if( !p->sm_initOK )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " slist=" << (*p) << " slist=" << (*p)
<< " IGNORE...(sm_initOK=false)" << endl; << " IGNORE...(sm_initOK=false)" << endl;
return true; return true;
...@@ -917,20 +884,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -917,20 +884,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
// и его просто надо пропустить.. // и его просто надо пропустить..
if( p->q_num > 1 ) if( p->q_num > 1 )
return true; return true;
// смещаем итератор, если данный запрос содержит много регистров dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
// if( q->count > 1 )
// {
// for( int i=0; i<p->q_count; i++ )
// it++;
// return true;
// }
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl; << " IGNORE...(sm_initOK=false)" << endl;
return true; return true;
} }
ModbusRTU::WriteOutputMessage msg(dev->mbaddr,p->mbreg); ModbusRTU::WriteOutputMessage msg(dev->mbaddr,p->mbreg);
for( int i=0; i<p->q_count; i++,it++ ) for( int i=0; i<p->q_count; i++,it++ )
...@@ -945,20 +903,17 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -945,20 +903,17 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{ {
if( p->q_count != 1 ) if( p->q_count != 1 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog.crit() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE FORCE SINGLE COIL (0x05) q_count=" << p->q_count << " ..." << endl; << " IGNORE FORCE SINGLE COIL (0x05) q_count=" << p->q_count << " ..." << endl;
return false; return false;
} }
if( !p->sm_initOK ) if( !p->sm_initOK )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl; << " IGNORE...(sm_initOK=false)" << endl;
return true; return true;
} }
// cerr << "****(coil) mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl;
ModbusRTU::ForceSingleCoilRetMessage ret = mb->write05(dev->mbaddr,p->mbreg,p->mbval); ModbusRTU::ForceSingleCoilRetMessage ret = mb->write05(dev->mbaddr,p->mbreg,p->mbval);
} }
break; break;
...@@ -967,32 +922,29 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it ) ...@@ -967,32 +922,29 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{ {
if( !p->sm_initOK ) if( !p->sm_initOK )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl; << " IGNORE...(sm_initOK=false)" << endl;
return true; return true;
} }
ModbusRTU::ForceCoilsMessage msg(dev->mbaddr,p->mbreg); ModbusRTU::ForceCoilsMessage msg(dev->mbaddr,p->mbreg);
for( int i=0; i<p->q_count; i++,it++ ) for( int i=0; i<p->q_count; i++,it++ )
msg.addBit( (it->second->mbval ? true : false) ); msg.addBit( (it->second->mbval ? true : false) );
it--; it--;
// cerr << "*********** (write multiple): " << msg << endl;
ModbusRTU::ForceCoilsRetMessage ret = mb->write0F(msg); ModbusRTU::ForceCoilsRetMessage ret = mb->write0F(msg);
} }
break; break;
default: default:
{ {
if( dlog.is_warn() ) dwarn << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog.warn() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE mfunc=" << (int)p->mbfunc << " ..." << endl; << " IGNORE mfunc=" << (int)p->mbfunc << " ..." << endl;
return false; return false;
} }
break; break;
} }
return true; return true;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1011,34 +963,28 @@ void MBExchange::updateSM() ...@@ -1011,34 +963,28 @@ void MBExchange::updateSM()
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(updateSM): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): check modeSensor..catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): check modeSensor..catch ..." << endl;
} }
} }
...@@ -1060,36 +1006,30 @@ void MBExchange::updateSM() ...@@ -1060,36 +1006,30 @@ void MBExchange::updateSM()
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(updateSM): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateSM): catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateSM): catch ..." << endl;
} }
if( it==d->regmap.end() ) if( it==d->regmap.end() )
break; break;
} }
...@@ -1123,8 +1063,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only ) ...@@ -1123,8 +1063,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
if( save && !r->mb_initOK ) if( save && !r->mb_initOK )
return; return;
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << "updateP: sid=" << p->si.id
dlog[Debug::LEVEL3] << "updateP: sid=" << p->si.id
<< " mbval=" << r->mbval << " mbval=" << r->mbval
<< " vtype=" << p->vType << " vtype=" << p->vType
<< " rnum=" << p->rnum << " rnum=" << p->rnum
...@@ -1192,8 +1131,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only ) ...@@ -1192,8 +1131,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
return; return;
} }
if( dlog.is_crit() ) dcrit << myname << "(updateRSProperty): IGNORE item: rnum=" << p->rnum
dlog.crit() << myname << "(updateRSProperty): IGNORE item: rnum=" << p->rnum
<< " > 1 ?!! for id=" << p->si.id << endl; << " > 1 ?!! for id=" << p->si.id << endl;
return; return;
} }
...@@ -1263,8 +1201,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only ) ...@@ -1263,8 +1201,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
{ {
if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize ) if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize )
{ {
if( dlog.is_crit() ) dcrit << myname << "(updateRSProperty): IGNORE item: reg=" << ModbusRTU::dat2str(r->mbreg)
dlog.crit() << myname << "(updateRSProperty): IGNORE item: reg=" << ModbusRTU::dat2str(r->mbreg)
<< " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl; << " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl;
return; return;
} }
...@@ -1387,10 +1324,10 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only ) ...@@ -1387,10 +1324,10 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::U2::wsize()]; ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::U2::wsize()];
for( int k=0; k<VTypes::U2::wsize(); k++, i++ ) for( int k=0; k<VTypes::U2::wsize(); k++, i++ )
data[k] = i->second->mbval; data[k] = i->second->mbval;
VTypes::U2 u2(data,VTypes::U2::wsize()); VTypes::U2 u2(data,VTypes::U2::wsize());
delete[] data; delete[] data;
IOBase::processingAsAI( p, (unsigned int)u2, shm, force ); IOBase::processingAsAI( p, (unsigned int)u2, shm, force );
} }
} }
...@@ -1399,34 +1336,28 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only ) ...@@ -1399,34 +1336,28 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateRSProperty):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateRSProperty):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRSProperty): catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): catch ..." << endl;
} }
// Если SM стала (или была) недоступна // Если SM стала (или была) недоступна
...@@ -1492,21 +1423,20 @@ void MBExchange::updateMTR( RegMap::iterator& rit ) ...@@ -1492,21 +1423,20 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::T3::wsize()]; ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::T3::wsize()];
for( int k=0; k<MTR::T3::wsize(); k++, i++ ) for( int k=0; k<MTR::T3::wsize(); k++, i++ )
data[k] = i->second->mbval; data[k] = i->second->mbval;
MTR::T3 t(data,MTR::T3::wsize()); MTR::T3 t(data,MTR::T3::wsize());
delete[] data; delete[] data;
IOBase::processingAsAI( &(*it), (long)t, shm, force ); IOBase::processingAsAI( &(*it), (long)t, shm, force );
} }
continue; continue;
} }
if( r->mtrType == MTR::mtT4 ) if( r->mtrType == MTR::mtT4 )
{ {
if( save ) if( save )
{ {
if( dlog.is_warn() ) dwarn << myname << "(updateMTR): write (T4) reg(" << dat2str(r->mbreg) << ") to MTR NOT YET!!!" << endl;
dlog.warn() << myname << "(updateMTR): write (T4) reg(" << dat2str(r->mbreg) << ") to MTR NOT YET!!!" << endl; }
}
else else
{ {
MTR::T4 t(r->mbval); MTR::T4 t(r->mbval);
...@@ -1514,7 +1444,7 @@ void MBExchange::updateMTR( RegMap::iterator& rit ) ...@@ -1514,7 +1444,7 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
} }
continue; continue;
} }
if( r->mtrType == MTR::mtT5 ) if( r->mtrType == MTR::mtT5 )
{ {
RegMap::iterator i(rit); RegMap::iterator i(rit);
...@@ -1629,10 +1559,10 @@ void MBExchange::updateMTR( RegMap::iterator& rit ) ...@@ -1629,10 +1559,10 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::F1::wsize()]; ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::F1::wsize()];
for( int k=0; k<MTR::F1::wsize(); k++, i++ ) for( int k=0; k<MTR::F1::wsize(); k++, i++ )
data[k] = i->second->mbval; data[k] = i->second->mbval;
MTR::F1 t(data,MTR::F1::wsize()); MTR::F1 t(data,MTR::F1::wsize());
delete[] data; delete[] data;
IOBase::processingFasAI( &(*it), (float)t, shm, force ); IOBase::processingFasAI( &(*it), (float)t, shm, force );
} }
continue; continue;
...@@ -1640,34 +1570,28 @@ void MBExchange::updateMTR( RegMap::iterator& rit ) ...@@ -1640,34 +1570,28 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateMTR):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateMTR):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateMTR): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(updateMTR): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(updateMTR): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateMTR): catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateMTR): catch ..." << endl;
} }
} }
} }
...@@ -1687,39 +1611,34 @@ void MBExchange::updateRTU188( RegMap::iterator& rit ) ...@@ -1687,39 +1611,34 @@ void MBExchange::updateRTU188( RegMap::iterator& rit )
// не реализованы // не реализованы
if( isWriteFunction(r->mbfunc) ) if( isWriteFunction(r->mbfunc) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188): write reg(" << dat2str(r->mbreg) << ") to RTU188 NOT YET!!!" << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188): write reg(" << dat2str(r->mbreg) << ") to RTU188 NOT YET!!!" << endl;
return; return;
} }
if( exchangeMode == emSkipExchange || r->dev->mode == emSkipExchange ) if( exchangeMode == emSkipExchange || r->dev->mode == emSkipExchange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188):"
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
<< " skip... mode=emSkipExchange " << endl; << " skip... mode=emSkipExchange " << endl;
return; return;
} }
if( save && (exchangeMode == emReadOnly || r->dev->mode == emReadOnly) ) if( save && (exchangeMode == emReadOnly || r->dev->mode == emReadOnly) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188):"
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
<< " skip... mode=emReadOnly " << endl; << " skip... mode=emReadOnly " << endl;
return; return;
} }
if( !save && ( exchangeMode == emWriteOnly || r->dev->mode == emWriteOnly) ) if( !save && ( exchangeMode == emWriteOnly || r->dev->mode == emWriteOnly) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188):"
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
<< " skip... mode=emWriteOnly " << endl; << " skip... mode=emWriteOnly " << endl;
return; return;
} }
if( save && ( exchangeMode == emSkipSaveToSM || r->dev->mode == emSkipSaveToSM) ) if( save && ( exchangeMode == emSkipSaveToSM || r->dev->mode == emSkipSaveToSM) )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRT188):"
dlog[Debug::LEVEL3] << myname << "(updateRT188):"
<< " skip... mode=emSkipSaveToSM " << endl; << " skip... mode=emSkipSaveToSM " << endl;
return; return;
} }
...@@ -1741,34 +1660,28 @@ void MBExchange::updateRTU188( RegMap::iterator& rit ) ...@@ -1741,34 +1660,28 @@ void MBExchange::updateRTU188( RegMap::iterator& rit )
} }
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188):(NameNotFound) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188):(NameNotFound) " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188):(IOBadParam) " << ex.err << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188):(IOBadParam) " << ex.err << endl;
} }
catch(IONotifyController_i::BadRange ) catch(IONotifyController_i::BadRange )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188): (BadRange)..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188): (BadRange)..." << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188): " << ex << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188): CORBA::SystemException: "
dlog[Debug::LEVEL3] << myname << "(updateRTU188): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(updateRTU188): catch ..." << endl;
dlog[Debug::LEVEL3] << myname << "(updateRTU188): catch ..." << endl;
} }
} }
} }
...@@ -1782,16 +1695,14 @@ MBExchange::RTUDevice* MBExchange::addDev( RTUDeviceMap& mp, ModbusRTU::ModbusAd ...@@ -1782,16 +1695,14 @@ MBExchange::RTUDevice* MBExchange::addDev( RTUDeviceMap& mp, ModbusRTU::ModbusAd
DeviceType dtype = getDeviceType(xmlit.getProp(prop_prefix + "mbtype")); DeviceType dtype = getDeviceType(xmlit.getProp(prop_prefix + "mbtype"));
if( it->second->dtype != dtype ) if( it->second->dtype != dtype )
{ {
if( dlog.is_crit() ) dcrit << myname << "(addDev): OTHER mbtype=" << dtype << " for " << xmlit.getProp("name")
dlog.crit() << myname << "(addDev): OTHER mbtype=" << dtype << " for " << xmlit.getProp("name")
<< ". Already used devtype=" << it->second->dtype << ". Already used devtype=" << it->second->dtype
<< " for mbaddr=" << ModbusRTU::addr2str(it->second->mbaddr) << " for mbaddr=" << ModbusRTU::addr2str(it->second->mbaddr)
<< endl; << endl;
return 0; return 0;
} }
if( dlog.is_info() ) dcrit << myname << "(addDev): device for addr=" << ModbusRTU::addr2str(a)
dlog.info() << myname << "(addDev): device for addr=" << ModbusRTU::addr2str(a)
<< " already added. Ignore device params for " << xmlit.getProp("name") << " ..." << endl; << " already added. Ignore device params for " << xmlit.getProp("name") << " ..." << endl;
return it->second; return it->second;
} }
...@@ -1818,26 +1729,23 @@ MBExchange::RegInfo* MBExchange::addReg( RegMap& mp, RegID id, ModbusRTU::Modbus ...@@ -1818,26 +1729,23 @@ MBExchange::RegInfo* MBExchange::addReg( RegMap& mp, RegID id, ModbusRTU::Modbus
{ {
if( !it->second->dev ) if( !it->second->dev )
{ {
dlog.crit() << myname << "(addReg): for " << xmlit.getProp("name") dcrit << myname << "(addReg): for " << xmlit.getProp("name")
<< " dev=0!!!! " << endl; << " dev=0!!!! " << endl;
return 0; return 0;
} }
if( it->second->dev->dtype != dev->dtype ) if( it->second->dev->dtype != dev->dtype )
{ {
if( dlog.is_crit() ) dcrit << myname << "(addReg): OTHER mbtype=" << dev->dtype << " for " << xmlit.getProp("name")
dlog.crit() << myname << "(addReg): OTHER mbtype=" << dev->dtype << " for " << xmlit.getProp("name")
<< ". Already used devtype=" << it->second->dev->dtype << " for " << it->second->dev << endl; << ". Already used devtype=" << it->second->dev->dtype << " for " << it->second->dev << endl;
return 0; return 0;
} }
if( dlog.is_info() ) dinfo << myname << "(addReg): reg=" << ModbusRTU::dat2str(r)
{
dlog.info() << myname << "(addReg): reg=" << ModbusRTU::dat2str(r)
<< "(id=" << id << ")" << "(id=" << id << ")"
<< " already added for " << (*it->second) << " already added for " << (*it->second)
<< " Ignore register params for " << xmlit.getProp("name") << " ..." << endl; << " Ignore register params for " << xmlit.getProp("name") << " ..." << endl;
}
it->second->rit = it; it->second->rit = it;
return it->second; return it->second;
...@@ -1904,8 +1812,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it ) ...@@ -1904,8 +1812,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.stype = UniSetTypes::getIOType(stype); p.stype = UniSetTypes::getIOType(stype);
if( p.stype == UniversalIO::UnknownIOType ) if( p.stype == UniversalIO::UnknownIOType )
{ {
if( dlog.is_crit() ) dcrit << myname << "(IOBase::readItem): неизвестный iotype=: "
dlog.crit() << myname << "(IOBase::readItem): неизвестный iotype=: "
<< stype << " for " << it.getProp("name") << endl; << stype << " for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -1917,8 +1824,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it ) ...@@ -1917,8 +1824,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.nbit = UniSetTypes::uni_atoi(sbit.c_str()); p.nbit = UniSetTypes::uni_atoi(sbit.c_str());
if( p.nbit < 0 || p.nbit >= ModbusRTU::BitsPerData ) if( p.nbit < 0 || p.nbit >= ModbusRTU::BitsPerData )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRSProperty): BAD nbit=" << p.nbit
dlog.crit() << myname << "(initRSProperty): BAD nbit=" << p.nbit
<< ". (0 >= nbit < " << ModbusRTU::BitsPerData <<")." << endl; << ". (0 >= nbit < " << ModbusRTU::BitsPerData <<")." << endl;
return false; return false;
} }
...@@ -1928,8 +1834,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it ) ...@@ -1928,8 +1834,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
( p.stype == UniversalIO::AI || ( p.stype == UniversalIO::AI ||
p.stype == UniversalIO::AO ) ) p.stype == UniversalIO::AO ) )
{ {
if( dlog.is_warn() ) dwarn << "(initRSProperty): (ignore) uncorrect param`s nbit>1 (" << p.nbit << ")"
dlog.warn() << "(initRSProperty): (ignore) uncorrect param`s nbit>1 (" << p.nbit << ")"
<< " but iotype=" << p.stype << " for " << it.getProp("name") << endl; << " but iotype=" << p.stype << " for " << it.getProp("name") << endl;
} }
...@@ -1939,8 +1844,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it ) ...@@ -1939,8 +1844,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.nbyte = UniSetTypes::uni_atoi(sbyte.c_str()); p.nbyte = UniSetTypes::uni_atoi(sbyte.c_str());
if( p.nbyte < 0 || p.nbyte > VTypes::Byte::bsize ) if( p.nbyte < 0 || p.nbyte > VTypes::Byte::bsize )
{ {
if( dlog.is_crit() ) dwarn << myname << "(initRSProperty): BAD nbyte=" << p.nbyte
dlog.crit() << myname << "(initRSProperty): BAD nbyte=" << p.nbyte
<< ". (0 >= nbyte < " << VTypes::Byte::bsize << ")." << endl; << ". (0 >= nbyte < " << VTypes::Byte::bsize << ")." << endl;
return false; return false;
} }
...@@ -1957,8 +1861,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it ) ...@@ -1957,8 +1861,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
VTypes::VType v(VTypes::str2type(vt)); VTypes::VType v(VTypes::str2type(vt));
if( v == VTypes::vtUnknown ) if( v == VTypes::vtUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRSProperty): Unknown tcp_vtype='" << vt << "' for "
dlog.crit() << myname << "(initRSProperty): Unknown tcp_vtype='" << vt << "' for "
<< it.getProp("name") << it.getProp("name")
<< endl; << endl;
...@@ -2004,12 +1907,11 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD ...@@ -2004,12 +1907,11 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
} }
else else
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRegInfo): Unknown mbtype='" << dev->dtype
dlog.crit() << myname << "(initRegInfo): Unknown mbtype='" << dev->dtype
<< "' for " << it.getProp("name") << endl; << "' for " << it.getProp("name") << endl;
return false; return false;
} }
if( mbregFromID ) if( mbregFromID )
{ {
if( it.getProp("id").empty() ) if( it.getProp("id").empty() )
...@@ -2022,8 +1924,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD ...@@ -2022,8 +1924,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
string sr = it.getProp(prop_prefix + "mbreg"); string sr = it.getProp(prop_prefix + "mbreg");
if( sr.empty() ) if( sr.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
return false; return false;
} }
r->mbreg = ModbusRTU::str2mbData(sr); r->mbreg = ModbusRTU::str2mbData(sr);
...@@ -2036,8 +1937,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD ...@@ -2036,8 +1937,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
r->mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(f.c_str()); r->mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(f.c_str());
if( r->mbfunc == ModbusRTU::fnUnknown ) if( r->mbfunc == ModbusRTU::fnUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRegInfo): Unknown mbfunc ='" << f
dlog.crit() << myname << "(initRegInfo): Unknown mbfunc ='" << f
<< "' for " << it.getProp("name") << endl; << "' for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -2052,8 +1952,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it ) ...@@ -2052,8 +1952,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
if( d->dtype == dtUnknown ) if( d->dtype == dtUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRTUDevice): Unknown tcp_mbtype=" << it.getProp(prop_prefix + "mbtype")
dlog.crit() << myname << "(initRTUDevice): Unknown tcp_mbtype=" << it.getProp(prop_prefix + "mbtype")
<< ". Use: rtu " << ". Use: rtu "
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
return false; return false;
...@@ -2062,8 +1961,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it ) ...@@ -2062,8 +1961,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
string addr = it.getProp(prop_prefix + "mbaddr"); string addr = it.getProp(prop_prefix + "mbaddr");
if( addr.empty() ) if( addr.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initRTUDevice): Unknown mbaddr for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initRTUDevice): Unknown mbaddr for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -2087,8 +1985,7 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2087,8 +1985,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
string addr(it.getProp(prop_prefix + "mbaddr")); string addr(it.getProp(prop_prefix + "mbaddr"));
if( addr.empty() ) if( addr.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown mbaddr(" << prop_prefix << "mbaddr)='" << addr << "' for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): Unknown mbaddr(" << prop_prefix << "mbaddr)='" << addr << "' for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -2097,8 +1994,7 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2097,8 +1994,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
RTUDevice* dev = addDev(rmap,mbaddr,it); RTUDevice* dev = addDev(rmap,mbaddr,it);
if( !dev ) if( !dev )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): " << it.getProp("name") << " CAN`T ADD for polling!" << endl;
dlog.crit() << myname << "(initItem): " << it.getProp("name") << " CAN`T ADD for polling!" << endl;
return false; return false;
} }
...@@ -2110,8 +2006,7 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2110,8 +2006,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
RegInfo r_tmp; RegInfo r_tmp;
if( !initRTU188item(it, &r_tmp) ) if( !initRTU188item(it, &r_tmp) )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): init RTU188 failed for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): init RTU188 failed for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -2126,9 +2021,8 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2126,9 +2021,8 @@ bool MBExchange::initItem( UniXML_iterator& it )
{ {
string reg = it.getProp(prop_prefix + "mbreg"); string reg = it.getProp(prop_prefix + "mbreg");
if( reg.empty() ) if( reg.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): unknown mbreg(" << prop_prefix << ") for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): unknown mbreg(" << prop_prefix << ") for " << it.getProp("name") << endl;
return false; return false;
} }
mbreg = ModbusRTU::str2mbData(reg); mbreg = ModbusRTU::str2mbData(reg);
...@@ -2148,12 +2042,11 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2148,12 +2042,11 @@ bool MBExchange::initItem( UniXML_iterator& it )
p.rnum = MTR::wsize(ri->mtrType); p.rnum = MTR::wsize(ri->mtrType);
if( p.rnum <= 0 ) if( p.rnum <= 0 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): unknown word size for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): unknown word size for " << it.getProp("name") << endl;
return false; return false;
} }
} }
if( !ri ) if( !ri )
return false; return false;
...@@ -2173,22 +2066,20 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2173,22 +2066,20 @@ bool MBExchange::initItem( UniXML_iterator& it )
{ {
if( p.nbit<0 && ri->slst.size() > 1 ) if( p.nbit<0 && ri->slst.size() > 1 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): FAILED! Sharing SAVE (not bit saving) to "
dlog.crit() << myname << "(initItem): FAILED! Sharing SAVE (not bit saving) to "
<< " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg) << " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg)
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
abort(); // ABORT PROGRAM!!!! abort(); // ABORT PROGRAM!!!!
return false; return false;
} }
if( p.nbit >= 0 && ri->slst.size() == 1 ) if( p.nbit >= 0 && ri->slst.size() == 1 )
{ {
PList::iterator it2 = ri->slst.begin(); PList::iterator it2 = ri->slst.begin();
if( it2->nbit < 0 ) if( it2->nbit < 0 )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): FAILED! Sharing SAVE (mbreg="
dlog.crit() << myname << "(initItem): FAILED! Sharing SAVE (mbreg="
<< ModbusRTU::dat2str(ri->mbreg) << " already used)!" << ModbusRTU::dat2str(ri->mbreg) << " already used)!"
<< " IGNORE --> " << it.getProp("name") << endl; << " IGNORE --> " << it.getProp("name") << endl;
abort(); // ABORT PROGRAM!!!! abort(); // ABORT PROGRAM!!!!
...@@ -2237,8 +2128,7 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2237,8 +2128,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
if( ri->mbfunc != ModbusRTU::fnWriteOutputRegisters && if( ri->mbfunc != ModbusRTU::fnWriteOutputRegisters &&
ri->mbfunc != ModbusRTU::fnForceMultipleCoils ) ri->mbfunc != ModbusRTU::fnForceMultipleCoils )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Bad write function ='" << ModbusRTU::fnWriteOutputSingleRegister
dlog.crit() << myname << "(initItem): Bad write function ='" << ModbusRTU::fnWriteOutputSingleRegister
<< "' for vtype='" << p1->vType << "'" << "' for vtype='" << p1->vType << "'"
<< " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg) << " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg)
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
...@@ -2271,8 +2161,7 @@ bool MBExchange::initItem( UniXML_iterator& it ) ...@@ -2271,8 +2161,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
ii.mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(s_mbfunc); ii.mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(s_mbfunc);
if( ii.mbfunc == ModbusRTU::fnUnknown ) if( ii.mbfunc == ModbusRTU::fnUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown tcp_init_mbfunc ='" << s_mbfunc
dlog.crit() << myname << "(initItem): Unknown tcp_init_mbfunc ='" << s_mbfunc
<< "' for " << it.getProp("name") << endl; << "' for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -2316,8 +2205,7 @@ bool MBExchange::initMTRitem( UniXML_iterator& it, RegInfo* p ) ...@@ -2316,8 +2205,7 @@ bool MBExchange::initMTRitem( UniXML_iterator& it, RegInfo* p )
p->mtrType = MTR::str2type(it.getProp(prop_prefix + "mtrtype")); p->mtrType = MTR::str2type(it.getProp(prop_prefix + "mtrtype"));
if( p->mtrType == MTR::mtUnknown ) if( p->mtrType == MTR::mtUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readMTRItem): Unknown mtrtype '"
dlog.crit() << myname << "(readMTRItem): Unknown mtrtype '"
<< it.getProp(prop_prefix + "mtrtype") << it.getProp(prop_prefix + "mtrtype")
<< "' for " << it.getProp("name") << endl; << "' for " << it.getProp("name") << endl;
...@@ -2334,32 +2222,28 @@ bool MBExchange::initRTU188item( UniXML_iterator& it, RegInfo* p ) ...@@ -2334,32 +2222,28 @@ bool MBExchange::initRTU188item( UniXML_iterator& it, RegInfo* p )
if( jack.empty() ) if( jack.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack='' "
dlog.crit() << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack='' "
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
return false; return false;
} }
p->rtuJack = RTUStorage::s2j(jack); p->rtuJack = RTUStorage::s2j(jack);
if( p->rtuJack == RTUStorage::nUnknown ) if( p->rtuJack == RTUStorage::nUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack=" << jack
dlog.crit() << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack=" << jack
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
return false; return false;
} }
if( chan.empty() ) if( chan.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readRTU188Item): Unknown channel='' "
dlog.crit() << myname << "(readRTU188Item): Unknown channel='' "
<< " for " << it.getProp("name") << endl; << " for " << it.getProp("name") << endl;
return false; return false;
} }
p->rtuChan = UniSetTypes::uni_atoi(chan); p->rtuChan = UniSetTypes::uni_atoi(chan);
if( dlog.debugging(Debug::LEVEL2) ) dlog2 << myname << "(readRTU188Item): add jack='" << jack << "'"
dlog[Debug::LEVEL2] << myname << "(readRTU188Item): add jack='" << jack << "'"
<< " channel='" << p->rtuChan << "'" << endl; << " channel='" << p->rtuChan << "'" << endl;
return true; return true;
...@@ -2427,11 +2311,11 @@ void MBExchange::initDeviceList() ...@@ -2427,11 +2311,11 @@ void MBExchange::initDeviceList()
initDeviceInfo(rmap,a,it1); initDeviceInfo(rmap,a,it1);
} }
} }
else if( dlog.is_warn() ) else
dlog.warn() << myname << "(init): <DeviceList> empty section..." << endl; dwarn << myname << "(init): <DeviceList> empty section..." << endl;
} }
else if( dlog.is_warn() ) else
dlog.warn() << myname << "(init): <DeviceList> not found..." << endl; dwarn << myname << "(init): <DeviceList> not found..." << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXML_iterator& it ) bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXML_iterator& it )
...@@ -2439,15 +2323,13 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM ...@@ -2439,15 +2323,13 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
RTUDeviceMap::iterator d = m.find(a); RTUDeviceMap::iterator d = m.find(a);
if( d == m.end() ) if( d == m.end() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(initDeviceInfo): not found device for addr=" << ModbusRTU::addr2str(a) << endl;
dlog.warn() << myname << "(initDeviceInfo): not found device for addr=" << ModbusRTU::addr2str(a) << endl;
return false; return false;
} }
d->second->ask_every_reg = it.getIntProp("ask_every_reg"); d->second->ask_every_reg = it.getIntProp("ask_every_reg");
if( dlog.is_info() ) dinfo << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a)
dlog.info() << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a)
<< " ask_every_reg=" << d->second->ask_every_reg << endl; << " ask_every_reg=" << d->second->ask_every_reg << endl;
string s(it.getProp("respondSensor")); string s(it.getProp("respondSensor"));
...@@ -2456,8 +2338,7 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM ...@@ -2456,8 +2338,7 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
d->second->resp_id = conf->getSensorID(s); d->second->resp_id = conf->getSensorID(s);
if( d->second->resp_id == DefaultObjectId ) if( d->second->resp_id == DefaultObjectId )
{ {
if( dlog.is_crit() ) dinfo << myname << "(initDeviceInfo): not found ID for respondSensor=" << s << endl;
dlog.crit() << myname << "(initDeviceInfo): not found ID for respondSensor=" << s << endl;
return false; return false;
} }
} }
...@@ -2468,22 +2349,19 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM ...@@ -2468,22 +2349,19 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
d->second->mode_id = conf->getSensorID(mod); d->second->mode_id = conf->getSensorID(mod);
if( d->second->mode_id == DefaultObjectId ) if( d->second->mode_id == DefaultObjectId )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initDeviceInfo): not found ID for modeSensor=" << mod << endl;
dlog.crit() << myname << "(initDeviceInfo): not found ID for modeSensor=" << mod << endl;
return false; return false;
} }
UniversalIO::IOType m_iotype = conf->getIOType(d->second->mode_id); UniversalIO::IOType m_iotype = conf->getIOType(d->second->mode_id);
if( m_iotype != UniversalIO::AI ) if( m_iotype != UniversalIO::AI )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initDeviceInfo): modeSensor='" << mod << "' must be 'AI'" << endl;
dlog.crit() << myname << "(initDeviceInfo): modeSensor='" << mod << "' must be 'AI'" << endl;
return false; return false;
} }
} }
if( dlog.is_info() ) dinfo << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
dlog.info() << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
int tout = it.getPIntProp("timeout",5000); int tout = it.getPIntProp("timeout",5000);
d->second->resp_ptTimeout.setTiming(tout); d->second->resp_ptTimeout.setTiming(tout);
d->second->resp_invert = it.getIntProp("invert"); d->second->resp_invert = it.getIntProp("invert");
...@@ -2541,19 +2419,16 @@ void MBExchange::processingMessage(UniSetTypes::VoidMessage *msg) ...@@ -2541,19 +2419,16 @@ void MBExchange::processingMessage(UniSetTypes::VoidMessage *msg)
} }
catch( SystemError& ex ) catch( SystemError& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(SystemError): " << ex << std::endl;
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex); // throw SystemError(ex);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): " << ex << std::endl;
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): catch ...\n";
dlog.crit() << myname << "(processingMessage): catch ...\n";
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -2565,18 +2440,16 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -2565,18 +2440,16 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm )
{ {
if( rmap.empty() ) if( rmap.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(sysCommand): ************* ITEM MAP EMPTY! terminated... *************" << endl;
dlog.crit() << myname << "(sysCommand): ************* ITEM MAP EMPTY! terminated... *************" << endl;
raise(SIGTERM); raise(SIGTERM);
return; return;
} }
if( dlog.is_info() ) dinfo << myname << "(sysCommand): device map size= " << rmap.size() << endl;
dlog.info() << myname << "(sysCommand): device map size= " << rmap.size() << endl;
if( !shm->isLocalwork() ) if( !shm->isLocalwork() )
initDeviceList(); initDeviceList();
waitSMReady(); waitSMReady();
// подождать пока пройдёт инициализация датчиков // подождать пока пройдёт инициализация датчиков
...@@ -2590,10 +2463,9 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -2590,10 +2463,9 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm )
if( activated ) if( activated )
break; break;
} }
if( !activated && dlog.debugging(Debug::CRIT) ) if( !activated )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl; dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
{ {
UniSetTypes::uniset_rwmutex_rlock l(mutex_start); UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
askSensors(UniversalIO::UIONotify); askSensors(UniversalIO::UIONotify);
...@@ -2672,7 +2544,7 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -2672,7 +2544,7 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение " << "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек"; << activateTimeout << " мсек";
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -2684,13 +2556,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -2684,13 +2556,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): " << ex << std::endl;
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): 'sidExchangeMode' catch..." << std::endl;
dlog.warn() << myname << "(askSensors): 'sidExchangeMode' catch..." << std::endl;
} }
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 ) for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
...@@ -2704,13 +2574,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -2704,13 +2574,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): " << ex << std::endl;
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): (mode_id=" << d->mode_id << ").. catch..." << std::endl;
dlog.warn() << myname << "(askSensors): (mode_id=" << d->mode_id << ").. catch..." << std::endl;
} }
if( force_out ) if( force_out )
...@@ -2729,13 +2597,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -2729,13 +2597,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): " << ex << std::endl;
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): id=" << i->si.id << " catch..." << std::endl;
dlog.warn() << myname << "(askSensors): id=" << i->si.id << " catch..." << std::endl;
} }
} }
} }
...@@ -2747,8 +2613,7 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -2747,8 +2613,7 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
if( sm->id == sidExchangeMode ) if( sm->id == sidExchangeMode )
{ {
exchangeMode = sm->value; exchangeMode = sm->value;
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(sensorInfo): exchange MODE=" << sm->value << std::endl;
dlog[Debug::LEVEL3] << myname << "(sensorInfo): exchange MODE=" << sm->value << std::endl;
//return; // этот датчик может встречаться и в списке обмена.. поэтому делать return нельзя. //return; // этот датчик может встречаться и в списке обмена.. поэтому делать return нельзя.
} }
...@@ -2771,13 +2636,10 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -2771,13 +2636,10 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
{ {
if( sm->id == i->si.id && sm->node == i->si.node ) if( sm->id == i->si.id && sm->node == i->si.node )
{ {
if( dlog.is_info() ) dinfo << myname<< "(sensorInfo): si.id=" << sm->id
{
dlog.info() << myname<< "(sensorInfo): si.id=" << sm->id
<< " reg=" << ModbusRTU::dat2str(i->reg->mbreg) << " reg=" << ModbusRTU::dat2str(i->reg->mbreg)
<< " val=" << sm->value << " val=" << sm->value
<< " mb_initOK=" << i->reg->mb_initOK << endl; << " mb_initOK=" << i->reg->mb_initOK << endl;
}
if( !i->reg->mb_initOK ) if( !i->reg->mb_initOK )
continue; continue;
...@@ -2846,8 +2708,7 @@ void MBExchange::poll() ...@@ -2846,8 +2708,7 @@ void MBExchange::poll()
if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange ) if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange )
continue; continue;
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog[Debug::LEVEL3] << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->regmap.size() << endl; << " regs=" << d->regmap.size() << endl;
d->resp_real = false; d->resp_real = false;
...@@ -2855,7 +2716,7 @@ void MBExchange::poll() ...@@ -2855,7 +2716,7 @@ void MBExchange::poll()
{ {
if( !checkProcActive() ) if( !checkProcActive() )
return; return;
try try
{ {
if( d->dtype==MBExchange::dtRTU || d->dtype==MBExchange::dtMTR ) if( d->dtype==MBExchange::dtRTU || d->dtype==MBExchange::dtMTR )
...@@ -2868,14 +2729,10 @@ void MBExchange::poll() ...@@ -2868,14 +2729,10 @@ void MBExchange::poll()
{ {
// if( d->resp_real ) // if( d->resp_real )
// { // {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
{
dlog[Debug::LEVEL3] << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->second->mbreg) << " reg=" << ModbusRTU::dat2str(it->second->mbreg)
<< " for sensors: "; print_plist(dlog(Debug::LEVEL3),it->second->slst); << " for sensors: "; print_plist(dlog(Debug::LEVEL3),it->second->slst)
dlog(Debug::LEVEL3) << " err: " << ex << endl; << endl << " err: " << ex << endl;
}
// }
// d->resp_real = false; // d->resp_real = false;
if( ex.err == ModbusRTU::erTimeOut && !d->ask_every_reg ) if( ex.err == ModbusRTU::erTimeOut && !d->ask_every_reg )
...@@ -2939,8 +2796,7 @@ void MBExchange::poll() ...@@ -2939,8 +2796,7 @@ void MBExchange::poll()
if( allNotRespond && ptReopen.checkTime() ) if( allNotRespond && ptReopen.checkTime() )
{ {
uniset_mutex_lock l(pollMutex, 300); uniset_mutex_lock l(pollMutex, 300);
if( dlog.is_warn() ) dwarn << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
dlog.warn() << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
mb = initMB(true); mb = initMB(true);
ptReopen.reset(); ptReopen.reset();
...@@ -2994,15 +2850,12 @@ void MBExchange::updateRespondSensors() ...@@ -2994,15 +2850,12 @@ void MBExchange::updateRespondSensors()
if( chanTimeout ) if( chanTimeout )
it1->second->resp_real = false; it1->second->resp_real = false;
if( dlog.debugging(Debug::LEVEL4) ) dlog4 << myname << ": check respond addr=" << ModbusRTU::addr2str(d->mbaddr)
{
dlog[Debug::LEVEL4] << myname << ": check respond addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " respond_id=" << d->resp_id << " respond_id=" << d->resp_id
<< " real=" << d->resp_real << " real=" << d->resp_real
<< " state=" << d->resp_state << " state=" << d->resp_state
<< endl; << endl;
}
if( d->checkRespond() && d->resp_id != DefaultObjectId ) if( d->checkRespond() && d->resp_id != DefaultObjectId )
{ {
...@@ -3013,8 +2866,7 @@ void MBExchange::updateRespondSensors() ...@@ -3013,8 +2866,7 @@ void MBExchange::updateRespondSensors()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(step): (respond) " << ex << std::endl;
dlog.crit() << myname << "(step): (respond) " << ex << std::endl;
} }
} }
} }
...@@ -3040,13 +2892,11 @@ void MBExchange::execute() ...@@ -3040,13 +2892,11 @@ void MBExchange::execute()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute): " << ex << std::endl;
dlog.crit() << myname << "(execute): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute): catch ..." << endl;
dlog.crit() << myname << "(execute): catch ..." << endl;
} }
msleep(polltime); msleep(polltime);
......
...@@ -38,7 +38,7 @@ pollThread(0) ...@@ -38,7 +38,7 @@ pollThread(0)
prop_prefix = ""; prop_prefix = "";
} }
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl; dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
...@@ -55,7 +55,7 @@ pollThread(0) ...@@ -55,7 +55,7 @@ pollThread(0)
force_disconnect = conf->getArgInt("--" + prefix + "-persistent-connection",it.getProp("persistent_connection")) ? false : true; force_disconnect = conf->getArgInt("--" + prefix + "-persistent-connection",it.getProp("persistent_connection")) ? false : true;
dlog.info() << myname << "(init): persisten-connection=" << (!force_disconnect) << endl; dinfo << myname << "(init): persisten-connection=" << (!force_disconnect) << endl;
if( shm->isLocalwork() ) if( shm->isLocalwork() )
{ {
...@@ -103,19 +103,17 @@ ModbusClient* MBTCPMaster::initMB( bool reopen ) ...@@ -103,19 +103,17 @@ ModbusClient* MBTCPMaster::initMB( bool reopen )
mbtcp->setTimeout(recv_timeout); mbtcp->setTimeout(recv_timeout);
mbtcp->setSleepPause(sleepPause_usec); mbtcp->setSleepPause(sleepPause_usec);
mbtcp->setAfterSendPause(aftersend_pause); mbtcp->setAfterSendPause(aftersend_pause);
if( dlog.is_info() ) dinfo << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
dlog.info() << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
if( dlog.is_level9() )
if( dlog.debugging(Debug::LEVEL9) )
mbtcp->setLog(dlog); mbtcp->setLog(dlog);
} }
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
if( dlog.is_warn() ) dwarn << "(init): " << ex << endl;
dlog.warn() << "(init): " << ex << endl;
} }
catch(...) catch(...)
{ {
...@@ -182,23 +180,20 @@ MBTCPMaster* MBTCPMaster::init_mbmaster( int argc, const char* const* argv, ...@@ -182,23 +180,20 @@ MBTCPMaster* MBTCPMaster::init_mbmaster( int argc, const char* const* argv,
string name = conf->getArgParam("--" + prefix + "-name","MBTCPMaster1"); string name = conf->getArgParam("--" + prefix + "-name","MBTCPMaster1");
if( name.empty() ) if( name.empty() )
{ {
if( dlog.debugging(Debug::CRIT) ) dcrit << "(MBTCPMaster): Не задан name'" << endl;
dlog.crit() << "(MBTCPMaster): Не задан name'" << endl;
return 0; return 0;
} }
ObjectId ID = conf->getObjectID(name); ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
if( dlog.debugging(Debug::CRIT) ) dcrit << "(MBTCPMaster): идентификатор '" << name
dlog.crit() << "(MBTCPMaster): идентификатор '" << name
<< "' не найден в конф. файле!" << "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl; << " в секции " << conf->getObjectsSection() << endl;
return 0; return 0;
} }
if( dlog.is_info() ) dinfo << "(MBTCPMaster): name = " << name << "(" << ID << ")" << endl;
dlog.info() << "(MBTCPMaster): name = " << name << "(" << ID << ")" << endl;
return new MBTCPMaster(ID,icID,ic,prefix); return new MBTCPMaster(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -40,8 +40,7 @@ checkThread(0) ...@@ -40,8 +40,7 @@ checkThread(0)
prop_prefix = ""; prop_prefix = "";
} }
if( dlog.is_info() ) dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
...@@ -53,8 +52,7 @@ checkThread(0) ...@@ -53,8 +52,7 @@ checkThread(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): not found <GateList>"; err << myname << "(init): not found <GateList>";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
...@@ -62,8 +60,7 @@ checkThread(0) ...@@ -62,8 +60,7 @@ checkThread(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): empty <GateList> ?!"; err << myname << "(init): empty <GateList> ?!";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
...@@ -75,8 +72,7 @@ checkThread(0) ...@@ -75,8 +72,7 @@ checkThread(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): ip='' in <GateList>"; err << myname << "(init): ip='' in <GateList>";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
...@@ -85,8 +81,7 @@ checkThread(0) ...@@ -85,8 +81,7 @@ checkThread(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): ERROR: port=''" << sinf.port << " for ip='" << sinf.ip << "' in <GateList>"; err << myname << "(init): ERROR: port=''" << sinf.port << " for ip='" << sinf.ip << "' in <GateList>";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
...@@ -97,8 +92,7 @@ checkThread(0) ...@@ -97,8 +92,7 @@ checkThread(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): ERROR: Unknown SensorID for '" << it1.getProp("respond") << "' in <GateList>"; err << myname << "(init): ERROR: Unknown SensorID for '" << it1.getProp("respond") << "' in <GateList>";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
} }
...@@ -117,21 +111,19 @@ checkThread(0) ...@@ -117,21 +111,19 @@ checkThread(0)
n << sinf.ip << ":" << sinf.port; n << sinf.ip << ":" << sinf.port;
sinf.myname = n.str(); sinf.myname = n.str();
if( dlog.debugging(Debug::LEVEL9) ) if( dlog.is_level9() )
sinf.mbtcp->setLog(dlog); sinf.mbtcp->setLog(dlog);
mblist.push_back(sinf); mblist.push_back(sinf);
if( dlog.is_info() ) dinfo << myname << "(init): add slave channel " << sinf.myname << endl;
dlog.info() << myname << "(init): add slave channel " << sinf.myname << endl;
} }
if( mblist.empty() ) if( mblist.empty() )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): empty <GateList>!"; err << myname << "(init): empty <GateList>!";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
...@@ -234,8 +226,7 @@ bool MBTCPMultiMaster::MBSlaveInfo::init() ...@@ -234,8 +226,7 @@ bool MBTCPMultiMaster::MBSlaveInfo::init()
{ {
// ost::Thread::setException(ost::Thread::throwException); // ost::Thread::setException(ost::Thread::throwException);
if( dlog.is_info() ) dinfo << myname << "(init): connect..." << endl;
dlog.info() << myname << "(init): connect..." << endl;
mbtcp->connect(ip,port); mbtcp->connect(ip,port);
mbtcp->setForceDisconnect(force_disconnect); mbtcp->setForceDisconnect(force_disconnect);
...@@ -248,22 +239,20 @@ bool MBTCPMultiMaster::MBSlaveInfo::init() ...@@ -248,22 +239,20 @@ bool MBTCPMultiMaster::MBSlaveInfo::init()
mbtcp->setSleepPause(sleepPause_usec); mbtcp->setSleepPause(sleepPause_usec);
mbtcp->setAfterSendPause(aftersend_pause); mbtcp->setAfterSendPause(aftersend_pause);
if( mbtcp->isConnection() && dlog.is_info() ) if( mbtcp->isConnection() )
dlog.info() << "(init): " << myname << " connect OK" << endl; dinfo << "(init): " << myname << " connect OK" << endl;
initOK = true; initOK = true;
} }
return mbtcp->isConnection(); return mbtcp->isConnection();
} }
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
if( dlog.is_warn() ) dwarn << "(init): " << ex << endl;
dlog.warn() << "(init): " << ex << endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_warn() ) dwarn << "(init): " << myname << " catch ..." << endl;
dlog.warn() << "(init): " << myname << " catch ..." << endl;
} }
initOK = false; initOK = false;
...@@ -318,8 +307,7 @@ void MBTCPMultiMaster::check_thread() ...@@ -318,8 +307,7 @@ void MBTCPMultiMaster::check_thread()
try try
{ {
bool r = it->check(); bool r = it->check();
if( dlog.is_info() ) dinfo << myname << "(check): " << it->myname << " " << ( r ? "OK" : "FAIL" ) << endl;
dlog.info() << myname << "(check): " << it->myname << " " << ( r ? "OK" : "FAIL" ) << endl;
try try
{ {
...@@ -331,8 +319,7 @@ void MBTCPMultiMaster::check_thread() ...@@ -331,8 +319,7 @@ void MBTCPMultiMaster::check_thread()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.debugging(Debug::CRIT) ) dcrit << myname << "(check): (respond) " << ex << std::endl;
dlog.crit() << myname << "(check): (respond) " << ex << std::endl;
} }
catch(...){} catch(...){}
...@@ -382,20 +369,20 @@ MBTCPMultiMaster* MBTCPMultiMaster::init_mbmaster( int argc, const char* const* ...@@ -382,20 +369,20 @@ MBTCPMultiMaster* MBTCPMultiMaster::init_mbmaster( int argc, const char* const*
string name = conf->getArgParam("--" + prefix + "-name","MBTCPMultiMaster1"); string name = conf->getArgParam("--" + prefix + "-name","MBTCPMultiMaster1");
if( name.empty() ) if( name.empty() )
{ {
dlog.crit() << "(MBTCPMultiMaster): Не задан name'" << endl; dcrit << "(MBTCPMultiMaster): Не задан name'" << endl;
return 0; return 0;
} }
ObjectId ID = conf->getObjectID(name); ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
dlog.crit() << "(MBTCPMultiMaster): идентификатор '" << name dcrit << "(MBTCPMultiMaster): идентификатор '" << name
<< "' не найден в конф. файле!" << "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl; << " в секции " << conf->getObjectsSection() << endl;
return 0; return 0;
} }
dlog.info() << "(MBTCPMultiMaster): name = " << name << "(" << ID << ")" << endl; dinfo << "(MBTCPMultiMaster): name = " << name << "(" << ID << ")" << endl;
return new MBTCPMultiMaster(ID,icID,ic,prefix); return new MBTCPMultiMaster(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -29,7 +29,7 @@ rs_pre_clean(false) ...@@ -29,7 +29,7 @@ rs_pre_clean(false)
// если "принудительно" задан префикс // если "принудительно" задан префикс
// используем его. // используем его.
{ {
string p("--" + prefix + "-set-prop-prefix"); string p("--" + prefix + "-set-prop-prefix");
string v = conf->getArgParam(p,""); string v = conf->getArgParam(p,"");
if( !v.empty() && v[0] != '-' ) if( !v.empty() && v[0] != '-' )
prop_prefix = v; prop_prefix = v;
...@@ -38,7 +38,7 @@ rs_pre_clean(false) ...@@ -38,7 +38,7 @@ rs_pre_clean(false)
prop_prefix = ""; prop_prefix = "";
} }
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl; dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
...@@ -108,7 +108,7 @@ ModbusClient* RTUExchange::initMB( bool reopen ) ...@@ -108,7 +108,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
{ {
if( !reopen ) if( !reopen )
return mbrtu; return mbrtu;
delete mbrtu; delete mbrtu;
mbrtu = 0; mbrtu = 0;
mb = 0; mb = 0;
...@@ -130,7 +130,7 @@ ModbusClient* RTUExchange::initMB( bool reopen ) ...@@ -130,7 +130,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
mbrtu->setSleepPause(sleepPause_usec); mbrtu->setSleepPause(sleepPause_usec);
mbrtu->setAfterSendPause(aftersend_pause); mbrtu->setAfterSendPause(aftersend_pause);
dlog.info() << myname << "(init): dev=" << devname << " speed=" << ComPort::getSpeed( mbrtu->getSpeed() ) << endl; dinfo << myname << "(init): dev=" << devname << " speed=" << ComPort::getSpeed( mbrtu->getSpeed() ) << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
...@@ -138,7 +138,7 @@ ModbusClient* RTUExchange::initMB( bool reopen ) ...@@ -138,7 +138,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
delete mbrtu; delete mbrtu;
mbrtu = 0; mbrtu = 0;
dlog.warn() << myname << "(init): " << ex << endl; dwarn << myname << "(init): " << ex << endl;
} }
catch(...) catch(...)
{ {
...@@ -146,7 +146,7 @@ ModbusClient* RTUExchange::initMB( bool reopen ) ...@@ -146,7 +146,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
delete mbrtu; delete mbrtu;
mbrtu = 0; mbrtu = 0;
dlog.info() << myname << "(init): catch...." << endl; dinfo << myname << "(init): catch...." << endl;
} }
mb = mbrtu; mb = mbrtu;
...@@ -204,14 +204,14 @@ void RTUExchange::poll() ...@@ -204,14 +204,14 @@ void RTUExchange::poll()
bool allNotRespond = true; bool allNotRespond = true;
ComPort::Speed s = mbrtu->getSpeed(); ComPort::Speed s = mbrtu->getSpeed();
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 ) for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
{ {
RTUDevice* d(it1->second); RTUDevice* d(it1->second);
if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange ) if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange )
continue; continue;
if( d->speed != s ) if( d->speed != s )
{ {
s = d->speed; s = d->speed;
...@@ -223,12 +223,9 @@ void RTUExchange::poll() ...@@ -223,12 +223,9 @@ void RTUExchange::poll()
if( !d->rtu ) if( !d->rtu )
continue; continue;
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(pollRTU188): poll RTU188 "
{
dlog[Debug::LEVEL3] << myname << "(pollRTU188): poll RTU188 "
<< " mbaddr=" << ModbusRTU::addr2str(d->mbaddr) << " mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
<< endl; << endl;
}
try try
{ {
...@@ -239,22 +236,18 @@ void RTUExchange::poll() ...@@ -239,22 +236,18 @@ void RTUExchange::poll()
d->resp_real = true; d->resp_real = true;
} }
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
if( d->resp_real ) if( d->resp_real )
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
{
dlog.crit() << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " -> " << ex << endl; << " -> " << ex << endl;
}
d->resp_real = false; d->resp_real = false;
} }
} }
} }
else else
{ {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog[Debug::LEVEL3] << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->regmap.size() << endl; << " regs=" << d->regmap.size() << endl;
d->resp_real = false; d->resp_real = false;
...@@ -271,16 +264,14 @@ void RTUExchange::poll() ...@@ -271,16 +264,14 @@ void RTUExchange::poll()
} }
} }
catch( ModbusRTU::mbException& ex ) catch( ModbusRTU::mbException& ex )
{ {
// if( d->resp_real ) // if( d->resp_real )
// { // {
if( dlog.debugging(Debug::LEVEL3) ) dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
{
dlog[Debug::LEVEL3] << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->second->mbreg) << " reg=" << ModbusRTU::dat2str(it->second->mbreg)
<< " for sensors: "; print_plist(dlog(Debug::LEVEL3), it->second->slst); << " for sensors: "; print_plist(dlog(Debug::LEVEL3), it->second->slst);
dlog(Debug::LEVEL3) << " err: " << ex << endl; dlog(Debug::LEVEL3) << " err: " << ex << endl;
}
// d->resp_real = false; // d->resp_real = false;
// } // }
} }
...@@ -299,7 +290,7 @@ void RTUExchange::poll() ...@@ -299,7 +290,7 @@ void RTUExchange::poll()
// update SharedMemory... // update SharedMemory...
updateSM(); updateSM();
// check thresholds // check thresholds
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 ) for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
{ {
...@@ -311,15 +302,14 @@ void RTUExchange::poll() ...@@ -311,15 +302,14 @@ void RTUExchange::poll()
IOBase::processingThreshold( &(*i),shm,force); IOBase::processingThreshold( &(*i),shm,force);
} }
} }
if( trReopen.hi(allNotRespond) ) if( trReopen.hi(allNotRespond) )
ptReopen.reset(); ptReopen.reset();
if( allNotRespond && ptReopen.checkTime() ) if( allNotRespond && ptReopen.checkTime() )
{ {
uniset_mutex_lock l(pollMutex, 300); uniset_mutex_lock l(pollMutex, 300);
if( dlog.is_warn() ) dwarn << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
dlog.warn() << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
mb = initMB(true); mb = initMB(true);
ptReopen.reset(); ptReopen.reset();
...@@ -347,7 +337,7 @@ RTUExchange* RTUExchange::init_rtuexchange( int argc, const char* const* argv, U ...@@ -347,7 +337,7 @@ RTUExchange* RTUExchange::init_rtuexchange( int argc, const char* const* argv, U
return 0; return 0;
} }
dlog.info() << "(rtuexchange): name = " << name << "(" << ID << ")" << endl; dinfo << "(rtuexchange): name = " << name << "(" << ID << ")" << endl;
return new RTUExchange(ID,icID,ic,prefix); return new RTUExchange(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -355,14 +345,14 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX ...@@ -355,14 +345,14 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
{ {
if( !MBExchange::initDeviceInfo(m,a,it) ) if( !MBExchange::initDeviceInfo(m,a,it) )
return false; return false;
RTUDeviceMap::iterator d = m.find(a); RTUDeviceMap::iterator d = m.find(a);
if( d == m.end() ) if( d == m.end() )
{ {
dlog.warn() << myname << "(initDeviceInfo): not found device for addr=" << ModbusRTU::addr2str(a) << endl; dwarn << myname << "(initDeviceInfo): not found device for addr=" << ModbusRTU::addr2str(a) << endl;
return false; return false;
} }
string s = it.getProp("speed"); string s = it.getProp("speed");
if( !s.empty() ) if( !s.empty() )
{ {
...@@ -370,7 +360,7 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX ...@@ -370,7 +360,7 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
if( d->second->speed == ComPort::ComSpeed0 ) if( d->second->speed == ComPort::ComSpeed0 )
{ {
d->second->speed = defSpeed; d->second->speed = defSpeed;
dlog.crit() << myname << "(initDeviceInfo): Unknown speed=" << s << dcrit << myname << "(initDeviceInfo): Unknown speed=" << s <<
" for addr=" << ModbusRTU::addr2str(a) << endl; " for addr=" << ModbusRTU::addr2str(a) << endl;
return false; return false;
} }
......
...@@ -55,7 +55,7 @@ int main( int argc, const char** argv ) ...@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
MBTCPMaster* mb = MBTCPMaster::init_mbmaster(argc,argv,shmID); MBTCPMaster* mb = MBTCPMaster::init_mbmaster(argc,argv,shmID);
if( !mb ) if( !mb )
{ {
dlog.crit() << "(mbmaster): init MBTCPMaster failed." << endl; dcrit << "(mbmaster): init MBTCPMaster failed." << endl;
return 1; return 1;
} }
...@@ -75,11 +75,11 @@ int main( int argc, const char** argv ) ...@@ -75,11 +75,11 @@ int main( int argc, const char** argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(mbtcpmaster): " << ex << std::endl; dcrit << "(mbtcpmaster): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(mbtcpmaster): catch ..." << std::endl; dcrit << "(mbtcpmaster): catch ..." << std::endl;
} }
while( waitpid(-1, 0, 0) > 0 ); while( waitpid(-1, 0, 0) > 0 );
......
...@@ -55,7 +55,7 @@ int main( int argc, const char** argv ) ...@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
MBTCPMultiMaster* mb = MBTCPMultiMaster::init_mbmaster(argc,argv,shmID); MBTCPMultiMaster* mb = MBTCPMultiMaster::init_mbmaster(argc,argv,shmID);
if( !mb ) if( !mb )
{ {
dlog.crit() << "(mbmaster): init MBTCPMaster failed." << endl; dcrit << "(mbmaster): init MBTCPMaster failed." << endl;
return 1; return 1;
} }
...@@ -77,11 +77,11 @@ int main( int argc, const char** argv ) ...@@ -77,11 +77,11 @@ int main( int argc, const char** argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(mbtcpmultimaster): " << ex << std::endl; dcrit << "(mbtcpmultimaster): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(mbtcpmultimaster): catch ..." << std::endl; dcrit << "(mbtcpmultimaster): catch ..." << std::endl;
} }
while( waitpid(-1, 0, 0) > 0 ); while( waitpid(-1, 0, 0) > 0 );
......
...@@ -53,7 +53,7 @@ int main( int argc, char** argv ) ...@@ -53,7 +53,7 @@ int main( int argc, char** argv )
RTUExchange* rs = RTUExchange::init_rtuexchange(argc,argv,shmID,0,"rs"); RTUExchange* rs = RTUExchange::init_rtuexchange(argc,argv,shmID,0,"rs");
if( !rs ) if( !rs )
{ {
dlog.crit() << "(rtuexchange): init не прошёл..." << endl; dcrit << "(rtuexchange): init не прошёл..." << endl;
return 1; return 1;
} }
...@@ -75,11 +75,11 @@ int main( int argc, char** argv ) ...@@ -75,11 +75,11 @@ int main( int argc, char** argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(rtuexchange): " << ex << std::endl; dcrit << "(rtuexchange): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(rtuexchange): catch ..." << std::endl; dcrit << "(rtuexchange): catch ..." << std::endl;
} }
while( waitpid(-1, 0, 0) > 0 ); while( waitpid(-1, 0, 0) > 0 );
......
...@@ -46,7 +46,7 @@ prefix(prefix) ...@@ -46,7 +46,7 @@ prefix(prefix)
// определяем фильтр // определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field"); s_field = conf->getArgParam("--" + prefix + "-filter-field");
s_fvalue = conf->getArgParam("--" + prefix + "-filter-value"); s_fvalue = conf->getArgParam("--" + prefix + "-filter-value");
dlog.info() << myname << "(init): read s_field='" << s_field dinfo << myname << "(init): read s_field='" << s_field
<< "' s_fvalue='" << s_fvalue << "'" << endl; << "' s_fvalue='" << s_fvalue << "'" << endl;
force = conf->getArgInt("--" + prefix + "-force",it.getProp("force")); force = conf->getArgInt("--" + prefix + "-force",it.getProp("force"));
...@@ -61,13 +61,13 @@ prefix(prefix) ...@@ -61,13 +61,13 @@ prefix(prefix)
addr = ModbusRTU::str2mbAddr(saddr); addr = ModbusRTU::str2mbAddr(saddr);
mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id",it.getProp("reg_from_id")); mbregFromID = conf->getArgInt("--" + prefix + "-reg-from-id",it.getProp("reg_from_id"));
dlog.info() << myname << "(init): mbregFromID=" << mbregFromID << endl; dinfo << myname << "(init): mbregFromID=" << mbregFromID << endl;
respond_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-respond-id",it.getProp("respond_id"))); respond_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-respond-id",it.getProp("respond_id")));
respond_invert = conf->getArgInt("--" + prefix + "-respond-invert",it.getProp("respond_invert")); respond_invert = conf->getArgInt("--" + prefix + "-respond-invert",it.getProp("respond_invert"));
string stype = conf->getArgParam("--" + prefix + "-type",it.getProp("type")); string stype = conf->getArgParam("--" + prefix + "-type",it.getProp("type"));
if( stype == "RTU" ) if( stype == "RTU" )
{ {
// ---------- init RS ---------- // ---------- init RS ----------
...@@ -92,7 +92,7 @@ prefix(prefix) ...@@ -92,7 +92,7 @@ prefix(prefix)
mbslot = rs; mbslot = rs;
thr = new ThreadCreator<MBSlave>(this,&MBSlave::execute_rtu); thr = new ThreadCreator<MBSlave>(this,&MBSlave::execute_rtu);
dlog.info() << myname << "(init): type=RTU myaddr=" << ModbusRTU::addr2str(addr) dinfo << myname << "(init): type=RTU myaddr=" << ModbusRTU::addr2str(addr)
<< " dev=" << dev << " speed=" << speed << endl; << " dev=" << dev << " speed=" << speed << endl;
} }
else if( stype == "TCP" ) else if( stype == "TCP" )
...@@ -100,19 +100,17 @@ prefix(prefix) ...@@ -100,19 +100,17 @@ prefix(prefix)
string iaddr = conf->getArgParam("--" + prefix + "-inet-addr",it.getProp("iaddr")); string iaddr = conf->getArgParam("--" + prefix + "-inet-addr",it.getProp("iaddr"));
if( iaddr.empty() ) if( iaddr.empty() )
throw UniSetTypes::SystemError(myname+"(MBSlave): Unknown TCP server address. Use: --prefix-inet-addr [ XXX.XXX.XXX.XXX| hostname ]"); throw UniSetTypes::SystemError(myname+"(MBSlave): Unknown TCP server address. Use: --prefix-inet-addr [ XXX.XXX.XXX.XXX| hostname ]");
int port = conf->getArgPInt("--" + prefix + "-inet-port",it.getProp("iport"), 502); int port = conf->getArgPInt("--" + prefix + "-inet-port",it.getProp("iport"), 502);
if( dlog.is_info() ) dinfo << myname << "(init): type=TCP myaddr=" << ModbusRTU::addr2str(addr)
dlog.info() << myname << "(init): type=TCP myaddr=" << ModbusRTU::addr2str(addr)
<< " inet=" << iaddr << " port=" << port << endl; << " inet=" << iaddr << " port=" << port << endl;
ost::InetAddress ia(iaddr.c_str()); ost::InetAddress ia(iaddr.c_str());
mbslot = new ModbusTCPServerSlot(ia,port); mbslot = new ModbusTCPServerSlot(ia,port);
thr = new ThreadCreator<MBSlave>(this,&MBSlave::execute_tcp); thr = new ThreadCreator<MBSlave>(this,&MBSlave::execute_tcp);
if( dlog.is_info() ) dinfo << myname << "(init): init TCP connection ok. " << " inet=" << iaddr << " port=" << port << endl;
dlog.info() << myname << "(init): init TCP connection ok. " << " inet=" << iaddr << " port=" << port << endl;
} }
else else
throw UniSetTypes::SystemError(myname+"(MBSlave): Unknown slave type. Use: --mbs-type [RTU|TCP]"); throw UniSetTypes::SystemError(myname+"(MBSlave): Unknown slave type. Use: --mbs-type [RTU|TCP]");
...@@ -130,8 +128,8 @@ prefix(prefix) ...@@ -130,8 +128,8 @@ prefix(prefix)
if( findArgParam("--" + prefix + "-allow-setdatetime",conf->getArgc(),conf->getArgv())!=-1 ) if( findArgParam("--" + prefix + "-allow-setdatetime",conf->getArgc(),conf->getArgv())!=-1 )
mbslot->connectSetDateTime( sigc::mem_fun(this, &MBSlave::setDateTime) ); mbslot->connectSetDateTime( sigc::mem_fun(this, &MBSlave::setDateTime) );
mbslot->connectDiagnostics( sigc::mem_fun(this, &MBSlave::diagnostics) ); mbslot->connectDiagnostics( sigc::mem_fun(this, &MBSlave::diagnostics) );
mbslot->connectFileTransfer( sigc::mem_fun(this, &MBSlave::fileTransfer) ); mbslot->connectFileTransfer( sigc::mem_fun(this, &MBSlave::fileTransfer) );
// mbslot->connectJournalCommand( sigc::mem_fun(this, &MBSlave::journalCommand) ); // mbslot->connectJournalCommand( sigc::mem_fun(this, &MBSlave::journalCommand) );
// mbslot->connectRemoteService( sigc::mem_fun(this, &MBSlave::remoteService) ); // mbslot->connectRemoteService( sigc::mem_fun(this, &MBSlave::remoteService) );
...@@ -142,8 +140,7 @@ prefix(prefix) ...@@ -142,8 +140,7 @@ prefix(prefix)
if( shm->isLocalwork() ) if( shm->isLocalwork() )
{ {
readConfiguration(); readConfiguration();
if( dlog.is_info() ) dinfo << myname << "(init): iomap size = " << iomap.size() << endl;
dlog.info() << myname << "(init): iomap size = " << iomap.size() << endl;
} }
else else
{ {
...@@ -161,7 +158,7 @@ prefix(prefix) ...@@ -161,7 +158,7 @@ prefix(prefix)
{ {
ostringstream err; ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart; err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
dlog.crit() << myname << "(init): " << err.str() << endl; dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -181,18 +178,14 @@ prefix(prefix) ...@@ -181,18 +178,14 @@ prefix(prefix)
{ {
ostringstream err; ostringstream err;
err << myname << ": test_id unknown. 'TestMode_S' not found..."; err << myname << ": test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
askcount_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-askcount-id",it.getProp("askcount_id"))); askcount_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-askcount-id",it.getProp("askcount_id")));
if( dlog.is_info() ) dinfo << myname << ": init askcount_id=" << askcount_id << endl;
{ dinfo << myname << ": init test_id=" << test_id << endl;
dlog.info() << myname << ": init askcount_id=" << askcount_id << endl;
dlog.info() << myname << ": init test_id=" << test_id << endl;
}
wait_msec = getHeartBeatTime() - 100; wait_msec = getHeartBeatTime() - 100;
if( wait_msec < 500 ) if( wait_msec < 500 )
...@@ -203,8 +196,7 @@ prefix(prefix) ...@@ -203,8 +196,7 @@ prefix(prefix)
timeout_t msec = conf->getArgPInt("--" + prefix + "-timeout",it.getProp("timeout"), 3000); timeout_t msec = conf->getArgPInt("--" + prefix + "-timeout",it.getProp("timeout"), 3000);
ptTimeout.setTiming(msec); ptTimeout.setTiming(msec);
if( dlog.is_info() ) dinfo << myname << "(init): rs-timeout=" << msec << " msec" << endl;
dlog.info() << myname << "(init): rs-timeout=" << msec << " msec" << endl;
// build file list... // build file list...
xmlNode* fnode = 0; xmlNode* fnode = 0;
...@@ -222,15 +214,13 @@ prefix(prefix) ...@@ -222,15 +214,13 @@ prefix(prefix)
std::string nm = fit.getProp("name"); std::string nm = fit.getProp("name");
if( nm.empty() ) if( nm.empty() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(build file list): ignore empty name... " << endl;
dlog.warn() << myname << "(build file list): ignore empty name... " << endl;
continue; continue;
} }
int id = fit.getIntProp("id"); int id = fit.getIntProp("id");
if( id == 0 ) if( id == 0 )
{ {
if( dlog.is_warn() ) dwarn << myname << "(build file list): FAILED ID for " << nm << "... ignore..." << endl;
dlog.warn() << myname << "(build file list): FAILED ID for " << nm << "... ignore..." << endl;
continue; continue;
} }
...@@ -245,20 +235,19 @@ prefix(prefix) ...@@ -245,20 +235,19 @@ prefix(prefix)
nm = dir + nm; nm = dir + nm;
} }
if( dlog.is_info() ) dinfo << myname << "(init): add to filelist: "
dlog.info() << myname << "(init): add to filelist: "
<< "id=" << id << "id=" << id
<< " file=" << nm << " file=" << nm
<< endl; << endl;
flist[id] = nm; flist[id] = nm;
} }
} }
else if( dlog.is_info() ) else
dlog.info() << myname << "(init): <filelist> empty..." << endl; dinfo << myname << "(init): <filelist> empty..." << endl;
} }
else if( dlog.is_info() ) else
dlog.info() << myname << "(init): <filelist> not found..." << endl; dinfo << myname << "(init): <filelist> not found..." << endl;
// Формирование "карты" ответов на запрос 0x2B(43)/0x0E(14) // Формирование "карты" ответов на запрос 0x2B(43)/0x0E(14)
...@@ -290,8 +279,7 @@ prefix(prefix) ...@@ -290,8 +279,7 @@ prefix(prefix)
{ {
if( dit.getProp("id").empty() ) if( dit.getProp("id").empty() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(init): read <MEI>. Unknown <device id=''>. Ignore.." << endl;
dlog.warn() << myname << "(init): read <MEI>. Unknown <device id=''>. Ignore.." << endl;
continue; continue;
} }
...@@ -300,18 +288,16 @@ prefix(prefix) ...@@ -300,18 +288,16 @@ prefix(prefix)
UniXML_iterator oit(dit); UniXML_iterator oit(dit);
if( oit.goChildren() ) if( oit.goChildren() )
{ {
if( dlog.is_info() ) dwarn << myname << "(init): MEI: read dev='" << devID << "'" << endl;
dlog.info() << myname << "(init): MEI: read dev='" << devID << "'" << endl;
MEIObjIDMap meiomap; MEIObjIDMap meiomap;
// Object ID list.. // Object ID list..
for( ;oit.getCurrent(); oit.goNext() ) for( ;oit.getCurrent(); oit.goNext() )
{ {
if( dit.getProp("id").empty() ) if( dit.getProp("id").empty() )
{ {
if( dlog.is_warn() ) dwarn << myname
dlog.warn() << myname
<< "(init): read <MEI>. Unknown <object id='' (for device id='" << "(init): read <MEI>. Unknown <object id='' (for device id='"
<< devID << "'). Ignore.." << devID << "'). Ignore.."
<< endl; << endl;
continue; continue;
...@@ -321,9 +307,7 @@ prefix(prefix) ...@@ -321,9 +307,7 @@ prefix(prefix)
UniXML_iterator sit(oit); UniXML_iterator sit(oit);
if( sit.goChildren() ) if( sit.goChildren() )
{ {
if( dlog.is_info() ) dinfo << myname << "(init): MEI: read obj='" << objID << "'" << endl;
dlog.info() << myname << "(init): MEI: read obj='" << objID << "'" << endl;
MEIValMap meivmap; MEIValMap meivmap;
// request (string) list.. // request (string) list..
for( ;sit.getCurrent(); sit.goNext() ) for( ;sit.getCurrent(); sit.goNext() )
...@@ -331,14 +315,13 @@ prefix(prefix) ...@@ -331,14 +315,13 @@ prefix(prefix)
int vid = objID; int vid = objID;
if( sit.getProp("id").empty() ) if( sit.getProp("id").empty() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(init): MEI: dev='" << devID
dlog.info() << myname << "(init): MEI: dev='" << devID
<< "' obj='" << objID << "'" << "' obj='" << objID << "'"
<< ". Unknown id='' for value='" << sit.getProp("value") << "'" << ". Unknown id='' for value='" << sit.getProp("value") << "'"
<< ". Set objID='" << objID << "'" << ". Set objID='" << objID << "'"
<< endl; << endl;
} }
else else
vid = sit.getIntProp("id"); vid = sit.getIntProp("id");
meivmap[vid] = sit.getProp("value"); meivmap[vid] = sit.getProp("value");
...@@ -355,11 +338,11 @@ prefix(prefix) ...@@ -355,11 +338,11 @@ prefix(prefix)
} }
} }
if( !meidev.empty() && dlog.is_info() ) if( !meidev.empty() )
dlog.info() << myname << "(init): <MEI> init ok." << endl; dinfo << myname << "(init): <MEI> init ok." << endl;
} }
else if( dlog.is_info() ) else
dlog.info() << myname << "(init): <MEI> empty..." << endl; dinfo << myname << "(init): <MEI> empty..." << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -383,8 +366,7 @@ void MBSlave::waitSMReady() ...@@ -383,8 +366,7 @@ void MBSlave::waitSMReady()
{ {
ostringstream err; ostringstream err;
err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек"; err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -392,7 +374,7 @@ void MBSlave::waitSMReady() ...@@ -392,7 +374,7 @@ void MBSlave::waitSMReady()
void MBSlave::execute_rtu() void MBSlave::execute_rtu()
{ {
ModbusRTUSlaveSlot* rscomm = dynamic_cast<ModbusRTUSlaveSlot*>(mbslot); ModbusRTUSlaveSlot* rscomm = dynamic_cast<ModbusRTUSlaveSlot*>(mbslot);
while(1) while(1)
{ {
try try
...@@ -401,7 +383,7 @@ void MBSlave::execute_rtu() ...@@ -401,7 +383,7 @@ void MBSlave::execute_rtu()
if( res!=ModbusRTU::erTimeOut ) if( res!=ModbusRTU::erTimeOut )
ptTimeout.reset(); ptTimeout.reset();
// собираем статистику обмена // собираем статистику обмена
if( prev!=ModbusRTU::erTimeOut ) if( prev!=ModbusRTU::erTimeOut )
{ {
...@@ -409,12 +391,12 @@ void MBSlave::execute_rtu() ...@@ -409,12 +391,12 @@ void MBSlave::execute_rtu()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1; askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError ) if( res!=ModbusRTU::erNoError )
errmap[res]++; errmap[res]++;
prev = res; prev = res;
} }
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut && dlog.is_warn() ) if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dlog.warn() << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl; dwarn << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl;
if( !activated ) if( !activated )
continue; continue;
...@@ -428,9 +410,8 @@ void MBSlave::execute_rtu() ...@@ -428,9 +410,8 @@ void MBSlave::execute_rtu()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname
dlog.crit() << myname << "(execute_rtu): (hb) " << ex << std::endl;
<< "(execute_rtu): (hb) " << ex << std::endl;
} }
} }
...@@ -446,8 +427,7 @@ void MBSlave::execute_rtu() ...@@ -446,8 +427,7 @@ void MBSlave::execute_rtu()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute_rtu): (respond) " << ex << std::endl;
dlog.crit() << myname << "(execute_rtu): (respond) " << ex << std::endl;
} }
} }
...@@ -459,11 +439,10 @@ void MBSlave::execute_rtu() ...@@ -459,11 +439,10 @@ void MBSlave::execute_rtu()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute_rtu): (askCount) " << ex << std::endl;
dlog.crit() << myname << "(execute_rtu): (askCount) " << ex << std::endl;
} }
} }
for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it ) for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it )
IOBase::processingThreshold(&it->second,shm,force); IOBase::processingThreshold(&it->second,shm,force);
} }
...@@ -483,7 +462,7 @@ void MBSlave::execute_tcp() ...@@ -483,7 +462,7 @@ void MBSlave::execute_tcp()
if( res!=ModbusRTU::erTimeOut ) if( res!=ModbusRTU::erTimeOut )
ptTimeout.reset(); ptTimeout.reset();
// собираем статистику обмена // собираем статистику обмена
if( prev!=ModbusRTU::erTimeOut ) if( prev!=ModbusRTU::erTimeOut )
{ {
...@@ -491,12 +470,12 @@ void MBSlave::execute_tcp() ...@@ -491,12 +470,12 @@ void MBSlave::execute_tcp()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1; askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError ) if( res!=ModbusRTU::erNoError )
errmap[res]++; errmap[res]++;
prev = res; prev = res;
} }
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut && dlog.is_warn() ) if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dlog.warn() << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl; dwarn << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl;
if( !activated ) if( !activated )
continue; continue;
...@@ -510,8 +489,7 @@ void MBSlave::execute_tcp() ...@@ -510,8 +489,7 @@ void MBSlave::execute_tcp()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute_tcp): (hb) " << ex << std::endl;
dlog.crit() << myname << "(execute_tcp): (hb) " << ex << std::endl;
} }
} }
...@@ -526,9 +504,8 @@ void MBSlave::execute_tcp() ...@@ -526,9 +504,8 @@ void MBSlave::execute_tcp()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname
dlog.crit() << myname << "(execute_rtu): (respond) " << ex << std::endl;
<< "(execute_rtu): (respond) " << ex << std::endl;
} }
} }
...@@ -540,9 +517,8 @@ void MBSlave::execute_tcp() ...@@ -540,9 +517,8 @@ void MBSlave::execute_tcp()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname
dlog.crit() << myname << "(execute_rtu): (askCount) " << ex << std::endl;
<< "(execute_rtu): (askCount) " << ex << std::endl;
} }
} }
...@@ -580,20 +556,17 @@ void MBSlave::processingMessage(UniSetTypes::VoidMessage *msg) ...@@ -580,20 +556,17 @@ void MBSlave::processingMessage(UniSetTypes::VoidMessage *msg)
} }
catch( SystemError& ex ) catch( SystemError& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(SystemError): " << ex << std::endl;
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex); // throw SystemError(ex);
raise(SIGTERM); raise(SIGTERM);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): " << ex << std::endl;
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): catch ...\n";
dlog.crit() << myname << "(processingMessage): catch ...\n";
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -605,10 +578,9 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm) ...@@ -605,10 +578,9 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
{ {
if( iomap.empty() ) if( iomap.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(sysCommand): iomap EMPTY! terminated..." << endl;
dlog.crit() << myname << "(sysCommand): iomap EMPTY! terminated..." << endl;
raise(SIGTERM); raise(SIGTERM);
return; return;
} }
waitSMReady(); waitSMReady();
...@@ -618,16 +590,16 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm) ...@@ -618,16 +590,16 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
msleep(initPause); msleep(initPause);
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
cout << myname << "(sysCommand): wait activate..." << endl; cout << myname << "(sysCommand): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
break; break;
} }
if( !activated && dlog.is_crit() ) if( !activated )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl; dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
else else
{ {
UniSetTypes::uniset_rwmutex_rlock l(mutex_start); UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
askSensors(UniversalIO::UIONotify); askSensors(UniversalIO::UIONotify);
...@@ -640,11 +612,11 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm) ...@@ -640,11 +612,11 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
case SystemMessage::Finish: case SystemMessage::Finish:
askSensors(UniversalIO::UIODontNotify); askSensors(UniversalIO::UIODontNotify);
break; break;
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
{ {
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте) // ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
// Если идёт локальная работа // Если идёт локальная работа
// (т.е. MBSlave запущен в одном процессе с SharedMemory2) // (т.е. MBSlave запущен в одном процессе с SharedMemory2)
// то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM // то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM
// при заказе датчиков, а если SM вылетит, то вместе с этим процессом(MBSlave) // при заказе датчиков, а если SM вылетит, то вместе с этим процессом(MBSlave)
...@@ -685,11 +657,11 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -685,11 +657,11 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
if( !shm->waitSMworking(test_id,activateTimeout,50) ) if( !shm->waitSMworking(test_id,activateTimeout,50) )
{ {
ostringstream err; ostringstream err;
err << myname err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение " << "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек"; << activateTimeout << " мсек";
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -707,8 +679,7 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -707,8 +679,7 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(askSensors): " << ex << std::endl;
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
} }
catch(...){} catch(...){}
} }
...@@ -747,17 +718,15 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -747,17 +718,15 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm )
{ {
p = &it->second; p = &it->second;
if( p->si.id == sm->id ) if( p->si.id == sm->id )
p->value = sm->value; p->value = sm->value;
} }
if( dlog.is_crit() ) // вообще этого не может случиться
{ // потому-что корректность проверяется при загрузке
// вообще этого не может случиться if( i != sz )
// потому-что корректность проверяется при загрузке dcrit << myname << "(sensorInfo): update failed for sid=" << sm->id
if( i != sz && dlog.is_crit() )
dlog.crit() << myname << "(sensorInfo): update failed for sid=" << sm->id
<< " (i=" << i << " sz=" << sz << ")" << endl; << " (i=" << i << " sz=" << sz << ")" << endl;
}
return; return;
} }
} }
...@@ -765,7 +734,7 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -765,7 +734,7 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool MBSlave::activateObject() bool MBSlave::activateObject()
{ {
// блокирование обработки Starsp // блокирование обработки Starsp
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. sysCommand()
{ {
...@@ -789,7 +758,7 @@ void MBSlave::sigterm( int signo ) ...@@ -789,7 +758,7 @@ void MBSlave::sigterm( int signo )
mbslot->sigterm(signo); mbslot->sigterm(signo);
} }
catch(...){} catch(...){}
UniSetObject_LT::sigterm(signo); UniSetObject_LT::sigterm(signo);
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -807,8 +776,7 @@ void MBSlave::readConfiguration() ...@@ -807,8 +776,7 @@ void MBSlave::readConfiguration()
UniXML_iterator it(root); UniXML_iterator it(root);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
dlog.crit() << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
return; return;
} }
...@@ -817,7 +785,7 @@ void MBSlave::readConfiguration() ...@@ -817,7 +785,7 @@ void MBSlave::readConfiguration()
if( UniSetTypes::check_filter(it,s_field,s_fvalue) ) if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initItem(it); initItem(it);
} }
// readconf_ok = true; // readconf_ok = true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -843,14 +811,13 @@ bool MBSlave::initItem( UniXML_iterator& it ) ...@@ -843,14 +811,13 @@ bool MBSlave::initItem( UniXML_iterator& it )
string r = it.getProp("mbreg"); string r = it.getProp("mbreg");
if( r.empty() ) if( r.empty() )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
return false; return false;
} }
p.mbreg = ModbusRTU::str2mbData(r); p.mbreg = ModbusRTU::str2mbData(r);
} }
string stype( it.getProp("mb_iotype") ); string stype( it.getProp("mb_iotype") );
if( stype.empty() ) if( stype.empty() )
stype = it.getProp("iotype"); stype = it.getProp("iotype");
...@@ -858,8 +825,7 @@ bool MBSlave::initItem( UniXML_iterator& it ) ...@@ -858,8 +825,7 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.stype = UniSetTypes::getIOType(stype); p.stype = UniSetTypes::getIOType(stype);
if( p.stype == UniversalIO::UnknownIOType ) if( p.stype == UniversalIO::UnknownIOType )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown 'iotype' or 'mb_iotype' for " << it.getProp("name") << endl;
dlog.crit() << myname << "(initItem): Unknown 'iotype' or 'mb_iotype' for " << it.getProp("name") << endl;
return false; return false;
} }
...@@ -876,19 +842,16 @@ bool MBSlave::initItem( UniXML_iterator& it ) ...@@ -876,19 +842,16 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.vtype = VTypes::vtUnknown; p.vtype = VTypes::vtUnknown;
p.wnum = 0; p.wnum = 0;
iomap[p.mbreg] = p; iomap[p.mbreg] = p;
if( dlog.is_info() ) dinfo << myname << "(initItem): add " << p << endl;
dlog.info() << myname << "(initItem): add " << p << endl;
} }
else else
{ {
VTypes::VType v(VTypes::str2type(vt)); VTypes::VType v(VTypes::str2type(vt));
if( v == VTypes::vtUnknown ) if( v == VTypes::vtUnknown )
{ {
if( dlog.is_crit() ) dcrit << myname << "(initItem): Unknown rtuVType=" << vt << " for "
dlog.crit() << myname << "(initItem): Unknown rtuVType=" << vt << " for " << it.getProp("name")
<< it.getProp("name") << endl;
<< endl;
return false; return false;
} }
...@@ -899,8 +862,7 @@ bool MBSlave::initItem( UniXML_iterator& it ) ...@@ -899,8 +862,7 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.mbreg += i; p.mbreg += i;
p.wnum+= i; p.wnum+= i;
iomap[p.mbreg] = p; iomap[p.mbreg] = p;
if( dlog.is_info() ) dinfo << myname << "(initItem): add " << p << endl;
dlog.info() << myname << "(initItem): add " << p << endl;
} }
} }
...@@ -959,14 +921,13 @@ MBSlave* MBSlave::init_mbslave( int argc, const char* const* argv, UniSetTypes:: ...@@ -959,14 +921,13 @@ MBSlave* MBSlave::init_mbslave( int argc, const char* const* argv, UniSetTypes::
ObjectId ID = conf->getObjectID(name); ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
cerr << "(mbslave): идентификатор '" << name cerr << "(mbslave): идентификатор '" << name
<< "' не найден в конф. файле!" << "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl; << " в секции " << conf->getObjectsSection() << endl;
return 0; return 0;
} }
if( dlog.is_info() ) dinfo << "(mbslave): name = " << name << "(" << ID << ")" << endl;
dlog.info() << "(mbslave): name = " << name << "(" << ID << ")" << endl;
return new MBSlave(ID,icID,ic,prefix); return new MBSlave(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -983,16 +944,15 @@ std::ostream& operator<<( std::ostream& os, MBSlave::IOProperty& p ) ...@@ -983,16 +944,15 @@ std::ostream& operator<<( std::ostream& os, MBSlave::IOProperty& p )
{ {
os << p.cal os << p.cal
<< " cdiagram=" << ( p.cdiagram ? "yes" : "no" ); << " cdiagram=" << ( p.cdiagram ? "yes" : "no" );
} }
return os; return os;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& query, ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& query,
ModbusRTU::ReadOutputRetMessage& reply ) ModbusRTU::ReadOutputRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(readOutputRegisters): " << query << endl;
dlog.info() << myname << "(readOutputRegisters): " << query << endl;
if( query.count <= 1 ) if( query.count <= 1 )
{ {
...@@ -1012,7 +972,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& ...@@ -1012,7 +972,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
for( int i=0; i<query.count; i++ ) for( int i=0; i<query.count; i++ )
reply.addData( buf[i] ); reply.addData( buf[i] );
} }
return ret; return ret;
} }
...@@ -1020,21 +980,19 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& ...@@ -1020,21 +980,19 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
ModbusRTU::mbErrCode MBSlave::writeOutputRegisters( ModbusRTU::WriteOutputMessage& query, ModbusRTU::mbErrCode MBSlave::writeOutputRegisters( ModbusRTU::WriteOutputMessage& query,
ModbusRTU::WriteOutputRetMessage& reply ) ModbusRTU::WriteOutputRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(writeOutputRegisters): " << query << endl;
dlog.info() << myname << "(writeOutputRegisters): " << query << endl;
// Формирование ответа: // Формирование ответа:
ModbusRTU::mbErrCode ret = much_real_write(query.start,query.data,query.quant); ModbusRTU::mbErrCode ret = much_real_write(query.start,query.data,query.quant);
if( ret == ModbusRTU::erNoError ) if( ret == ModbusRTU::erNoError )
reply.set(query.start,query.quant); reply.set(query.start,query.quant);
return ret; return ret;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleOutputMessage& query, ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleOutputMessage& query,
ModbusRTU::WriteSingleOutputRetMessage& reply ) ModbusRTU::WriteSingleOutputRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(writeOutputSingleRegisters): " << query << endl;
dlog.info() << myname << "(writeOutputSingleRegisters): " << query << endl;
ModbusRTU::mbErrCode ret = real_write(query.start,query.data); ModbusRTU::mbErrCode ret = real_write(query.start,query.data);
if( ret == ModbusRTU::erNoError ) if( ret == ModbusRTU::erNoError )
...@@ -1045,11 +1003,10 @@ ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleO ...@@ -1045,11 +1003,10 @@ ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleO
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData* dat, ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData* dat,
int count ) int count )
{ if( dlog.is_info() ) {
{ dinfo << myname << "(much_real_write): read mbID="
dlog.info() << myname << "(much_real_write): read mbID="
<< ModbusRTU::dat2str(reg) << " count=" << count << endl; << ModbusRTU::dat2str(reg) << " count=" << count << endl;
}
int i=0; int i=0;
IOMap::iterator it = iomap.end(); IOMap::iterator it = iomap.end();
...@@ -1074,19 +1031,16 @@ ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, Modbus ...@@ -1074,19 +1031,16 @@ ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, Modbus
it++; it++;
} }
} }
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData mbval ) ModbusRTU::mbErrCode MBSlave::real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData mbval )
{ {
if( dlog.is_info() ) dinfo << myname << "(write): save mbID="
{ << ModbusRTU::dat2str(reg)
dlog.info() << myname << "(write): save mbID="
<< ModbusRTU::dat2str(reg)
<< " data=" << ModbusRTU::dat2str(mbval) << " data=" << ModbusRTU::dat2str(mbval)
<< "(" << (int)mbval << ")" << endl; << "(" << (int)mbval << ")" << endl;
}
IOMap::iterator it = iomap.find(reg); IOMap::iterator it = iomap.find(reg);
return real_write_it(it,mbval); return real_write_it(it,mbval);
...@@ -1128,7 +1082,7 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod ...@@ -1128,7 +1082,7 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
long val = (signed short)(mbval); long val = (signed short)(mbval);
IOBase::processingAsAI( p, val, shm, force ); IOBase::processingAsAI( p, val, shm, force );
} }
/* /*
else if( p->vtype == VTypes::vtByte ) else if( p->vtype == VTypes::vtByte )
{ {
VTypes::Byte b(r->mbval); VTypes::Byte b(r->mbval);
...@@ -1141,10 +1095,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod ...@@ -1141,10 +1095,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F2::wsize()]; ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F2::wsize()];
for( int k=0; k<VTypes::F2::wsize(); k++, i++ ) for( int k=0; k<VTypes::F2::wsize(); k++, i++ )
data[k] = i->second->mbval; data[k] = i->second->mbval;
VTypes::F2 f(data,VTypes::F2::wsize()); VTypes::F2 f(data,VTypes::F2::wsize());
delete[] data; delete[] data;
IOBase::processingFasAI( p, (float)f, shm, force ); IOBase::processingFasAI( p, (float)f, shm, force );
} }
else if( p->vtype == VTypes::vtF4 ) else if( p->vtype == VTypes::vtF4 )
...@@ -1154,10 +1108,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod ...@@ -1154,10 +1108,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F4::wsize()]; ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F4::wsize()];
for( int k=0; k<VTypes::F4::wsize(); k++, i++ ) for( int k=0; k<VTypes::F4::wsize(); k++, i++ )
data[k] = i->second->mbval; data[k] = i->second->mbval;
VTypes::F4 f(data,VTypes::F4::wsize()); VTypes::F4 f(data,VTypes::F4::wsize());
delete[] data; delete[] data;
IOBase::processingFasAI( p, (float)f, shm, force ); IOBase::processingFasAI( p, (float)f, shm, force );
} }
*/ */
...@@ -1180,31 +1134,29 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod ...@@ -1180,31 +1134,29 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
} }
catch( UniSetTypes::NameNotFound& ex ) catch( UniSetTypes::NameNotFound& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(write): " << ex << endl;
dlog.warn() << myname << "(write): " << ex << endl;
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
} }
catch( UniSetTypes::OutOfRange& ex ) catch( UniSetTypes::OutOfRange& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(write): " << ex << endl;
dlog.warn() << myname << "(write): " << ex << endl;
return ModbusRTU::erBadDataValue; return ModbusRTU::erBadDataValue;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(write): " << ex << endl; dcrit << myname << "(write): " << ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(write): СORBA::SystemException: " dcrit << myname << "(write): СORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(write) catch ..." << endl; dcrit << myname << "(write) catch ..." << endl;
} }
pingOK = false; pingOK = false;
...@@ -1214,11 +1166,8 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod ...@@ -1214,11 +1166,8 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData* dat, ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData* dat,
int count ) int count )
{ {
if( dlog.is_info() ) dinfo << myname << "(much_real_read): read mbID="
{
dlog.info() << myname << "(much_real_read): read mbID="
<< ModbusRTU::dat2str(reg) << " count=" << count << endl; << ModbusRTU::dat2str(reg) << " count=" << count << endl;
}
IOMap::iterator it = iomap.end(); IOMap::iterator it = iomap.end();
int i=0; int i=0;
...@@ -1236,7 +1185,7 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR ...@@ -1236,7 +1185,7 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR
if( it == iomap.end() ) if( it == iomap.end() )
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
ModbusRTU::ModbusData val=0; ModbusRTU::ModbusData val=0;
for( ; (it!=iomap.end()) && (i<count); i++,reg++ ) for( ; (it!=iomap.end()) && (i<count); i++,reg++ )
{ {
...@@ -1256,18 +1205,15 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR ...@@ -1256,18 +1205,15 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR
{ {
for( ; i<count; i++ ) for( ; i<count; i++ )
dat[i] = 0; dat[i] = 0;
} }
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::real_read( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData& val ) ModbusRTU::mbErrCode MBSlave::real_read( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData& val )
{ {
if( dlog.is_info() ) dinfo << myname << "(real_read): read mbID="
{
dlog.info() << myname << "(real_read): read mbID="
<< ModbusRTU::dat2str(reg) << endl; << ModbusRTU::dat2str(reg) << endl;
}
IOMap::iterator it = iomap.find(reg); IOMap::iterator it = iomap.find(reg);
return real_read_it(it,val); return real_read_it(it,val);
...@@ -1280,19 +1226,16 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb ...@@ -1280,19 +1226,16 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
try try
{ {
if( dlog.is_info() ) dinfo << myname << "(real_read_it): read mbID="
{
dlog.info() << myname << "(real_read_it): read mbID="
<< ModbusRTU::dat2str(it->first) << endl; << ModbusRTU::dat2str(it->first) << endl;
}
IOProperty* p(&it->second); IOProperty* p(&it->second);
val = 0; val = 0;
if( p->amode == MBSlave::amWO ) if( p->amode == MBSlave::amWO )
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
if( p->stype == UniversalIO::DI || if( p->stype == UniversalIO::DI ||
p->stype == UniversalIO::DO ) p->stype == UniversalIO::DO )
{ {
val = IOBase::processingAsDO(p,shm,force) ? 1 : 0; val = IOBase::processingAsDO(p,shm,force) ? 1 : 0;
...@@ -1303,7 +1246,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb ...@@ -1303,7 +1246,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
if( p->vtype == VTypes::vtUnknown ) if( p->vtype == VTypes::vtUnknown )
{ {
val = IOBase::processingAsAO(p,shm,force); val = IOBase::processingAsAO(p,shm,force);
} }
if( p->vtype == VTypes::vtF2 ) if( p->vtype == VTypes::vtF2 )
{ {
float f = IOBase::processingFasAO(p,shm,force); float f = IOBase::processingFasAO(p,shm,force);
...@@ -1355,31 +1298,29 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb ...@@ -1355,31 +1298,29 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
} }
catch( UniSetTypes::NameNotFound& ex ) catch( UniSetTypes::NameNotFound& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(real_read_it): " << ex << endl;
dlog.warn() << myname << "(real_read_it): " << ex << endl;
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
} }
catch( UniSetTypes::OutOfRange& ex ) catch( UniSetTypes::OutOfRange& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(real_read_it): " << ex << endl;
dlog.warn() << myname << "(real_read_it): " << ex << endl;
return ModbusRTU::erBadDataValue; return ModbusRTU::erBadDataValue;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(real_read_it): " << ex << endl; dcrit << myname << "(real_read_it): " << ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(real_read_it): CORBA::SystemException: " dcrit << myname << "(real_read_it): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(real_read_it) catch ..." << endl; dcrit << myname << "(real_read_it) catch ..." << endl;
} }
pingOK = false; pingOK = false;
...@@ -1389,8 +1330,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb ...@@ -1389,8 +1330,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMessage& reply ) mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(readInputRegisters): " << query << endl;
dlog.info() << myname << "(readInputRegisters): " << query << endl;
if( query.count <= 1 ) if( query.count <= 1 )
{ {
...@@ -1400,7 +1340,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess ...@@ -1400,7 +1340,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess
reply.addData(d); reply.addData(d);
else else
reply.addData(0); reply.addData(0);
return ret; return ret;
} }
...@@ -1411,7 +1351,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess ...@@ -1411,7 +1351,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess
for( int i=0; i<query.count; i++ ) for( int i=0; i<query.count; i++ )
reply.addData( buf[i] ); reply.addData( buf[i] );
} }
return ret; return ret;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -1426,13 +1366,12 @@ ModbusRTU::mbErrCode MBSlave::remoteService( ModbusRTU::RemoteServiceMessage& qu ...@@ -1426,13 +1366,12 @@ ModbusRTU::mbErrCode MBSlave::remoteService( ModbusRTU::RemoteServiceMessage& qu
{ {
// cerr << "(remoteService): " << query << endl; // cerr << "(remoteService): " << query << endl;
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& query, ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& query,
ModbusRTU::FileTransferRetMessage& reply ) ModbusRTU::FileTransferRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(fileTransfer): " << query << endl;
dlog.info() << myname << "(fileTransfer): " << query << endl;
FileList::iterator it = flist.find(query.numfile); FileList::iterator it = flist.find(query.numfile);
if( it == flist.end() ) if( it == flist.end() )
...@@ -1440,7 +1379,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer ...@@ -1440,7 +1379,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
std::string fname(it->second); std::string fname(it->second);
return ModbusServer::replyFileTransfer( fname,query,reply,&dlog ); return ModbusServer::replyFileTransfer( fname,query,reply,&dlog );
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query, ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
ReadCoilRetMessage& reply ) ReadCoilRetMessage& reply )
...@@ -1452,8 +1391,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query, ...@@ -1452,8 +1391,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query, ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
ReadInputStatusRetMessage& reply ) ReadInputStatusRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(readInputStatus): " << query << endl;
dlog.info() << myname << "(readInputStatus): " << query << endl;
try try
{ {
...@@ -1466,7 +1404,7 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query, ...@@ -1466,7 +1404,7 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
reply.setBit(0,0,d); reply.setBit(0,0,d);
else else
reply.setBit(0,0,0); reply.setBit(0,0,0);
pingOK = true; pingOK = true;
return ret; return ret;
} }
...@@ -1488,36 +1426,34 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query, ...@@ -1488,36 +1426,34 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
} }
catch( UniSetTypes::NameNotFound& ex ) catch( UniSetTypes::NameNotFound& ex )
{ {
if( dlog.is_warn() ) dwarn << myname << "(readInputStatus): " << ex << endl;
dlog.warn() << myname << "(readInputStatus): " << ex << endl;
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(readInputStatus): " << ex << endl; dcrit << myname << "(readInputStatus): " << ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(readInputStatus): СORBA::SystemException: " dcrit << myname << "(readInputStatus): СORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( pingOK && dlog.is_crit() ) if( pingOK )
dlog.crit() << myname << "(readInputStatus): catch ..." << endl; dcrit << myname << "(readInputStatus): catch ..." << endl;
} }
pingOK = false; pingOK = false;
return ModbusRTU::erTimeOut; return ModbusRTU::erTimeOut;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query, ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query,
ModbusRTU::ForceCoilsRetMessage& reply ) ModbusRTU::ForceCoilsRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(forceMultipleCoils): " << query << endl;
dlog.info() << myname << "(forceMultipleCoils): " << query << endl;
ModbusRTU::mbErrCode ret = ModbusRTU::erNoError; ModbusRTU::mbErrCode ret = ModbusRTU::erNoError;
int nbit = 0; int nbit = 0;
...@@ -1526,24 +1462,23 @@ ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& ...@@ -1526,24 +1462,23 @@ ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage&
ModbusRTU::DataBits b(query.data[i]); ModbusRTU::DataBits b(query.data[i]);
for( int k=0; k<ModbusRTU::BitsPerByte && nbit<query.quant; k++, nbit++ ) for( int k=0; k<ModbusRTU::BitsPerByte && nbit<query.quant; k++, nbit++ )
{ {
// ModbusRTU::mbErrCode ret = // ModbusRTU::mbErrCode ret =
real_write(query.start+nbit, (b[k] ? 1 : 0) ); real_write(query.start+nbit, (b[k] ? 1 : 0) );
//if( ret == ModbusRTU::erNoError ) //if( ret == ModbusRTU::erNoError )
} }
} }
//if( ret == ModbusRTU::erNoError ) //if( ret == ModbusRTU::erNoError )
if( nbit == query.quant ) if( nbit == query.quant )
reply.set(query.start,query.quant); reply.set(query.start,query.quant);
return ret; return ret;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage& query, ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage& query,
ModbusRTU::ForceSingleCoilRetMessage& reply ) ModbusRTU::ForceSingleCoilRetMessage& reply )
{ {
if( dlog.is_info() ) dinfo << myname << "(forceSingleCoil): " << query << endl;
dlog.info() << myname << "(forceSingleCoil): " << query << endl;
ModbusRTU::mbErrCode ret = real_write(query.start, (query.cmd() ? 1 : 0) ); ModbusRTU::mbErrCode ret = real_write(query.start, (query.cmd() ? 1 : 0) );
if( ret == ModbusRTU::erNoError ) if( ret == ModbusRTU::erNoError )
...@@ -1552,7 +1487,7 @@ ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage ...@@ -1552,7 +1487,7 @@ ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage
return ret; return ret;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query, ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
ModbusRTU::DiagnosticRetMessage& reply ) ModbusRTU::DiagnosticRetMessage& reply )
{ {
if( query.subf == ModbusRTU::subEcho ) if( query.subf == ModbusRTU::subEcho )
...@@ -1560,14 +1495,14 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query, ...@@ -1560,14 +1495,14 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
reply = query; reply = query;
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
} }
if( query.subf == ModbusRTU::dgBusErrCount ) if( query.subf == ModbusRTU::dgBusErrCount )
{ {
reply = query; reply = query;
reply.data[0] = errmap[ModbusRTU::erBadCheckSum]; reply.data[0] = errmap[ModbusRTU::erBadCheckSum];
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
} }
if( query.subf == ModbusRTU::dgMsgSlaveCount || query.subf == ModbusRTU::dgBusMsgCount ) if( query.subf == ModbusRTU::dgMsgSlaveCount || query.subf == ModbusRTU::dgBusMsgCount )
{ {
reply = query; reply = query;
...@@ -1590,16 +1525,15 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query, ...@@ -1590,16 +1525,15 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
// другие счётчики пока не сбрасываем.. // другие счётчики пока не сбрасываем..
reply = query; reply = query;
return ModbusRTU::erNoError; return ModbusRTU::erNoError;
} }
return ModbusRTU::erOperationFailed; return ModbusRTU::erOperationFailed;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::read4314( ModbusRTU::MEIMessageRDI& query, ModbusRTU::mbErrCode MBSlave::read4314( ModbusRTU::MEIMessageRDI& query,
ModbusRTU::MEIMessageRetRDI& reply ) ModbusRTU::MEIMessageRetRDI& reply )
{ {
if( dlog.is_info() ) dinfo << "(read4314): " << query << endl;
dlog.info() << "(read4314): " << query << endl;
// if( query.devID <= rdevMinNum || query.devID >= rdevMaxNum ) // if( query.devID <= rdevMinNum || query.devID >= rdevMaxNum )
// return erOperationFailed; // return erOperationFailed;
...@@ -1611,12 +1545,12 @@ ModbusRTU::mbErrCode MBSlave::read4314( ModbusRTU::MEIMessageRDI& query, ...@@ -1611,12 +1545,12 @@ ModbusRTU::mbErrCode MBSlave::read4314( ModbusRTU::MEIMessageRDI& query,
MEIObjIDMap::iterator oit = dit->second.find(query.objID); MEIObjIDMap::iterator oit = dit->second.find(query.objID);
if( oit == dit->second.end() ) if( oit == dit->second.end() )
return ModbusRTU::erBadDataAddress; return ModbusRTU::erBadDataAddress;
reply.mf = 0xFF; reply.mf = 0xFF;
reply.conformity = query.devID; reply.conformity = query.devID;
for( MEIValMap::iterator i=oit->second.begin(); i!=oit->second.end(); i++ ) for( MEIValMap::iterator i=oit->second.begin(); i!=oit->second.end(); i++ )
reply.addData( i->first, i->second ); reply.addData( i->first, i->second );
return erNoError; return erNoError;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -60,7 +60,7 @@ int main(int argc, const char **argv) ...@@ -60,7 +60,7 @@ int main(int argc, const char **argv)
MBSlave* s = MBSlave::init_mbslave(argc,argv,shmID); MBSlave* s = MBSlave::init_mbslave(argc,argv,shmID);
if( !s ) if( !s )
{ {
dlog.crit() << "(mbslave): init не прошёл..." << endl; dcrit << "(mbslave): init не прошёл..." << endl;
return 1; return 1;
} }
...@@ -80,19 +80,19 @@ int main(int argc, const char **argv) ...@@ -80,19 +80,19 @@ int main(int argc, const char **argv)
} }
catch( SystemError& err ) catch( SystemError& err )
{ {
dlog.crit() << "(mbslave): " << err << endl; dcrit << "(mbslave): " << err << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(mbslave): " << ex << endl; dcrit << "(mbslave): " << ex << endl;
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
dlog.crit() << "(mbslave): " << e.what() << endl; dcrit << "(mbslave): " << e.what() << endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(mbslave): catch(...)" << endl; dcrit << "(mbslave): catch(...)" << endl;
} }
while( waitpid(-1, 0, 0) > 0 ); while( waitpid(-1, 0, 0) > 0 );
......
...@@ -17,7 +17,7 @@ UObject_SK(objId,cnode), ...@@ -17,7 +17,7 @@ UObject_SK(objId,cnode),
shm( new SMInterface(shmId,&ui,objId,ic) ), shm( new SMInterface(shmId,&ui,objId,ic) ),
prefix(prefix) prefix(prefix)
{ {
dlog = log; mylog = log;
UniXML::iterator it(cnode); UniXML::iterator it(cnode);
UniXML::iterator it1(cnode); UniXML::iterator it1(cnode);
...@@ -25,8 +25,7 @@ prefix(prefix) ...@@ -25,8 +25,7 @@ prefix(prefix)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): empty rrd list..."; err << myname << "(init): empty rrd list...";
if( RRDServer::dlog.is_crit() ) mylog << err.str() << endl;
RRDServer::dlog.crit() << err.str() << endl;
throw NameNotFound(err.str()); throw NameNotFound(err.str());
} }
...@@ -58,8 +57,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -58,8 +57,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
int lastup = it.getPIntProp("lastup",0); int lastup = it.getPIntProp("lastup",0);
bool overwrite = it.getPIntProp("overwrite",0); bool overwrite = it.getPIntProp("overwrite",0);
if( RRDServer::dlog.is_info() ) myinfo << myname << "(init): add rrd: file='" << fname
RRDServer::dlog.info() << myname << "(init): add rrd: file='" << fname
<< " " << ff << "='" << fv << " " << ff << "='" << fv
<< "' create='" << cf << "'" << "' create='" << cf << "'"
<< " step=" << rrdstep << " step=" << rrdstep
...@@ -72,7 +70,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -72,7 +70,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): rrd='" << fname << "' Unknown RRA list"; err << myname << "(init): rrd='" << fname << "' Unknown RRA list";
RRDServer::dlog.crit() << err.str(); mycrit << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -83,8 +81,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -83,8 +81,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): rrd='" << fname << "' Unkown RRA item.. <item rra='...'"; err << myname << "(init): rrd='" << fname << "' Unkown RRA item.. <item rra='...'";
if( RRDServer::dlog.is_crit() ) mycrit << err.str();
RRDServer::dlog.crit() << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -95,8 +92,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -95,8 +92,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Not found RRA items..."; err << myname << "(init): Not found RRA items...";
if( RRDServer::dlog.is_crit() ) mycrit << err.str() << endl;
RRDServer::dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -108,8 +104,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -108,8 +104,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Not found section <sensors>"; err << myname << "(init): Not found section <sensors>";
if( RRDServer::dlog.is_crit() ) mycrit << err.str();
RRDServer::dlog.crit() << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -118,8 +113,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -118,8 +113,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): section <sensors> empty?!"; err << myname << "(init): section <sensors> empty?!";
if( RRDServer::dlog.is_crit() ) mycrit << err.str();
RRDServer::dlog.crit() << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -138,8 +132,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -138,8 +132,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Unknown create parameters ('" << cf << "')"; err << myname << "(init): Unknown create parameters ('" << cf << "')";
if( RRDServer::dlog.is_crit() ) mycrit << err.str();
RRDServer::dlog.crit() << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -153,8 +146,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -153,8 +146,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Unknown SensorID for '" << dsname << "'"; err << myname << "(init): Unknown SensorID for '" << dsname << "'";
if( RRDServer::dlog.is_crit() ) mycrit << err.str();
RRDServer::dlog.crit() << err.str();
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -166,8 +158,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -166,8 +158,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Not found RRD items..."; err << myname << "(init): Not found RRD items...";
if( RRDServer::dlog.is_crit() ) mycrit << err.str() << endl;
RRDServer::dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -187,8 +178,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -187,8 +178,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
// Собственно создаём RRD // Собственно создаём RRD
if( !overwrite && file_exist(fname) ) if( !overwrite && file_exist(fname) )
{ {
if( RRDServer::dlog.is_info() ) myinfo << myname << "(init): ignore create file='" << fname
RRDServer::dlog.info() << myname << "(init): ignore create file='" << fname
<< "'. File exist... overwrite=0." << endl; << "'. File exist... overwrite=0." << endl;
} }
else else
...@@ -198,8 +188,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -198,8 +188,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Can`t create RRD ('" << fname << "'): err: " << string(rrd_get_error()); err << myname << "(init): Can`t create RRD ('" << fname << "'): err: " << string(rrd_get_error());
if( RRDServer::dlog.is_crit() ) mycrit << err.str() << endl;
RRDServer::dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -215,11 +204,11 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -215,11 +204,11 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
} }
/* catch( Exception& ex ) /* catch( Exception& ex )
{ {
RRDServer::dlog.crit() << myname << "(init) " << ex << std::endl; mycrit << myname << "(init) " << ex << std::endl;
} }
catch( ... ) catch( ... )
{ {
RRDServer::dlog.crit() << myname << "(init): catch ..." << std::endl; mycrit << myname << "(init): catch ..." << std::endl;
} }
*/ */
} }
...@@ -240,14 +229,14 @@ RRDServer* RRDServer::init_rrdstorage( int argc, const char* const* argv, ...@@ -240,14 +229,14 @@ RRDServer* RRDServer::init_rrdstorage( int argc, const char* const* argv,
string name = conf->getArgParam("--" + prefix + "-name","RRDServer"); string name = conf->getArgParam("--" + prefix + "-name","RRDServer");
if( name.empty() ) if( name.empty() )
{ {
UniSetExtensions::dlog.crit() << "(RRDServer): Unknown name. Usage: --" << prefix << "-name" << endl; dcrit << "(RRDServer): Unknown name. Usage: --" << prefix << "-name" << endl;
return 0; return 0;
} }
ObjectId ID = conf->getObjectID(name); ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
UniSetExtensions::dlog.crit() << "(RRDServer): Not found ID for '" << name dcrit << "(RRDServer): Not found ID for '" << name
<< " in '" << conf->getObjectsSection() << "' section" << endl; << " in '" << conf->getObjectsSection() << "' section" << endl;
return 0; return 0;
} }
...@@ -256,12 +245,11 @@ RRDServer* RRDServer::init_rrdstorage( int argc, const char* const* argv, ...@@ -256,12 +245,11 @@ RRDServer* RRDServer::init_rrdstorage( int argc, const char* const* argv,
xmlNode* cnode = conf->getNode(confname); xmlNode* cnode = conf->getNode(confname);
if( !cnode ) if( !cnode )
{ {
UniSetExtensions::dlog.crit() << "(RRDServer): " << name << "(init): Not found <" + confname + ">" << endl; dcrit << "(RRDServer): " << name << "(init): Not found <" + confname + ">" << endl;
return 0; return 0;
} }
if( UniSetExtensions::dlog.is_info() ) dinfo << "(RRDServer): name = " << name << "(" << ID << ")" << endl;
UniSetExtensions::dlog.info() << "(RRDServer): name = " << name << "(" << ID << ")" << endl;
return new RRDServer(ID,cnode,icID,ic,prefix); return new RRDServer(ID,cnode,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -279,8 +267,7 @@ void RRDServer::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -279,8 +267,7 @@ void RRDServer::askSensors( UniversalIO::UIOCommand cmd )
} }
catch( std::exception& ex ) catch( std::exception& ex )
{ {
if( RRDServer::dlog.is_crit() ) mycrit << myname << "(askSensors): " << ex.what() << endl;
RRDServer::dlog.crit() << myname << "(askSensors): " << ex.what() << endl;
} }
} }
} }
...@@ -299,8 +286,7 @@ void RRDServer::sysCommand( UniSetTypes::SystemMessage* sm ) ...@@ -299,8 +286,7 @@ void RRDServer::sysCommand( UniSetTypes::SystemMessage* sm )
} }
catch( std::exception& ex ) catch( std::exception& ex )
{ {
if( RRDServer::dlog.is_crit() ) mycrit << myname << "(askTimer): " << ex.what() << endl;
RRDServer::dlog.crit() << myname << "(askTimer): " << ex.what() << endl;
} }
} }
} }
...@@ -330,8 +316,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -330,8 +316,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm )
for( DSMap::iterator s=it->dsmap.begin(); s!=it->dsmap.end(); ++s ) for( DSMap::iterator s=it->dsmap.begin(); s!=it->dsmap.end(); ++s )
v << ":" << s->second.value; v << ":" << s->second.value;
if( RRDServer::dlog.is_info() ) myinfo << myname << "(update): '" << it->filename << "' " << v.str() << endl;
RRDServer::dlog.info() << myname << "(update): '" << it->filename << "' " << v.str() << endl;
rrd_clear_error(); rrd_clear_error();
const char* argv = v.str().c_str(); const char* argv = v.str().c_str();
...@@ -339,8 +324,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm ) ...@@ -339,8 +324,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm )
{ {
ostringstream err; ostringstream err;
err << myname << "(update): Can`t update RRD ('" << it->filename << "'): err: " << string(rrd_get_error()); err << myname << "(update): Can`t update RRD ('" << it->filename << "'): err: " << string(rrd_get_error());
if( RRDServer::dlog.is_crit() ) mycrit << err.str() << endl;
RRDServer::dlog.crit() << err.str() << endl;
} }
break; break;
......
...@@ -54,7 +54,7 @@ int main( int argc, const char** argv ) ...@@ -54,7 +54,7 @@ int main( int argc, const char** argv )
RRDServer* db = RRDServer::init_rrdstorage(argc,argv,shmID); RRDServer* db = RRDServer::init_rrdstorage(argc,argv,shmID);
if( !db ) if( !db )
{ {
dlog.crit() << "(rrdstorage): init не прошёл..." << endl; dcrit << "(rrdstorage): init не прошёл..." << endl;
return 1; return 1;
} }
...@@ -73,11 +73,11 @@ int main( int argc, const char** argv ) ...@@ -73,11 +73,11 @@ int main( int argc, const char** argv )
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
dlog.crit() << "(rrdstorage): " << ex << std::endl; dcrit << "(rrdstorage): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(rrdstorage): catch ..." << std::endl; dcrit << "(rrdstorage): catch ..." << std::endl;
} }
return 1; return 1;
......
...@@ -10,195 +10,192 @@ using namespace UniSetTypes; ...@@ -10,195 +10,192 @@ using namespace UniSetTypes;
using namespace UniSetExtensions; using namespace UniSetExtensions;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
SMDBServer::SMDBServer( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, SharedMemory* ic, SMDBServer::SMDBServer( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, SharedMemory* ic,
const string prefix ): const string prefix ):
DBServer_MySQL(objId), DBServer_MySQL(objId),
prefix(prefix) prefix(prefix)
{ {
if( objId == DefaultObjectId ) if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(SMDBServer): objId=-1?!! Use --" + prefix + "-name" ); throw UniSetTypes::SystemError("(SMDBServer): objId=-1?!! Use --" + prefix + "-name" );
// xmlNode* cnode = conf->getNode(myname); // xmlNode* cnode = conf->getNode(myname);
// if( cnode == NULL ) // if( cnode == NULL )
// throw UniSetTypes::SystemError("(SMDBServer): Not found conf-node for " + myname ); // throw UniSetTypes::SystemError("(SMDBServer): Not found conf-node for " + myname );
xmlNode* cnode = conf->getNode("LocalDBServer"); xmlNode* cnode = conf->getNode("LocalDBServer");
if( !cnode ) if( !cnode )
throw NameNotFound(string(myname+"(init): <LocalDBServer> not found..")); throw NameNotFound(string(myname+"(init): <LocalDBServer> not found.."));
shm = new SMInterface(shmId,&ui,objId,ic); shm = new SMInterface(shmId,&ui,objId,ic);
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
db_locale = conf->getArgParam("--" + prefix + "-locale",it.getProp("locale")); db_locale = conf->getArgParam("--" + prefix + "-locale",it.getProp("locale"));
if( db_locale.empty() ) if( db_locale.empty() )
db_locale = "utf8"; db_locale = "utf8";
// ********** HEARTBEAT ************* // ********** HEARTBEAT *************
string heart = conf->getArgParam("--" + prefix + "-heartbeat-id",it.getProp("heartbeat_id")); string heart = conf->getArgParam("--" + prefix + "-heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() ) if( !heart.empty() )
{ {
sidHeartBeat = conf->getSensorID(heart); sidHeartBeat = conf->getSensorID(heart);
if( sidHeartBeat == DefaultObjectId ) if( sidHeartBeat == DefaultObjectId )
{ {
ostringstream err; ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart; err << myname << ": ID not found ('HeartBeat') for " << heart;
dlog.crit() << myname << "(init): " << err.str() << endl; dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
int heartbeatTime = conf->getArgPInt("--" + prefix + "-heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + prefix + "-heartbeat-max",it.getProp("heartbeat_max"), 10);
test_id = sidHeartBeat;
}
else
{
test_id = conf->getSensorID("TestMode_S");
if( test_id == DefaultObjectId )
{
ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
dlog.info() << myname << "(init): test_id=" << test_id << endl; int heartbeatTime = getHeartBeatTime();
if( heartbeatTime )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + prefix + "-heartbeat-max",it.getProp("heartbeat_max"), 10);
test_id = sidHeartBeat;
}
else
{
test_id = conf->getSensorID("TestMode_S");
if( test_id == DefaultObjectId )
{
ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
dinfo << myname << "(init): test_id=" << test_id << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
SMDBServer::~SMDBServer() SMDBServer::~SMDBServer()
{ {
delete shm; delete shm;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SMDBServer::waitSMReady() void SMDBServer::waitSMReady()
{ {
// waiting for SM is ready... // waiting for SM is ready...
int ready_timeout = conf->getArgInt("--" + prefix + "-sm-ready-timeout","15000"); int ready_timeout = conf->getArgInt("--" + prefix + "-sm-ready-timeout","15000");
if( ready_timeout == 0 ) if( ready_timeout == 0 )
ready_timeout = 15000; ready_timeout = 15000;
else if( ready_timeout < 0 ) else if( ready_timeout < 0 )
ready_timeout = UniSetTimer::WaitUpTime; ready_timeout = UniSetTimer::WaitUpTime;
if( !shm->waitSMready(ready_timeout, 50) ) if( !shm->waitSMready(ready_timeout, 50) )
{ {
ostringstream err; ostringstream err;
err << myname << "(waitSMReady): Wait SharedMemory failed. [ " << ready_timeout << " msec ]"; err << myname << "(waitSMReady): Wait SharedMemory failed. [ " << ready_timeout << " msec ]";
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SMDBServer::step() void SMDBServer::step()
{ {
// DBServer_MySQL::step(); // DBServer_MySQL::step();
if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() ) if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{ {
try try
{ {
shm->localSaveValue(aitHeartBeat,sidHeartBeat,maxHeartBeat,getId()); shm->localSaveValue(aitHeartBeat,sidHeartBeat,maxHeartBeat,getId());
ptHeartBeat.reset(); ptHeartBeat.reset();
} }
catch(Exception& ex) catch(Exception& ex)
{ {
dlog.crit() << myname << "(step): (hb) " << ex << std::endl; dcrit << myname << "(step): (hb) " << ex << std::endl;
} }
} }
} }
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
void SMDBServer::initDB( DBInterface *db ) void SMDBServer::initDB( DBInterface *db )
{ {
{ {
std::ostringstream q; std::ostringstream q;
q << "SET NAMES " << db_locale; q << "SET NAMES " << db_locale;
db->query(q.str()); db->query(q.str());
} }
{ {
std::ostringstream q; std::ostringstream q;
q << "SET CHARACTER SET " << db_locale; q << "SET CHARACTER SET " << db_locale;
db->query(q.str()); db->query(q.str());
} }
try try
{ {
xmlNode* snode = conf->getXMLSensorsSection(); xmlNode* snode = conf->getXMLSensorsSection();
if(!snode) if(!snode)
{ {
dlog.crit() << myname << ": section <sensors> not found.." << endl; dcrit << myname << ": section <sensors> not found.." << endl;
return; return;
} }
UniXML_iterator it(snode); UniXML_iterator it(snode);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
dlog.crit() << myname << ": section <sensors> empty?!.." << endl; dcrit << myname << ": section <sensors> empty?!.." << endl;
return; return;
}
}
for(;it.getCurrent(); it.goNext() ) for(;it.getCurrent(); it.goNext() )
{ {
// ??. DBTABLE ObjectsMap // ??. DBTABLE ObjectsMap
std::ostringstream data; std::ostringstream data;
data << " VALUES('"; // ???? ??????? data << " VALUES('"; // ???? ???????
data << it.getProp("textname") << "','"; // name data << it.getProp("textname") << "','"; // name
data << it.getProp("name") << "','"; // rep_name data << it.getProp("name") << "','"; // rep_name
data << it.getProp("id") << "','"; // id (sensorid) data << it.getProp("id") << "','"; // id (sensorid)
data << it.getIntProp("msg") << "')"; // msg [0:1] data << it.getIntProp("msg") << "')"; // msg [0:1]
if( !writeToBase("INSERT IGNORE INTO ObjectsMap(name,rep_name,id,msg)"+data.str()) ) if( !writeToBase("INSERT IGNORE INTO ObjectsMap(name,rep_name,id,msg)"+data.str()) )
{ {
dlog.crit() << myname << "(insert) ObjectsMap msg error: "<< db->error() << std::endl; dcrit << myname << "(insert) ObjectsMap msg error: "<< db->error() << std::endl;
db->freeResult(); db->freeResult();
} }
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << myname << "(filling ObjectsMap): " << ex << std::endl; dcrit << myname << "(filling ObjectsMap): " << ex << std::endl;
} }
catch( ... ) catch( ... )
{ {
dlog.crit() << myname << "(filling ObjectsMap): catch ..." << std::endl; dcrit << myname << "(filling ObjectsMap): catch ..." << std::endl;
} }
} }
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
void SMDBServer::help_print( int argc, const char* const* argv ) void SMDBServer::help_print( int argc, const char* const* argv )
{ {
cout << "--dbserver-name - ID for dbserver. Default: SMDBServer1. " << endl; cout << "--dbserver-name - ID for dbserver. Default: SMDBServer1. " << endl;
cout << "--dbserver-locale name - DB locale. Default: koi8-r. " << endl; cout << "--dbserver-locale name - DB locale. Default: koi8-r. " << endl;
cout << "--dbserver-heartbeat-id name - ID for heartbeat sensor." << endl; cout << "--dbserver-heartbeat-id name - ID for heartbeat sensor." << endl;
cout << "--dbserver-heartbeat-max val - max value for heartbeat sensor." << endl; cout << "--dbserver-heartbeat-max val - max value for heartbeat sensor." << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
SMDBServer* SMDBServer::init_smdbserver( int argc, const char* const* argv, SMDBServer* SMDBServer::init_smdbserver( int argc, const char* const* argv,
UniSetTypes::ObjectId icID, SharedMemory* ic, UniSetTypes::ObjectId icID, SharedMemory* ic,
const std::string prefix ) const std::string prefix )
{ {
string name = conf->getArgParam("--" + prefix + "-name","DBServer"); string name = conf->getArgParam("--" + prefix + "-name","DBServer");
if( name.empty() ) if( name.empty() )
{ {
cerr << "(SMDBServer): Unknown name'" << endl; cerr << "(SMDBServer): Unknown name'" << endl;
return 0; return 0;
} }
ObjectId ID = conf->getServiceID(name); ObjectId ID = conf->getServiceID(name);
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
cerr << "(SMDBServer): Not found ID for '" << name cerr << "(SMDBServer): Not found ID for '" << name
<< " in '" << conf->getServicesSection() << "' section" << endl; << " in '" << conf->getServicesSection() << "' section" << endl;
return 0; return 0;
} }
dlog.info() << "(SMDBServer): name = " << name << "(" << ID << ")" << endl; dinfo << "(SMDBServer): name = " << name << "(" << ID << ")" << endl;
return new SMDBServer(ID,icID,ic,prefix); return new SMDBServer(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -54,7 +54,7 @@ int main( int argc, const char** argv ) ...@@ -54,7 +54,7 @@ int main( int argc, const char** argv )
SMDBServer* db = SMDBServer::init_smdbserver(argc,argv,shmID); SMDBServer* db = SMDBServer::init_smdbserver(argc,argv,shmID);
if( !db ) if( !db )
{ {
dlog.crit() << "(smdbserver): init не прошёл..." << endl; dcrit << "(smdbserver): init не прошёл..." << endl;
return 1; return 1;
} }
...@@ -73,11 +73,11 @@ int main( int argc, const char** argv ) ...@@ -73,11 +73,11 @@ int main( int argc, const char** argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(smdbserver): " << ex << std::endl; dcrit << "(smdbserver): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(smdbserver): catch ..." << std::endl; dcrit << "(smdbserver): catch ..." << std::endl;
} }
return 1; return 1;
......
...@@ -71,10 +71,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname ) ...@@ -71,10 +71,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
string t_fvalue = conf->getArgParam("--t-filter-value"); string t_fvalue = conf->getArgParam("--t-filter-value");
heartbeat_node = conf->getArgParam("--heartbeat-node"); heartbeat_node = conf->getArgParam("--heartbeat-node");
if( heartbeat_node.empty() && dlog.is_warn() ) if( heartbeat_node.empty() )
dlog.warn() << myname << "(init): --heartbeat-node NULL ===> heartbeat NOT USED..." << endl; {
else if( dlog.is_info() ) dwarn << myname << "(init): --heartbeat-node NULL ===> heartbeat NOT USED..." << endl;
dlog.info() << myname << "(init): heartbeat-node: " << heartbeat_node << endl; }
else
dinfo << myname << "(init): heartbeat-node: " << heartbeat_node << endl;
heartbeatCheckTime = conf->getArgInt("--heartbeat-check-time","1000"); heartbeatCheckTime = conf->getArgInt("--heartbeat-check-time","1000");
...@@ -84,13 +86,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname ) ...@@ -84,13 +86,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
restorer = rxml; restorer = rxml;
rxml->setReadItem( sigc::mem_fun(this,&SharedMemory::readItem) ); rxml->setReadItem( sigc::mem_fun(this,&SharedMemory::readItem) );
string wdt_dev = conf->getArgParam("--wdt-device"); string wdt_dev = conf->getArgParam("--wdt-device");
if( !wdt_dev.empty() ) if( !wdt_dev.empty() )
wdt = new WDTInterface(wdt_dev); wdt = new WDTInterface(wdt_dev);
else if( dlog.is_warn() ) else
dlog.warn() << myname << "(init): watchdog timer NOT USED (--wdt-device NULL)" << endl; dwarn << myname << "(init): watchdog timer NOT USED (--wdt-device NULL)" << endl;
dblogging = conf->getArgInt("--db-logging"); dblogging = conf->getArgInt("--db-logging");
...@@ -111,8 +112,7 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname ) ...@@ -111,8 +112,7 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
{ {
ostringstream err; ostringstream err;
err << myname << ": ID not found ('pulsar') for " << p; err << myname << ": ID not found ('pulsar') for " << p;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
siPulsar.node = conf->getLocalNode(); siPulsar.node = conf->getLocalNode();
...@@ -129,7 +129,7 @@ SharedMemory::~SharedMemory() ...@@ -129,7 +129,7 @@ SharedMemory::~SharedMemory()
delete restorer; delete restorer;
restorer = NULL; restorer = NULL;
} }
delete wdt; delete wdt;
} }
...@@ -163,26 +163,22 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg ) ...@@ -163,26 +163,22 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg )
default: default:
//dlog.warn() << myname << ": неизвестное сообщение " << msg->type << endl;
break; break;
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): " << ex << endl;
dlog.crit() << myname << "(processingMessage): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( dlog.is_warn() ) dcrit << myname << "(processingMessage): CORBA::SystemException: " << ex.NP_minorString() << endl;
dlog.warn() << myname << "(processingMessage): CORBA::SystemException: " << ex.NP_minorString() << endl;
} }
catch(CORBA::Exception& ex) catch(CORBA::Exception& ex)
{ {
if( dlog.is_warn() ) dwarn << myname << "(processingMessage): CORBA::Exception: " << ex._name() << endl;
dlog.warn() << myname << "(processingMessage): CORBA::Exception: " << ex._name() << endl;
} }
catch( omniORB::fatalException& fe ) catch( omniORB::fatalException& fe )
{ {
if( dlog.is_crit() ) if( dlog.is_crit() )
{ {
...@@ -194,8 +190,7 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg ) ...@@ -194,8 +190,7 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg )
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): catch..." << endl;
dlog.crit() << myname << "(processingMessage): catch..." << endl;
} }
} }
...@@ -242,13 +237,13 @@ void SharedMemory::sysCommand( SystemMessage *sm ) ...@@ -242,13 +237,13 @@ void SharedMemory::sysCommand( SystemMessage *sm )
{ {
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !isActivated() && !ptAct.checkTime() ) while( !isActivated() && !ptAct.checkTime() )
{ {
cout << myname << "(sysCommand): wait activate..." << endl; cout << myname << "(sysCommand): wait activate..." << endl;
msleep(100); msleep(100);
} }
if( !isActivated() && dlog.is_crit() ) if( !isActivated() )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl; dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
// подождать пока пройдёт инициализация // подождать пока пройдёт инициализация
// см. activateObject() // см. activateObject()
...@@ -263,11 +258,11 @@ void SharedMemory::sysCommand( SystemMessage *sm ) ...@@ -263,11 +258,11 @@ void SharedMemory::sysCommand( SystemMessage *sm )
askTimer(tmPulsar,msecPulsar); askTimer(tmPulsar,msecPulsar);
} }
break; break;
case SystemMessage::FoldUp: case SystemMessage::FoldUp:
case SystemMessage::Finish: case SystemMessage::Finish:
break; break;
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
break; break;
...@@ -297,7 +292,7 @@ void SharedMemory::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -297,7 +292,7 @@ void SharedMemory::askSensors( UniversalIO::UIOCommand cmd )
dlog.crit() << myname << "(askSensors): " << ex << endl; dlog.crit() << myname << "(askSensors): " << ex << endl;
} }
} }
*/ */
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -305,8 +300,8 @@ bool SharedMemory::activateObject() ...@@ -305,8 +300,8 @@ bool SharedMemory::activateObject()
{ {
PassiveTimer pt(UniSetTimer::WaitUpTime); PassiveTimer pt(UniSetTimer::WaitUpTime);
bool res = true; bool res = true;
// блокирование обработки Startup // блокирование обработки Startup
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. sysCommand()
{ {
...@@ -314,16 +309,16 @@ bool SharedMemory::activateObject() ...@@ -314,16 +309,16 @@ bool SharedMemory::activateObject()
uniset_rwmutex_wrlock l(mutex_act); uniset_rwmutex_wrlock l(mutex_act);
activated = false; activated = false;
} }
UniSetTypes::uniset_rwmutex_wrlock l(mutex_start); UniSetTypes::uniset_rwmutex_wrlock l(mutex_start);
res = IONotifyController_LT::activateObject(); res = IONotifyController_LT::activateObject();
// инициализируем указатели // инициализируем указатели
for( HeartBeatList::iterator it=hlist.begin(); it!=hlist.end(); ++it ) for( HeartBeatList::iterator it=hlist.begin(); it!=hlist.end(); ++it )
{ {
it->ioit = myioEnd(); it->ioit = myioEnd();
} }
itPulsar = myioEnd(); itPulsar = myioEnd();
for( History::iterator it=hist.begin(); it!=hist.end(); ++it ) for( History::iterator it=hist.begin(); it!=hist.end(); ++it )
...@@ -343,7 +338,7 @@ bool SharedMemory::activateObject() ...@@ -343,7 +338,7 @@ bool SharedMemory::activateObject()
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
CORBA::Boolean SharedMemory::exist() CORBA::Boolean SharedMemory::exist()
{ {
// return activated; // return activated;
return workready; return workready;
} }
...@@ -402,16 +397,14 @@ void SharedMemory::checkHeartBeat() ...@@ -402,16 +397,14 @@ void SharedMemory::checkHeartBeat()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(checkHeartBeat): " << ex << endl;
dlog.crit() << myname << "(checkHeartBeat): " << ex << endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(checkHeartBeat): ..." << endl;
dlog.crit() << myname << "(checkHeartBeat): ..." << endl;
} }
} }
if( wdt && wdtpingOK && workready ) if( wdt && wdtpingOK && workready )
wdt->ping(); wdt->ping();
} }
...@@ -421,7 +414,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -421,7 +414,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
for( ReadSlotList::iterator r=lstRSlot.begin(); r!=lstRSlot.end(); ++r ) for( ReadSlotList::iterator r=lstRSlot.begin(); r!=lstRSlot.end(); ++r )
{ {
try try
{ {
(*r)(xml,it,sec); (*r)(xml,it,sec);
} }
catch(...){} catch(...){}
...@@ -447,9 +440,8 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -447,9 +440,8 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
msg << "(SharedMemory::readItem): тип для 'heartbeat' датчика (" << it.getProp("name") msg << "(SharedMemory::readItem): тип для 'heartbeat' датчика (" << it.getProp("name")
<< ") указан неверно (" << ") указан неверно ("
<< it.getProp("iotype") << ") должен быть 'AI'"; << it.getProp("iotype") << ") должен быть 'AI'";
if( dlog.is_crit() ) dcrit << msg.str() << endl;
dlog.crit() << msg.str() << endl;
kill(getpid(),SIGTERM); kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str()); // throw NameNotFound(msg.str());
}; };
...@@ -463,8 +455,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -463,8 +455,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
{ {
ostringstream msg; ostringstream msg;
msg << "(SharedMemory::readItem): дискретный датчик (heartbeat_ds_name) связанный с " << it.getProp("name"); msg << "(SharedMemory::readItem): дискретный датчик (heartbeat_ds_name) связанный с " << it.getProp("name");
if( dlog.is_warn() ) dwarn << msg.str() << endl;
dlog.warn() << msg.str() << endl;
} }
} }
else else
...@@ -477,8 +468,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -477,8 +468,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
// Если уж задали имя для датчика, то он должен существовать.. // Если уж задали имя для датчика, то он должен существовать..
// поэтому завершаем процесс, если не нашли.. // поэтому завершаем процесс, если не нашли..
if( dlog.is_crit() ) dcrit << msg.str() << endl;
dlog.crit() << msg.str() << endl;
kill(getpid(),SIGTERM); kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str()); // throw NameNotFound(msg.str());
} }
...@@ -490,16 +480,15 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -490,16 +480,15 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
if( hi.a_sid <= 0 ) if( hi.a_sid <= 0 )
{ {
ostringstream msg; ostringstream msg;
msg << "(SharedMemory::readItem): НЕ УКАЗАН id для " msg << "(SharedMemory::readItem): НЕ УКАЗАН id для "
<< it.getProp("name") << " секция " << sec; << it.getProp("name") << " секция " << sec;
if( dlog.is_crit() ) dcrit << msg.str() << endl;
dlog.crit() << msg.str() << endl;
kill(getpid(),SIGTERM); kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str()); // throw NameNotFound(msg.str());
}; };
// без проверки на дублирование т.к. // без проверки на дублирование т.к.
// id - гарантирует уникальность в нашем configure.xml // id - гарантирует уникальность в нашем configure.xml
hlist.push_back(hi); hlist.push_back(hi);
return true; return true;
...@@ -512,20 +501,18 @@ SharedMemory* SharedMemory::init_smemory( int argc, const char* const* argv ) ...@@ -512,20 +501,18 @@ SharedMemory* SharedMemory::init_smemory( int argc, const char* const* argv )
if( dfile[0]!='.' && dfile[0]!='/' ) if( dfile[0]!='.' && dfile[0]!='/' )
dfile = conf->getConfDir() + dfile; dfile = conf->getConfDir() + dfile;
if( dlog.is_info() ) dinfo << "(smemory): datfile = " << dfile << endl;
dlog.info() << "(smemory): datfile = " << dfile << endl;
UniSetTypes::ObjectId ID = conf->getControllerID(conf->getArgParam("--smemory-id","SharedMemory")); UniSetTypes::ObjectId ID = conf->getControllerID(conf->getArgParam("--smemory-id","SharedMemory"));
if( ID == UniSetTypes::DefaultObjectId ) if( ID == UniSetTypes::DefaultObjectId )
{ {
cerr << "(smemory): НЕ ЗАДАН идентификатор '" cerr << "(smemory): НЕ ЗАДАН идентификатор '"
<< " или не найден в " << conf->getControllersSection() << " или не найден в " << conf->getControllersSection()
<< endl; << endl;
return 0; return 0;
} }
string cname = conf->getArgParam("--smemory--confnode", ORepHelpers::getShortName(conf->oind->getMapName(ID)) ); string cname = conf->getArgParam("--smemory--confnode", ORepHelpers::getShortName(conf->oind->getMapName(ID)) );
return new SharedMemory(ID,dfile,cname); return new SharedMemory(ID,dfile,cname);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -541,16 +528,14 @@ void SharedMemory::readEventList( std::string oname ) ...@@ -541,16 +528,14 @@ void SharedMemory::readEventList( std::string oname )
xmlNode* enode = conf->getNode(oname); xmlNode* enode = conf->getNode(oname);
if( enode == NULL ) if( enode == NULL )
{ {
if( dlog.is_warn() ) dwarn << myname << "(readEventList): " << oname << " не найден..." << endl;
dlog.warn() << myname << "(readEventList): " << oname << " не найден..." << endl;
return; return;
} }
UniXML_iterator it(enode); UniXML_iterator it(enode);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(readEventList): <eventlist> пустой..." << endl;
dlog.warn() << myname << "(readEventList): <eventlist> пустой..." << endl;
return; return;
} }
...@@ -562,12 +547,11 @@ void SharedMemory::readEventList( std::string oname ) ...@@ -562,12 +547,11 @@ void SharedMemory::readEventList( std::string oname )
ObjectId oid = it.getIntProp("id"); ObjectId oid = it.getIntProp("id");
if( oid != 0 ) if( oid != 0 )
{ {
if( dlog.is_info() ) dinfo << myname << "(readEventList): add " << it.getProp("name") << endl;
dlog.info() << myname << "(readEventList): add " << it.getProp("name") << endl;
elst.push_back(oid); elst.push_back(oid);
} }
else if( dlog.is_crit() ) else
dlog.crit() << myname << "(readEventList): Не найден ID для " dcrit << myname << "(readEventList): Не найден ID для "
<< it.getProp("name") << endl; << it.getProp("name") << endl;
} }
} }
...@@ -590,9 +574,9 @@ void SharedMemory::sendEvent( UniSetTypes::SystemMessage& sm ) ...@@ -590,9 +574,9 @@ void SharedMemory::sendEvent( UniSetTypes::SystemMessage& sm )
catch(...){}; catch(...){};
} }
if(!ok && dlog.is_crit() ) if(!ok)
dlog.crit() << myname << "(sendEvent): Объект " << (*it) << " НЕДОСТУПЕН" << endl; dcrit << myname << "(sendEvent): Объект " << (*it) << " НЕДОСТУПЕН" << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SharedMemory::addReadItem( Restorer_XML::ReaderSlot sl ) void SharedMemory::addReadItem( Restorer_XML::ReaderSlot sl )
...@@ -608,22 +592,19 @@ void SharedMemory::loggingInfo( SensorMessage& sm ) ...@@ -608,22 +592,19 @@ void SharedMemory::loggingInfo( SensorMessage& sm )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SharedMemory::buildHistoryList( xmlNode* cnode ) void SharedMemory::buildHistoryList( xmlNode* cnode )
{ {
if( dlog.is_info() ) dinfo << myname << "(buildHistoryList): ..." << endl;
dlog.info() << myname << "(buildHistoryList): ..." << endl;
UniXML* xml = conf->getConfXML(); UniXML* xml = conf->getConfXML();
if( !xml ) if( !xml )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildHistoryList): xml=NULL?!" << endl;
dlog.warn() << myname << "(buildHistoryList): xml=NULL?!" << endl;
return; return;
} }
xmlNode* n = xml->extFindNode(cnode,1,1,"History",""); xmlNode* n = xml->extFindNode(cnode,1,1,"History","");
if( !n ) if( !n )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildHistoryList): <History> not found. ignore..." << endl;
dlog.warn() << myname << "(buildHistoryList): <History> not found. ignore..." << endl;
hist.clear(); hist.clear();
return; return;
} }
...@@ -633,20 +614,18 @@ void SharedMemory::buildHistoryList( xmlNode* cnode ) ...@@ -633,20 +614,18 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
bool no_history = conf->getArgInt("--sm-no-history",it.getProp("no_history")); bool no_history = conf->getArgInt("--sm-no-history",it.getProp("no_history"));
if( no_history ) if( no_history )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildHistoryList): no_history='1'.. history skipped..." << endl;
dlog.warn() << myname << "(buildHistoryList): no_history='1'.. history skipped..." << endl;
hist.clear(); hist.clear();
return; return;
} }
histSaveTime = it.getIntProp("savetime"); histSaveTime = it.getIntProp("savetime");
if( histSaveTime <= 0 ) if( histSaveTime <= 0 )
histSaveTime = 0; histSaveTime = 0;
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildHistoryList): <History> empty. ignore..." << endl;
dlog.warn() << myname << "(buildHistoryList): <History> empty. ignore..." << endl;
return; return;
} }
...@@ -665,10 +644,9 @@ void SharedMemory::buildHistoryList( xmlNode* cnode ) ...@@ -665,10 +644,9 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hi.fuse_id = conf->getSensorID(it.getProp("fuse_id")); hi.fuse_id = conf->getSensorID(it.getProp("fuse_id"));
if( hi.fuse_id == DefaultObjectId ) if( hi.fuse_id == DefaultObjectId )
{ {
if( dlog.is_warn() ) dwarn << myname << "(buildHistory): not found sensor ID for "
dlog.warn() << myname << "(buildHistory): not found sensor ID for "
<< it.getProp("fuse_id") << it.getProp("fuse_id")
<< " history item id=" << it.getProp("id") << " history item id=" << it.getProp("id")
<< " ..ignore.." << endl; << " ..ignore.." << endl;
continue; continue;
} }
...@@ -682,8 +660,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode ) ...@@ -682,8 +660,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hi.fuse_val = it.getIntProp("fuse_value"); hi.fuse_val = it.getIntProp("fuse_value");
} }
if( dlog.is_info() ) dinfo << myname << "(buildHistory): add fuse_id=" << hi.fuse_id
dlog.info() << myname << "(buildHistory): add fuse_id=" << hi.fuse_id
<< " fuse_val=" << hi.fuse_val << " fuse_val=" << hi.fuse_val
<< " fuse_use_val=" << hi.fuse_use_val << " fuse_use_val=" << hi.fuse_use_val
<< " fuse_invert=" << hi.fuse_invert << " fuse_invert=" << hi.fuse_invert
...@@ -694,8 +671,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode ) ...@@ -694,8 +671,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hist.push_back(hi); hist.push_back(hi);
} }
if( dlog.is_info() ) dinfo << myname << "(buildHistoryList): history logs count=" << hist.size() << endl;
dlog.info() << myname << "(buildHistoryList): history logs count=" << hist.size() << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void SharedMemory::checkHistoryFilter( UniXML_iterator& xit ) void SharedMemory::checkHistoryFilter( UniXML_iterator& xit )
...@@ -717,8 +693,7 @@ void SharedMemory::checkHistoryFilter( UniXML_iterator& xit ) ...@@ -717,8 +693,7 @@ void SharedMemory::checkHistoryFilter( UniXML_iterator& xit )
ai.id = conf->getSensorID(xit.getProp("name")); ai.id = conf->getSensorID(xit.getProp("name"));
if( ai.id == DefaultObjectId ) if( ai.id == DefaultObjectId )
{ {
if( dlog.is_warn() ) dwarn << myname << "(checkHistoryFilter): not found sensor ID for " << xit.getProp("name") << endl;
dlog.warn() << myname << "(checkHistoryFilter): not found sensor ID for " << xit.getProp("name") << endl;
continue; continue;
} }
...@@ -751,7 +726,7 @@ void SharedMemory::saveHistory() ...@@ -751,7 +726,7 @@ void SharedMemory::saveHistory()
si.node = conf->getLocalNode(); si.node = conf->getLocalNode();
try try
{ {
hit->add( localGetValue( hit->ioit, si ), it->size ); hit->add( localGetValue( hit->ioit, si ), it->size );
continue; continue;
} }
...@@ -780,13 +755,10 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* ) ...@@ -780,13 +755,10 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
sm_tv_usec = s_it->second.tv_usec; sm_tv_usec = s_it->second.tv_usec;
} }
if( dlog.is_info() ) dinfo << myname << "(updateHistory): "
{ << " sid=" << s_it->second.si.id
dlog.info() << myname << "(updateHistory): "
<< " sid=" << s_it->second.si.id
<< " value=" << value << " value=" << value
<< endl; << endl;
}
for( HistoryItList::iterator it1=i->second.begin(); it1!=i->second.end(); ++it1 ) for( HistoryItList::iterator it1=i->second.begin(); it1!=i->second.end(); ++it1 )
{ {
...@@ -795,15 +767,14 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* ) ...@@ -795,15 +767,14 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
if( s_it->second.type == UniversalIO::DI || if( s_it->second.type == UniversalIO::DI ||
s_it->second.type == UniversalIO::DO ) s_it->second.type == UniversalIO::DO )
{ {
bool st = (bool)value; bool st = (bool)value;
if( it->fuse_invert ) if( it->fuse_invert )
st^=true; st^=true;
if( st ) if( st )
{ {
if( dlog.is_info() ) dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec; it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec; it->fuse_usec = sm_tv_usec;
...@@ -822,8 +793,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* ) ...@@ -822,8 +793,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
if( !st ) if( !st )
{ {
if( dlog.is_info() ) dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec; it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec; it->fuse_usec = sm_tv_usec;
...@@ -834,8 +804,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* ) ...@@ -834,8 +804,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
{ {
if( value == it->fuse_val ) if( value == it->fuse_val )
{ {
if( dlog.is_info() ) dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec; it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec; it->fuse_usec = sm_tv_usec;
...@@ -848,13 +817,13 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* ) ...@@ -848,13 +817,13 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h ) std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h )
{ {
os << "History id=" << h.id os << "History id=" << h.id
<< " fuse_id=" << h.fuse_id << " fuse_id=" << h.fuse_id
<< " fuse_invert=" << h.fuse_invert << " fuse_invert=" << h.fuse_invert
<< " fuse_val=" << h.fuse_val << " fuse_val=" << h.fuse_val
<< " size=" << h.size << " size=" << h.size
<< " filter=" << h.filter << endl; << " filter=" << h.filter << endl;
for( SharedMemory::HistoryList::const_iterator it=h.hlst.begin(); it!=h.hlst.end(); ++it ) for( SharedMemory::HistoryList::const_iterator it=h.hlst.begin(); it!=h.hlst.end(); ++it )
{ {
os << " id=" << it->id << "["; os << " id=" << it->id << "[";
...@@ -862,7 +831,7 @@ std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h ) ...@@ -862,7 +831,7 @@ std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h )
os << " " << (*i); os << " " << (*i);
os << " ]" << endl; os << " ]" << endl;
} }
return os; return os;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -30,12 +30,12 @@ sender2(0) ...@@ -30,12 +30,12 @@ sender2(0)
// определяем фильтр // определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field"); s_field = conf->getArgParam("--" + prefix + "-filter-field");
s_fvalue = conf->getArgParam("--" + prefix + "-filter-value"); s_fvalue = conf->getArgParam("--" + prefix + "-filter-value");
dlog.info() << myname << "(init): read filter-field='" << s_field dinfo << myname << "(init): read filter-field='" << s_field
<< "' filter-value='" << s_fvalue << "'" << endl; << "' filter-value='" << s_fvalue << "'" << endl;
const string n_field(conf->getArgParam("--" + prefix + "-nodes-filter-field")); const string n_field(conf->getArgParam("--" + prefix + "-nodes-filter-field"));
const string n_fvalue(conf->getArgParam("--" + prefix + "-nodes-filter-value")); const string n_fvalue(conf->getArgParam("--" + prefix + "-nodes-filter-value"));
dlog.info() << myname << "(init): read nodes-filter-field='" << n_field dinfo << myname << "(init): read nodes-filter-field='" << n_field
<< "' nodes-filter-value='" << n_fvalue << "'" << endl; << "' nodes-filter-value='" << n_fvalue << "'" << endl;
int recvTimeout = conf->getArgPInt("--" + prefix + "-recv-timeout",it.getProp("recvTimeout"), 5000); int recvTimeout = conf->getArgPInt("--" + prefix + "-recv-timeout",it.getProp("recvTimeout"), 5000);
...@@ -55,7 +55,7 @@ sender2(0) ...@@ -55,7 +55,7 @@ sender2(0)
throw UniSetTypes::SystemError("(UNetExchange): Not found <nodes>"); throw UniSetTypes::SystemError("(UNetExchange): Not found <nodes>");
UniXML_iterator n_it(nodes); UniXML_iterator n_it(nodes);
string default_ip(n_it.getProp("unet_broadcast_ip")); string default_ip(n_it.getProp("unet_broadcast_ip"));
string default_ip2(n_it.getProp("unet_broadcast_ip2")); string default_ip2(n_it.getProp("unet_broadcast_ip2"));
...@@ -66,7 +66,7 @@ sender2(0) ...@@ -66,7 +66,7 @@ sender2(0)
{ {
if( n_it.getIntProp("unet_ignore") ) if( n_it.getIntProp("unet_ignore") )
{ {
dlog.info() << myname << "(init): unet_ignore.. for " << n_it.getProp("name") << endl; dinfo << myname << "(init): unet_ignore.. for " << n_it.getProp("name") << endl;
continue; continue;
} }
...@@ -92,13 +92,12 @@ sender2(0) ...@@ -92,13 +92,12 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): Unknown broadcast IP for " << n_it.getProp("name"); err << myname << "(init): Unknown broadcast IP for " << n_it.getProp("name");
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw UniSetTypes::SystemError(err.str()); throw UniSetTypes::SystemError(err.str());
} }
if( h2.empty() && dlog.is_info() ) if( h2.empty() )
dlog.info() << myname << "(init): ip2 not used..." << endl; dinfo << myname << "(init): ip2 not used..." << endl;
// Если указано поле unet_port - используем его // Если указано поле unet_port - используем его
// Иначе port = идентификатору узла // Иначе port = идентификатору узла
...@@ -115,14 +114,12 @@ sender2(0) ...@@ -115,14 +114,12 @@ sender2(0)
{ {
if( no_sender ) if( no_sender )
{ {
if( dlog.is_info() ) dinfo << myname << "(init): sender OFF for this node...("
dlog.info() << myname << "(init): sender OFF for this node...("
<< n_it.getProp("name") << ")" << endl; << n_it.getProp("name") << ")" << endl;
continue; continue;
} }
if( dlog.is_info() ) dinfo << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl;
dlog.info() << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl;
sender = new UNetSender(h,p,shm,s_field,s_fvalue,ic); sender = new UNetSender(h,p,shm,s_field,s_fvalue,ic);
sender->setSendPause(sendpause); sender->setSendPause(sendpause);
...@@ -131,8 +128,7 @@ sender2(0) ...@@ -131,8 +128,7 @@ sender2(0)
// создаём "писателя" для второго канала если задан // создаём "писателя" для второго канала если задан
if( !h2.empty() ) if( !h2.empty() )
{ {
if( dlog.is_info() ) dinfo << myname << "(init): init sender2.. my node " << n_it.getProp("name") << endl;
dlog.info() << myname << "(init): init sender2.. my node " << n_it.getProp("name") << endl;
sender2 = new UNetSender(h2,p2,shm,s_field,s_fvalue,ic); sender2 = new UNetSender(h2,p2,shm,s_field,s_fvalue,ic);
sender2->setSendPause(sendpause); sender2->setSendPause(sendpause);
} }
...@@ -142,24 +138,22 @@ sender2(0) ...@@ -142,24 +138,22 @@ sender2(0)
// т.е. это "резервный канал", то игнорируем ошибку его создания // т.е. это "резервный канал", то игнорируем ошибку его создания
// при запуске "интерфейс" может быть и не доступен... // при запуске "интерфейс" может быть и не доступен...
sender2 = 0; sender2 = 0;
dlog.crit() << myname << "(ignore): DON`T CREATE 'UNetSender' for " << h2 << ":" << p2 << endl; dcrit << myname << "(ignore): DON`T CREATE 'UNetSender' for " << h2 << ":" << p2 << endl;
} }
continue; continue;
} }
if( dlog.is_info() ) dinfo << myname << "(init): add UNetReceiver for " << h << ":" << p << endl;
dlog.info() << myname << "(init): add UNetReceiver for " << h << ":" << p << endl;
if( checkExistUNetHost(h,p) ) if( checkExistUNetHost(h,p) )
{ {
if( dlog.is_info() ) dinfo << myname << "(init): " << h << ":" << p << " already added! Ignore.." << endl;
dlog.info() << myname << "(init): " << h << ":" << p << " already added! Ignore.." << endl;
continue; continue;
} }
bool resp_invert = n_it.getIntProp("unet_respond_invert"); bool resp_invert = n_it.getIntProp("unet_respond_invert");
string s_resp_id(n_it.getProp("unet_respond1_id")); string s_resp_id(n_it.getProp("unet_respond1_id"));
UniSetTypes::ObjectId resp_id = UniSetTypes::DefaultObjectId; UniSetTypes::ObjectId resp_id = UniSetTypes::DefaultObjectId;
if( !s_resp_id.empty() ) if( !s_resp_id.empty() )
...@@ -169,8 +163,7 @@ sender2(0) ...@@ -169,8 +163,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown RespondID.. Not found id for '" << s_resp_id << "'" << endl; err << myname << ": Unknown RespondID.. Not found id for '" << s_resp_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -184,8 +177,7 @@ sender2(0) ...@@ -184,8 +177,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown RespondID(2).. Not found id for '" << s_resp2_id << "'" << endl; err << myname << ": Unknown RespondID(2).. Not found id for '" << s_resp2_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -199,8 +191,7 @@ sender2(0) ...@@ -199,8 +191,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown LostPacketsID.. Not found id for '" << s_lp_id << "'" << endl; err << myname << ": Unknown LostPacketsID.. Not found id for '" << s_lp_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -214,8 +205,7 @@ sender2(0) ...@@ -214,8 +205,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown LostPacketsID(2).. Not found id for '" << s_lp2_id << "'" << endl; err << myname << ": Unknown LostPacketsID(2).. Not found id for '" << s_lp2_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -229,8 +219,7 @@ sender2(0) ...@@ -229,8 +219,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown LostPacketsID(comm).. Not found id for '" << s_lp_comm_id << "'" << endl; err << myname << ": Unknown LostPacketsID(comm).. Not found id for '" << s_lp_comm_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -244,18 +233,16 @@ sender2(0) ...@@ -244,18 +233,16 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown RespondID(comm).. Not found id for '" << s_resp_comm_id << "'" << endl; err << myname << ": Unknown RespondID(comm).. Not found id for '" << s_resp_comm_id << "'" << endl;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
if( dlog.is_info() ) dinfo << myname << "(init): (node='" << n << "') add receiver "
dlog.info() << myname << "(init): (node='" << n << "') add receiver "
<< h2 << ":" << p2 << endl; << h2 << ":" << p2 << endl;
UNetReceiver* r = new UNetReceiver(h,p,shm); UNetReceiver* r = new UNetReceiver(h,p,shm);
// на всякий принудительно разблокируем, // на всякий принудительно разблокируем,
// чтобы не зависеть от значения по умолчанию // чтобы не зависеть от значения по умолчанию
r->setLockUpdate(false); r->setLockUpdate(false);
...@@ -275,8 +262,7 @@ sender2(0) ...@@ -275,8 +262,7 @@ sender2(0)
{ {
if( !h2.empty() ) // создаём читателя впо второму каналу if( !h2.empty() ) // создаём читателя впо второму каналу
{ {
if( dlog.is_info() ) dinfo << myname << "(init): (node='" << n << "') add reserv receiver "
dlog.info() << myname << "(init): (node='" << n << "') add reserv receiver "
<< h2 << ":" << p2 << endl; << h2 << ":" << p2 << endl;
r2 = new UNetReceiver(h2,p2,shm); r2 = new UNetReceiver(h2,p2,shm);
...@@ -300,8 +286,7 @@ sender2(0) ...@@ -300,8 +286,7 @@ sender2(0)
// т.е. это "резервный канал", то игнорируем ошибку его создания // т.е. это "резервный канал", то игнорируем ошибку его создания
// при запуске "интерфейс" может быть и не доступен... // при запуске "интерфейс" может быть и не доступен...
r2 = 0; r2 = 0;
if( dlog.is_crit() ) dcrit << myname << "(ignore): DON`T CREATE 'UNetReceiver' for " << h2 << ":" << p2 << endl;
dlog.crit() << myname << "(ignore): DON`T CREATE 'UNetReceiver' for " << h2 << ":" << p2 << endl;
} }
ReceiverInfo ri(r,r2); ReceiverInfo ri(r,r2);
...@@ -320,8 +305,7 @@ sender2(0) ...@@ -320,8 +305,7 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart; err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -341,14 +325,12 @@ sender2(0) ...@@ -341,14 +325,12 @@ sender2(0)
{ {
ostringstream err; ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found..."; err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() ) dcrit << myname << "(init): " << err.str() << endl;
dlog.crit() << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
if( dlog.is_info() ) dinfo << myname << "(init): test_id=" << test_id << endl;
dlog.info() << myname << "(init): test_id=" << test_id << endl;
activateTimeout = conf->getArgPInt("--" + prefix + "-activate-timeout", 20000); activateTimeout = conf->getArgPInt("--" + prefix + "-activate-timeout", 20000);
} }
...@@ -404,8 +386,7 @@ void UNetExchange::waitSMReady() ...@@ -404,8 +386,7 @@ void UNetExchange::waitSMReady()
{ {
ostringstream err; ostringstream err;
err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек"; err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
...@@ -433,8 +414,7 @@ void UNetExchange::step() ...@@ -433,8 +414,7 @@ void UNetExchange::step()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( dlog.is_crit() ) dcrit << myname << "(step): (hb) " << ex << std::endl;
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
} }
} }
...@@ -458,8 +438,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna ...@@ -458,8 +438,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(ReceiverInfo::step): (respond): " << ex << std::endl;
dlog.crit() << myname << "(ReceiverInfo::step): (respond): " << ex << std::endl;
} }
try try
...@@ -477,8 +456,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna ...@@ -477,8 +456,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(ReceiverInfo::step): (lostpackets): " << ex << std::endl;
dlog.crit() << myname << "(ReceiverInfo::step): (lostpackets): " << ex << std::endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -515,20 +493,16 @@ void UNetExchange::processingMessage( UniSetTypes::VoidMessage *msg ) ...@@ -515,20 +493,16 @@ void UNetExchange::processingMessage( UniSetTypes::VoidMessage *msg )
} }
catch( SystemError& ex ) catch( SystemError& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(SystemError): " << ex << std::endl;
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex);
raise(SIGTERM); raise(SIGTERM);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): " << ex << std::endl;
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(processingMessage): catch ..." << std::endl;
dlog.crit() << myname << "(processingMessage): catch ..." << std::endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -545,15 +519,15 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -545,15 +519,15 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm )
msleep(initPause); msleep(initPause);
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
cout << myname << "(sysCommand): wait activate..." << endl; cout << myname << "(sysCommand): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
break; break;
} }
if( !activated && dlog.is_crit() ) if( !activated )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl; dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
{ {
UniSetTypes::uniset_rwmutex_rlock l(mutex_start); UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
...@@ -575,7 +549,7 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -575,7 +549,7 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm )
if( shm->isLocalwork() ) if( shm->isLocalwork() )
askSensors(UniversalIO::UIODontNotify); askSensors(UniversalIO::UIODontNotify);
break; break;
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
{ {
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте) // ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
...@@ -619,12 +593,11 @@ void UNetExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -619,12 +593,11 @@ void UNetExchange::askSensors( UniversalIO::UIOCommand cmd )
if( !shm->waitSMworking(test_id,activateTimeout,50) ) if( !shm->waitSMworking(test_id,activateTimeout,50) )
{ {
ostringstream err; ostringstream err;
err << myname err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение " << "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек"; << activateTimeout << " мсек";
if( dlog.is_crit() ) dcrit << err.str() << endl;
dlog.crit() << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -645,7 +618,7 @@ void UNetExchange::sensorInfo( UniSetTypes::SensorMessage* sm ) ...@@ -645,7 +618,7 @@ void UNetExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool UNetExchange::activateObject() bool UNetExchange::activateObject()
{ {
// блокирование обработки Starsp // блокирование обработки Starsp
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. sysCommand()
{ {
...@@ -661,8 +634,7 @@ bool UNetExchange::activateObject() ...@@ -661,8 +634,7 @@ bool UNetExchange::activateObject()
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UNetExchange::sigterm( int signo ) void UNetExchange::sigterm( int signo )
{ {
if( dlog.is_info() ) dinfo << myname << ": ********* SIGTERM(" << signo <<") ********" << endl;
dlog.info() << myname << ": ********* SIGTERM(" << signo <<") ********" << endl;
activated = false; activated = false;
for( ReceiverList::iterator it=recvlist.begin(); it!=recvlist.end(); ++it ) for( ReceiverList::iterator it=recvlist.begin(); it!=recvlist.end(); ++it )
{ {
...@@ -727,7 +699,7 @@ void UNetExchange::help_print( int argc, const char* argv[] ) ...@@ -727,7 +699,7 @@ void UNetExchange::help_print( int argc, const char* argv[] )
cout << "--prefix-filter-value name - Значение фильтрующего поля при формировании списка датчиков посылаемых данным узлом" << endl; cout << "--prefix-filter-value name - Значение фильтрующего поля при формировании списка датчиков посылаемых данным узлом" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
UNetExchange* UNetExchange::init_unetexchange( int argc, const char* argv[], UniSetTypes::ObjectId icID, UNetExchange* UNetExchange::init_unetexchange( int argc, const char* argv[], UniSetTypes::ObjectId icID,
SharedMemory* ic, const std::string& prefix ) SharedMemory* ic, const std::string& prefix )
{ {
string p("--" + prefix + "-name"); string p("--" + prefix + "-name");
...@@ -746,8 +718,7 @@ UNetExchange* UNetExchange::init_unetexchange( int argc, const char* argv[], Uni ...@@ -746,8 +718,7 @@ UNetExchange* UNetExchange::init_unetexchange( int argc, const char* argv[], Uni
return 0; return 0;
} }
if( dlog.is_info() ) dinfo << "(unetexchange): name = " << name << "(" << ID << ")" << endl;
dlog.info() << "(unetexchange): name = " << name << "(" << ID << ")" << endl;
return new UNetExchange(ID,icID,ic,prefix); return new UNetExchange(ID,icID,ic,prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -771,8 +742,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev ) ...@@ -771,8 +742,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev )
it->r1->setLockUpdate(true); it->r1->setLockUpdate(true);
it->r2->setLockUpdate(false); it->r2->setLockUpdate(false);
if( dlog.is_info() ) dinfo << myname << "(event): " << r->getName()
dlog.info() << myname << "(event): " << r->getName()
<< ": timeout for channel1.. select channel 2" << endl; << ": timeout for channel1.. select channel 2" << endl;
return; return;
} }
...@@ -784,8 +754,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev ) ...@@ -784,8 +754,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev )
it->r1->setLockUpdate(false); it->r1->setLockUpdate(false);
it->r2->setLockUpdate(true); it->r2->setLockUpdate(true);
if( dlog.is_info() ) dinfo << myname << "(event): " << r->getName()
dlog.info() << myname << "(event): " << r->getName()
<< ": timeout for channel2.. select channel 1" << endl; << ": timeout for channel2.. select channel 1" << endl;
return; return;
} }
......
...@@ -50,7 +50,7 @@ a_cache_init_ok(false) ...@@ -50,7 +50,7 @@ a_cache_init_ok(false)
s << "R(" << setw(15) << s_host << ":" << setw(4) << port << ")"; s << "R(" << setw(15) << s_host << ":" << setw(4) << port << ")";
myname = s.str(); myname = s.str();
} }
ost::Thread::setException(ost::Thread::throwException); ost::Thread::setException(ost::Thread::throwException);
try try
{ {
...@@ -64,14 +64,14 @@ a_cache_init_ok(false) ...@@ -64,14 +64,14 @@ a_cache_init_ok(false)
{ {
ostringstream s; ostringstream s;
s << myname << ": " << e.what(); s << myname << ": " << e.what();
dlog.crit() << s.str() << std::endl; dcrit << s.str() << std::endl;
throw SystemError(s.str()); throw SystemError(s.str());
} }
catch( ... ) catch( ... )
{ {
ostringstream s; ostringstream s;
s << myname << ": catch..."; s << myname << ": catch...";
dlog.crit() << s.str() << std::endl; dcrit << s.str() << std::endl;
throw SystemError(s.str()); throw SystemError(s.str());
} }
...@@ -144,7 +144,7 @@ void UNetReceiver::setLostPacketsID( UniSetTypes::ObjectId id ) ...@@ -144,7 +144,7 @@ void UNetReceiver::setLostPacketsID( UniSetTypes::ObjectId id )
void UNetReceiver::setLockUpdate( bool st ) void UNetReceiver::setLockUpdate( bool st )
{ {
uniset_rwmutex_wrlock l(lockMutex); uniset_rwmutex_wrlock l(lockMutex);
lockUpdate = st; lockUpdate = st;
if( !st ) if( !st )
ptPrepare.reset(); ptPrepare.reset();
} }
...@@ -152,8 +152,8 @@ void UNetReceiver::setLockUpdate( bool st ) ...@@ -152,8 +152,8 @@ void UNetReceiver::setLockUpdate( bool st )
void UNetReceiver::resetTimeout() void UNetReceiver::resetTimeout()
{ {
uniset_rwmutex_wrlock l(tmMutex); uniset_rwmutex_wrlock l(tmMutex);
ptRecvTimeout.reset(); ptRecvTimeout.reset();
trTimeout.change(false); trTimeout.change(false);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UNetReceiver::start() void UNetReceiver::start()
...@@ -177,11 +177,11 @@ void UNetReceiver::update() ...@@ -177,11 +177,11 @@ void UNetReceiver::update()
} }
catch( UniSetTypes::Exception& ex) catch( UniSetTypes::Exception& ex)
{ {
dlog.crit() << myname << "(update): " << ex << std::endl; dcrit << myname << "(update): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << myname << "(update): catch ..." << std::endl; dcrit << myname << "(update): catch ..." << std::endl;
} }
if( sidRespond!=DefaultObjectId ) if( sidRespond!=DefaultObjectId )
...@@ -193,7 +193,7 @@ void UNetReceiver::update() ...@@ -193,7 +193,7 @@ void UNetReceiver::update()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
dlog.crit() << myname << "(step): (respond) " << ex << std::endl; dcrit << myname << "(step): (respond) " << ex << std::endl;
} }
} }
...@@ -205,10 +205,10 @@ void UNetReceiver::update() ...@@ -205,10 +205,10 @@ void UNetReceiver::update()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
dlog.crit() << myname << "(step): (lostPackets) " << ex << std::endl; dcrit << myname << "(step): (lostPackets) " << ex << std::endl;
} }
} }
msleep(updatepause); msleep(updatepause);
} }
} }
...@@ -286,7 +286,7 @@ void UNetReceiver::real_update() ...@@ -286,7 +286,7 @@ void UNetReceiver::real_update()
ItemInfo& ii(d_icache[i]); ItemInfo& ii(d_icache[i]);
if( ii.id != id ) if( ii.id != id )
{ {
dlog.warn() << myname << "(update): reinit cache for sid=" << id << endl; dwarn << myname << "(update): reinit cache for sid=" << id << endl;
ii.id = id; ii.id = id;
shm->initIterator(ii.ioit); shm->initIterator(ii.ioit);
} }
...@@ -302,11 +302,11 @@ void UNetReceiver::real_update() ...@@ -302,11 +302,11 @@ void UNetReceiver::real_update()
} }
catch( UniSetTypes::Exception& ex) catch( UniSetTypes::Exception& ex)
{ {
dlog.crit() << myname << "(update): " << ex << std::endl; dcrit << myname << "(update): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << myname << "(update): catch ..." << std::endl; dcrit << myname << "(update): catch ..." << std::endl;
} }
} }
...@@ -319,7 +319,7 @@ void UNetReceiver::real_update() ...@@ -319,7 +319,7 @@ void UNetReceiver::real_update()
ItemInfo& ii(a_icache[i]); ItemInfo& ii(a_icache[i]);
if( ii.id != d.id ) if( ii.id != d.id )
{ {
dlog.warn() << myname << "(update): reinit cache for sid=" << d.id << endl; dwarn << myname << "(update): reinit cache for sid=" << d.id << endl;
ii.id = d.id; ii.id = d.id;
shm->initIterator(ii.ioit); shm->initIterator(ii.ioit);
} }
...@@ -335,11 +335,11 @@ void UNetReceiver::real_update() ...@@ -335,11 +335,11 @@ void UNetReceiver::real_update()
} }
catch( UniSetTypes::Exception& ex) catch( UniSetTypes::Exception& ex)
{ {
dlog.crit() << myname << "(update): " << ex << std::endl; dcrit << myname << "(update): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << myname << "(update): catch ..." << std::endl; dcrit << myname << "(update): catch ..." << std::endl;
} }
} }
} }
...@@ -356,8 +356,7 @@ void UNetReceiver::stop() ...@@ -356,8 +356,7 @@ void UNetReceiver::stop()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UNetReceiver::receive() void UNetReceiver::receive()
{ {
if( dlog.is_info() ) dinfo << myname << ": ******************* receive start" << endl;
dlog.info() << myname << ": ******************* receive start" << endl;
{ {
uniset_rwmutex_wrlock l(tmMutex); uniset_rwmutex_wrlock l(tmMutex);
...@@ -377,18 +376,15 @@ void UNetReceiver::receive() ...@@ -377,18 +376,15 @@ void UNetReceiver::receive()
} }
catch( UniSetTypes::Exception& ex) catch( UniSetTypes::Exception& ex)
{ {
if( dlog.is_warn() ) dwarn << myname << "(receive): " << ex << std::endl;
dlog.warn() << myname << "(receive): " << ex << std::endl;
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
if( dlog.is_warn() ) dwarn << myname << "(receive): " << e.what()<< std::endl;
dlog.warn() << myname << "(receive): " << e.what()<< std::endl;
} }
catch(...) catch(...)
{ {
if( dlog.is_warn() ) dwarn << myname << "(receive): catch ..." << std::endl;
dlog.warn() << myname << "(receive): catch ..." << std::endl;
} }
// делаем через промежуточную переменную // делаем через промежуточную переменную
...@@ -397,7 +393,7 @@ void UNetReceiver::receive() ...@@ -397,7 +393,7 @@ void UNetReceiver::receive()
uniset_rwmutex_rlock l(tmMutex); uniset_rwmutex_rlock l(tmMutex);
tout = ptRecvTimeout.checkTime(); tout = ptRecvTimeout.checkTime();
} }
// только если "режим подготовки закончился, то можем генерировать "события" // только если "режим подготовки закончился, то можем генерировать "события"
if( ptPrepare.checkTime() && trTimeout.change(tout) ) if( ptPrepare.checkTime() && trTimeout.change(tout) )
{ {
...@@ -410,8 +406,7 @@ void UNetReceiver::receive() ...@@ -410,8 +406,7 @@ void UNetReceiver::receive()
msleep(recvpause); msleep(recvpause);
} }
if( dlog.is_info() ) dinfo << myname << ": ************* receive FINISH **********" << endl;
dlog.info() << myname << ": ************* receive FINISH **********" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool UNetReceiver::recv() bool UNetReceiver::recv()
...@@ -424,7 +419,7 @@ bool UNetReceiver::recv() ...@@ -424,7 +419,7 @@ bool UNetReceiver::recv()
size_t sz = UniSetUDP::UDPMessage::getMessage(pack,r_buf); size_t sz = UniSetUDP::UDPMessage::getMessage(pack,r_buf);
if( sz == 0 ) if( sz == 0 )
{ {
dlog.crit() << myname << "(receive): FAILED RECEIVE DATA ret=" << ret << endl; dcrit << myname << "(receive): FAILED RECEIVE DATA ret=" << ret << endl;
return false; return false;
} }
...@@ -439,7 +434,7 @@ bool UNetReceiver::recv() ...@@ -439,7 +434,7 @@ bool UNetReceiver::recv()
// Обычно "кольцевой". Т.е. если не успели обработать и "вынуть" из буфера информацию.. он будет переписан новыми данными // Обычно "кольцевой". Т.е. если не успели обработать и "вынуть" из буфера информацию.. он будет переписан новыми данными
if( waitClean ) if( waitClean )
{ {
dlog.crit() << myname << "(receive): reset qtmp.." << endl; dcrit << myname << "(receive): reset qtmp.." << endl;
while( !qtmp.empty() ) while( !qtmp.empty() )
qtmp.pop(); qtmp.pop();
} }
...@@ -510,7 +505,7 @@ void UNetReceiver::initDCache( UniSetUDP::UDPMessage& pack, bool force ) ...@@ -510,7 +505,7 @@ void UNetReceiver::initDCache( UniSetUDP::UDPMessage& pack, bool force )
if( !force && pack.dcount == d_icache.size() ) if( !force && pack.dcount == d_icache.size() )
return; return;
dlog.info() << myname << ": init icache.." << endl; dinfo << myname << ": init icache.." << endl;
d_cache_init_ok = true; d_cache_init_ok = true;
d_icache.resize(pack.dcount); d_icache.resize(pack.dcount);
...@@ -532,7 +527,7 @@ void UNetReceiver::initACache( UniSetUDP::UDPMessage& pack, bool force ) ...@@ -532,7 +527,7 @@ void UNetReceiver::initACache( UniSetUDP::UDPMessage& pack, bool force )
if( !force && pack.acount == a_icache.size() ) if( !force && pack.acount == a_icache.size() )
return; return;
dlog.info() << myname << ": init icache.." << endl; dinfo << myname << ": init icache.." << endl;
a_cache_init_ok = true; a_cache_init_ok = true;
a_icache.resize(pack.acount); a_icache.resize(pack.acount);
......
...@@ -31,11 +31,10 @@ s_thr(0) ...@@ -31,11 +31,10 @@ s_thr(0)
// определяем фильтр // определяем фильтр
// s_field = conf->getArgParam("--udp-filter-field"); // s_field = conf->getArgParam("--udp-filter-field");
// s_fvalue = conf->getArgParam("--udp-filter-value"); // s_fvalue = conf->getArgParam("--udp-filter-value");
dlog.info() << myname << "(init): read filter-field='" << s_field dinfo << myname << "(init): read filter-field='" << s_field
<< "' filter-value='" << s_fvalue << "'" << endl; << "' filter-value='" << s_fvalue << "'" << endl;
if( dlog.is_info() ) dinfo << "(UNetSender): UDP set to " << s_host << ":" << port << endl;
dlog.info() << "(UNetSender): UDP set to " << s_host << ":" << port << endl;
ost::Thread::setException(ost::Thread::throwException); ost::Thread::setException(ost::Thread::throwException);
try try
...@@ -47,14 +46,14 @@ s_thr(0) ...@@ -47,14 +46,14 @@ s_thr(0)
{ {
ostringstream s; ostringstream s;
s << myname << ": " << e.what(); s << myname << ": " << e.what();
dlog.crit() << s.str() << std::endl; dcrit << s.str() << std::endl;
throw SystemError(s.str()); throw SystemError(s.str());
} }
catch( ... ) catch( ... )
{ {
ostringstream s; ostringstream s;
s << myname << ": catch..."; s << myname << ": catch...";
dlog.crit() << s.str() << std::endl; dcrit << s.str() << std::endl;
throw SystemError(s.str()); throw SystemError(s.str());
} }
...@@ -65,7 +64,7 @@ s_thr(0) ...@@ -65,7 +64,7 @@ s_thr(0)
{ {
readConfiguration(); readConfiguration();
dlist.resize(maxItem); dlist.resize(maxItem);
dlog.info() << myname << "(init): dlist size = " << dlist.size() << endl; dinfo << myname << "(init): dlist size = " << dlist.size() << endl;
} }
else else
ic->addReadItem( sigc::mem_fun(this,&UNetSender::readItem) ); ic->addReadItem( sigc::mem_fun(this,&UNetSender::readItem) );
...@@ -130,18 +129,18 @@ void UNetSender::updateItem( DMap::iterator& it, long value ) ...@@ -130,18 +129,18 @@ void UNetSender::updateItem( DMap::iterator& it, long value )
void UNetSender::send() void UNetSender::send()
{ {
dlist.resize(maxItem); dlist.resize(maxItem);
dlog.info() << myname << "(send): dlist size = " << dlist.size() << endl; dinfo << myname << "(send): dlist size = " << dlist.size() << endl;
/* /*
ost::IPV4Broadcast h = s_host.c_str(); ost::IPV4Broadcast h = s_host.c_str();
try try
{ {
udp->setPeer(h,port); udp->setPeer(h,port);
} }
catch( ost::SockException& e ) catch( ost::SockException& e )
{ {
ostringstream s; ostringstream s;
s << e.getString() << ": " << e.getSystemErrorString(); s << e.getString() << ": " << e.getSystemErrorString();
dlog.crit() << myname << "(poll): " << s.str() << endl; dcrit << myname << "(poll): " << s.str() << endl;
throw SystemError(s.str()); throw SystemError(s.str());
} }
*/ */
...@@ -156,25 +155,25 @@ void UNetSender::send() ...@@ -156,25 +155,25 @@ void UNetSender::send()
} }
catch( ost::SockException& e ) catch( ost::SockException& e )
{ {
dlog.warn() << myname << "(send): " << e.getString() << endl; dwarn << myname << "(send): " << e.getString() << endl;
} }
catch( UniSetTypes::Exception& ex) catch( UniSetTypes::Exception& ex)
{ {
dlog.warn() << myname << "(send): " << ex << std::endl; dwarn << myname << "(send): " << ex << std::endl;
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
dlog.warn() << myname << "(send): " << e.what() << std::endl; dwarn << myname << "(send): " << e.what() << std::endl;
} }
catch(...) catch(...)
{ {
dlog.warn() << myname << "(send): catch ..." << std::endl; dwarn << myname << "(send): catch ..." << std::endl;
} }
msleep(sendpause); msleep(sendpause);
} }
dlog.info() << "************* execute FINISH **********" << endl; dinfo << "************* execute FINISH **********" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UNetSender::real_send() void UNetSender::real_send()
...@@ -191,7 +190,7 @@ void UNetSender::real_send() ...@@ -191,7 +190,7 @@ void UNetSender::real_send()
mypack.transport_msg(s_msg); mypack.transport_msg(s_msg);
size_t ret = udp->send( (char*)s_msg.data, s_msg.len ); size_t ret = udp->send( (char*)s_msg.data, s_msg.len );
if( ret < s_msg.len ) if( ret < s_msg.len )
dlog.crit() << myname << "(real_send): FAILED ret=" << ret << " < sizeof=" << s_msg.len << endl; dcrit << myname << "(real_send): FAILED ret=" << ret << " < sizeof=" << s_msg.len << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UNetSender::stop() void UNetSender::stop()
...@@ -245,7 +244,7 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -245,7 +244,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
string sname( it.getProp("name") ); string sname( it.getProp("name") );
string tid(it.getProp("id")); string tid(it.getProp("id"));
ObjectId sid; ObjectId sid;
if( !tid.empty() ) if( !tid.empty() )
{ {
...@@ -258,8 +257,7 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -258,8 +257,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
if( sid == DefaultObjectId ) if( sid == DefaultObjectId )
{ {
if( dlog ) dcrit << myname << "(readItem): ID not found for "
dlog.crit() << myname << "(readItem): ID not found for "
<< sname << endl; << sname << endl;
return false; return false;
} }
...@@ -269,7 +267,7 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -269,7 +267,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
if( p.iotype == UniversalIO::UnknownIOType ) if( p.iotype == UniversalIO::UnknownIOType )
{ {
dlog.crit() << myname << "(readItem): Unknown iotype for sid=" << sid << endl; dcrit << myname << "(readItem): Unknown iotype for sid=" << sid << endl;
return false; return false;
} }
...@@ -280,8 +278,8 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -280,8 +278,8 @@ bool UNetSender::initItem( UniXML_iterator& it )
p.pack_ind = mypack.addDData(sid,0); p.pack_ind = mypack.addDData(sid,0);
if ( p.pack_ind >= UniSetUDP::MaxDCount ) if ( p.pack_ind >= UniSetUDP::MaxDCount )
{ {
dlog.crit() << myname dcrit << myname
<< "(readItem): OVERFLOW! MAX UDP DIGITAL DATA LIMIT! max=" << "(readItem): OVERFLOW! MAX UDP DIGITAL DATA LIMIT! max="
<< UniSetUDP::MaxDCount << endl; << UniSetUDP::MaxDCount << endl;
raise(SIGTERM); raise(SIGTERM);
...@@ -293,8 +291,8 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -293,8 +291,8 @@ bool UNetSender::initItem( UniXML_iterator& it )
p.pack_ind = mypack.addAData(sid,0); p.pack_ind = mypack.addAData(sid,0);
if ( p.pack_ind >= UniSetUDP::MaxACount ) if ( p.pack_ind >= UniSetUDP::MaxACount )
{ {
dlog.crit() << myname dcrit << myname
<< "(readItem): OVERFLOW! MAX UDP ANALOG DATA LIMIT! max=" << "(readItem): OVERFLOW! MAX UDP ANALOG DATA LIMIT! max="
<< UniSetUDP::MaxACount << endl; << UniSetUDP::MaxACount << endl;
raise(SIGTERM); raise(SIGTERM);
return false; return false;
...@@ -307,8 +305,7 @@ bool UNetSender::initItem( UniXML_iterator& it ) ...@@ -307,8 +305,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
dlist[maxItem] = p; dlist[maxItem] = p;
maxItem++; maxItem++;
if( dlog.is_info() ) dinfo << myname << "(initItem): add " << p << endl;
dlog.info() << myname << "(initItem): add " << p << endl;
return true; return true;
} }
......
...@@ -52,7 +52,7 @@ int main( int argc, const char** argv ) ...@@ -52,7 +52,7 @@ int main( int argc, const char** argv )
UNetExchange* unet = UNetExchange::init_unetexchange(argc,argv,shmID); UNetExchange* unet = UNetExchange::init_unetexchange(argc,argv,shmID);
if( !unet ) if( !unet )
{ {
dlog.crit() << "(unetexchange): init failed.." << endl; dcrit << "(unetexchange): init failed.." << endl;
return 1; return 1;
} }
...@@ -72,11 +72,11 @@ int main( int argc, const char** argv ) ...@@ -72,11 +72,11 @@ int main( int argc, const char** argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.crit() << "(unetexchange): " << ex << std::endl; dcrit << "(unetexchange): " << ex << std::endl;
} }
catch(...) catch(...)
{ {
dlog.crit() << "(unetexchange): catch ..." << std::endl; dcrit << "(unetexchange): catch ..." << std::endl;
} }
while( waitpid(-1, 0, 0) > 0 ); while( waitpid(-1, 0, 0) > 0 );
......
...@@ -36,18 +36,18 @@ smReadyTimeout(15000) ...@@ -36,18 +36,18 @@ smReadyTimeout(15000)
s_field = conf->getArgParam("--" + prefix + "-filter-field"); s_field = conf->getArgParam("--" + prefix + "-filter-field");
s_fvalue = conf->getArgParam("--" + prefix + "-filter-value"); s_fvalue = conf->getArgParam("--" + prefix + "-filter-value");
dlog.info() << myname << "(init): read fileter-field='" << s_field dinfo << myname << "(init): read fileter-field='" << s_field
<< "' filter-value='" << s_fvalue << "'" << endl; << "' filter-value='" << s_fvalue << "'" << endl;
polltime = conf->getArgInt("--" + prefix + "-polltime",it.getProp("polltime")); polltime = conf->getArgInt("--" + prefix + "-polltime",it.getProp("polltime"));
if( polltime <= 0 ) if( polltime <= 0 )
polltime = 200; polltime = 200;
dlog.info() << myname << "(init): polltime=" << polltime << endl; dinfo << myname << "(init): polltime=" << polltime << endl;
int updatetime = conf->getArgInt("--" + prefix + "-updatetime",it.getProp("updatetime")); int updatetime = conf->getArgInt("--" + prefix + "-updatetime",it.getProp("updatetime"));
if( updatetime <= 0 ) if( updatetime <= 0 )
updatetime = 200; updatetime = 200;
dlog.info() << myname << "(init): updatetime=" << polltime << endl; dinfo << myname << "(init): updatetime=" << polltime << endl;
ptUpdate.setTiming(updatetime); ptUpdate.setTiming(updatetime);
...@@ -57,7 +57,7 @@ smReadyTimeout(15000) ...@@ -57,7 +57,7 @@ smReadyTimeout(15000)
else if( smReadyTimeout < 0 ) else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime; smReadyTimeout = UniSetTimer::WaitUpTime;
dlog.info() << myname << "(init): smReadyTimeout=" << smReadyTimeout << endl; dinfo << myname << "(init): smReadyTimeout=" << smReadyTimeout << endl;
if( it.goChildren() ) if( it.goChildren() )
{ {
...@@ -97,7 +97,7 @@ smReadyTimeout(15000) ...@@ -97,7 +97,7 @@ smReadyTimeout(15000)
ni.node = node; ni.node = node;
ni.sidConnection = conf->getSensorID(it.getProp("sid_connection")); ni.sidConnection = conf->getSensorID(it.getProp("sid_connection"));
dlog.info() << myname << ": add point " << n << ":" << n1 << endl; dinfo << myname << ": add point " << n << ":" << n1 << endl;
nlst.push_back(ni); nlst.push_back(ni);
} }
} }
...@@ -150,23 +150,21 @@ void UniExchange::execute() ...@@ -150,23 +150,21 @@ void UniExchange::execute()
bool ok = false; bool ok = false;
try try
{ {
if( dlog.is_info() ) dinfo << myname << ": connect to id=" << it->id << " node=" << it->node << endl;
dlog.info() << myname << ": connect to id=" << it->id << " node=" << it->node << endl;
IOController_i::ShortMapSeq_var sseq = ui.getSensors( it->id, it->node ); IOController_i::ShortMapSeq_var sseq = ui.getSensors( it->id, it->node );
ok = true; ok = true;
if( dlog.is_info() ) dinfo << myname << " update sensors from id=" << it->id << " node=" << it->node << endl;
dlog.info() << myname << " update sensors from id=" << it->id << " node=" << it->node << endl;
it->update(sseq,shm); it->update(sseq,shm);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.info() << myname << "(execute): " << ex << endl; dwarn << myname << "(execute): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
dlog.info() << myname << "(execute): catch ..." << endl; dwarn << myname << "(execute): catch ..." << endl;
} }
if( it->sidConnection != DefaultObjectId ) if( it->sidConnection != DefaultObjectId )
...@@ -177,15 +175,14 @@ void UniExchange::execute() ...@@ -177,15 +175,14 @@ void UniExchange::execute()
} }
catch(...) catch(...)
{ {
if( dlog.is_crit() ) dcrit << myname << "(execute): sensor not avalible "
dlog.crit()<< myname << "(execute): sensor not avalible "
<< conf->oind->getNameById( it->sidConnection) << conf->oind->getNameById( it->sidConnection)
<< endl; << endl;
} }
} }
if( !ok && dlog.is_info() ) if( !ok )
dlog.info() << myname << ": ****** cannot connect with node=" << it->node << endl; dinfo << myname << ": ****** cannot connect with node=" << it->node << endl;
} }
if( ptUpdate.checkTime() ) if( ptUpdate.checkTime() )
...@@ -234,11 +231,11 @@ void UniExchange::NetNodeInfo::update( IOController_i::ShortMapSeq_var& map, SMI ...@@ -234,11 +231,11 @@ void UniExchange::NetNodeInfo::update( IOController_i::ShortMapSeq_var& map, SMI
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.info() << "(update): " << ex << endl; dwarn << "(update): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
dlog.info() << "(update): catch ..." << endl; dwarn << "(update): catch ..." << endl;
} }
} }
} }
...@@ -278,11 +275,11 @@ void UniExchange::updateLocalData() ...@@ -278,11 +275,11 @@ void UniExchange::updateLocalData()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.warn() << "(update): " << ex << endl; dwarn << "(update): " << ex << endl;
} }
catch( ... ) catch( ... )
{ {
dlog.warn() << "(update): catch ..." << endl; dwarn << "(update): catch ..." << endl;
} }
} }
...@@ -443,8 +440,7 @@ bool UniExchange::initItem( UniXML_iterator& it ) ...@@ -443,8 +440,7 @@ bool UniExchange::initItem( UniXML_iterator& it )
if( i.id == DefaultObjectId ) if( i.id == DefaultObjectId )
{ {
if( dlog ) dcrit << myname << "(initItem): Unknown ID for "
dlog.crit() << myname << "(initItem): Unknown ID for "
<< it.getProp("name") << endl; << it.getProp("name") << endl;
return false; return false;
} }
...@@ -452,8 +448,7 @@ bool UniExchange::initItem( UniXML_iterator& it ) ...@@ -452,8 +448,7 @@ bool UniExchange::initItem( UniXML_iterator& it )
i.type = UniSetTypes::getIOType(it.getProp("iotype")); i.type = UniSetTypes::getIOType(it.getProp("iotype"));
if( i.type == UniversalIO::UnknownIOType ) if( i.type == UniversalIO::UnknownIOType )
{ {
if( dlog ) dcrit << myname << "(initItem): Unknown iotype= "
dlog.crit() << myname << "(initItem): Unknown iotype= "
<< it.getProp("iotype") << " for " << it.getProp("name") << endl; << it.getProp("iotype") << " for " << it.getProp("name") << endl;
return false; return false;
} }
......
...@@ -31,4 +31,21 @@ namespace UniSetExtensions ...@@ -31,4 +31,21 @@ namespace UniSetExtensions
extern DebugStream dlog; extern DebugStream dlog;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// "синтаксический сахар"..для логов
#define dinfo if( UniSetExtensions::dlog.debugging(Debug::INFO) ) UniSetExtensions::dlog
#define dwarn if( UniSetExtensions::dlog.debugging(Debug::WARN) ) UniSetExtensions::dlog
#define dcrit if( UniSetExtensions::dlog.debugging(Debug::CRIT) ) UniSetExtensions::dlog
#define dlog1 if( UniSetExtensions::dlog.debugging(Debug::LEVEL1) ) UniSetExtensions::dlog
#define dlog2 if( UniSetExtensions::dlog.debugging(Debug::LEVEL2) ) UniSetExtensions::dlog
#define dlog3 if( UniSetExtensions::dlog.debugging(Debug::LEVEL3) ) UniSetExtensions::dlog
#define dlog4 if( UniSetExtensions::dlog.debugging(Debug::LEVEL4) ) UniSetExtensions::dlog
#define dlog5 if( UniSetExtensions::dlog.debugging(Debug::LEVEL5) ) UniSetExtensions::dlog
#define dlog6 if( UniSetExtensions::dlog.debugging(Debug::LEVEL6) ) UniSetExtensions::dlog
#define dlog7 if( UniSetExtensions::dlog.debugging(Debug::LEVEL7) ) UniSetExtensions::dlog
#define dlog8 if( UniSetExtensions::dlog.debugging(Debug::LEVEL8) ) UniSetExtensions::dlog
#define dlog9 if( UniSetExtensions::dlog.debugging(Debug::LEVEL9) ) UniSetExtensions::dlog
#define dlogsys if( UniSetExtensions::dlog.debugging(Debug::SYSTEM) ) UniSetExtensions::dlog
#define dlogrep if( UniSetExtensions::dlog.debugging(Debug::REPOSITORY) ) UniSetExtensions::dlog
// -------------------------------------------------------------------------
#endif // Extensions_H_ #endif // Extensions_H_
// -------------------------------------------------------------------------
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
/* /*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE. DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST. ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ. НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ. ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// generate timestamp: 2013-12-17+04:00 // generate timestamp: 2014-01-23+04:00
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#ifndef UObject_SK_H_ #ifndef UObject_SK_H_
#define UObject_SK_H_ #define UObject_SK_H_
...@@ -21,106 +21,120 @@ ...@@ -21,106 +21,120 @@
#include "DebugStream.h" #include "DebugStream.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
class UObject_SK: class UObject_SK:
public UniSetObject, public UniSetObject,
public LT_Object public LT_Object
{ {
public: public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("UObject"), const std::string& argprefix="" ); UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("UObject"), const std::string& argprefix="" );
UObject_SK(); UObject_SK();
virtual ~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::conf->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
bool alarm( UniSetTypes::ObjectId sid, bool state ); DebugStream mylog;
long getValue( UniSetTypes::ObjectId sid ); void init_mylog( DebugStream& d );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream dlog; // "синтаксический сахар"..для логов
void init_dlog(DebugStream& dlog); #define myinfo if( mylog.debugging(Debug::INFO) ) mylog
#define mywarn if( mylog.debugging(Debug::WARN) ) mylog
#define mycrit if( mylog.debugging(Debug::CRIT) ) mylog
#define mylog1 if( mylog.debugging(Debug::LEVEL1) ) mylog
#define mylog2 if( mylog.debugging(Debug::LEVEL2) ) mylog
#define mylog3 if( mylog.debugging(Debug::LEVEL3) ) mylog
#define mylog4 if( mylog.debugging(Debug::LEVEL4) ) mylog
#define mylog5 if( mylog.debugging(Debug::LEVEL5) ) mylog
#define mylog6 if( mylog.debugging(Debug::LEVEL6) ) mylog
#define mylog7 if( mylog.debugging(Debug::LEVEL7) ) mylog
#define mylog8 if( mylog.debugging(Debug::LEVEL8) ) mylog
#define mylog9 if( mylog.debugging(Debug::LEVEL9) ) mylog
// Используемые идентификаторы // Используемые идентификаторы
// Используемые идентификаторы сообщений // Используемые идентификаторы сообщений
// Текущее значение и предыдущее значение // Текущее значение и предыдущее значение
// --- public variables --- // --- public variables ---
// --- end of public variables --- // --- end of public variables ---
protected: protected:
// --- protected variables --- // --- protected variables ---
// ---- end of protected variables ---- // ---- end of protected variables ----
virtual void callback(); virtual void callback();
virtual void processingMessage( UniSetTypes::VoidMessage* msg ); virtual void processingMessage( UniSetTypes::VoidMessage* msg );
virtual void sysCommand( UniSetTypes::SystemMessage* sm ); virtual void sysCommand( UniSetTypes::SystemMessage* sm );
virtual void askSensors( UniversalIO::UIOCommand cmd ){} virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){} virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){}
virtual void timerInfo( UniSetTypes::TimerMessage* tm ){} virtual void timerInfo( UniSetTypes::TimerMessage* tm ){}
virtual void sigterm( int signo ); virtual void sigterm( int signo );
virtual bool activateObject(); virtual bool activateObject();
virtual void testMode( bool state ); virtual void testMode( bool state );
void updatePreviousValues(); void updatePreviousValues();
void checkSensors(); void checkSensors();
void updateOutputs( bool force ); void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd ); void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( UniSetTypes::SensorMessage* sm ); void preSensorInfo( UniSetTypes::SensorMessage* sm );
void preTimerInfo( UniSetTypes::TimerMessage* tm ); void preTimerInfo( UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId ); void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg(); void resetMsg();
Trigger trResetMsg; Trigger trResetMsg;
PassiveTimer ptResetMsg; PassiveTimer ptResetMsg;
int resetMsgTime; int resetMsgTime;
// Выполнение очередного шага программы // Выполнение очередного шага программы
virtual void step()=0; virtual void step()=0;
int sleep_msec; /*!< пауза между итерациями */ int sleep_msec; /*!< пауза между итерациями */
bool active; bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */ UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения" // управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */ PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */ UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */ int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode; xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */ /*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::conf->getIntProp(confnode, name); } int getIntProp(const std::string& name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */ /*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::conf->getProp(confnode, name); } inline const std::string getProp(const std::string& name) { return UniSetTypes::conf->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */ int smReadyTimeout; /*!< время ожидания готовности SM */
bool activated; bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */ int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */ PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */ int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si; IOController_i::SensorInfo si;
private: private:
// --- private variables --- // --- private variables ---
// --- end of private variables --- // --- end of private variables ---
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода) bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
}; };
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -24,7 +24,7 @@ namespace UniSetExtensions ...@@ -24,7 +24,7 @@ namespace UniSetExtensions
{ {
ostringstream err; ostringstream err;
err << ": Unknown ID for '" << sname << "'" << endl; err << ": Unknown ID for '" << sname << "'" << endl;
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -53,11 +53,10 @@ namespace UniSetExtensions ...@@ -53,11 +53,10 @@ namespace UniSetExtensions
if( heartBeatTime <= 0 ) if( heartBeatTime <= 0 )
{ {
heartBeatTime = 0; heartBeatTime = 0;
dlog.warn() << "(getHeartBeatTime): механизм 'HEARTBEAT' ОТКЛЮЧЁН!" << endl; dwarn << "(getHeartBeatTime): механизм 'HEARTBEAT' ОТКЛЮЧЁН!" << endl;
} }
if( dlog.is_info() ) dinfo << "(getHeartBeatTime): heartbeat time = " << heartBeatTime << endl;
dlog.info() << "(getHeartBeatTime): heartbeat time = " << heartBeatTime << endl;
return heartBeatTime; return heartBeatTime;
} }
...@@ -114,7 +113,7 @@ namespace UniSetExtensions ...@@ -114,7 +113,7 @@ namespace UniSetExtensions
{ {
ostringstream err; ostringstream err;
err << "(buildCalibrationDiagram): НЕ НАЙДЕН корневой узел для калибровочных диаграмм"; err << "(buildCalibrationDiagram): НЕ НАЙДЕН корневой узел для калибровочных диаграмм";
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
throw SystemError( err.str()); throw SystemError( err.str());
} }
...@@ -123,7 +122,7 @@ namespace UniSetExtensions ...@@ -123,7 +122,7 @@ namespace UniSetExtensions
{ {
ostringstream err; ostringstream err;
err << "(buildCalibrationDiagram): НЕ НАЙДЕНА калибровочная диаграмма '" << dname << "'"; err << "(buildCalibrationDiagram): НЕ НАЙДЕНА калибровочная диаграмма '" << dname << "'";
dlog.crit() << err.str() << endl; dcrit << err.str() << endl;
throw SystemError( err.str()); throw SystemError( err.str());
} }
......
...@@ -51,24 +51,24 @@ using namespace UniSetTypes; ...@@ -51,24 +51,24 @@ using namespace UniSetTypes;
} \ } \
catch( IOController_i::NameNotFound &ex ) \ catch( IOController_i::NameNotFound &ex ) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): " << ex.err << endl; \ uwarn << "(" << __STRING(fname) << "): " << ex.err << endl; \
} \ } \
catch( IOController_i::IOBadParam &ex ) \ catch( IOController_i::IOBadParam &ex ) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): " << ex.err << endl; \ uwarn << "(" << __STRING(fname) << "): " << ex.err << endl; \
} \ } \
catch( Exception& ex ) \ catch( Exception& ex ) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): " << ex << endl; \ uwarn << "(" << __STRING(fname) << "): " << ex << endl; \
} \ } \
catch(CORBA::SystemException& ex) \ catch(CORBA::SystemException& ex) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): CORBA::SystemException: " \ uwarn << "(" << __STRING(fname) << "): CORBA::SystemException: " \
<< ex.NP_minorString() << endl; \ << ex.NP_minorString() << endl; \
} \ } \
catch(...) \ catch(...) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): catch ..." << endl; \ uwarn << "(" << __STRING(fname) << "): catch ..." << endl; \
} \ } \
\ \
oref = CORBA::Object::_nil(); \ oref = CORBA::Object::_nil(); \
...@@ -77,7 +77,7 @@ using namespace UniSetTypes; ...@@ -77,7 +77,7 @@ using namespace UniSetTypes;
#define CHECK_IC_PTR(fname) \ #define CHECK_IC_PTR(fname) \
if( !ic ) \ if( !ic ) \
{ \ { \
ulog.warn() << "(" << __STRING(fname) << "): function NOT DEFINED..." << endl; \ uwarn << "(" << __STRING(fname) << "): function NOT DEFINED..." << endl; \
throw UniSetTypes::TimeOut(); \ throw UniSetTypes::TimeOut(); \
} \ } \
......
...@@ -6,12 +6,12 @@ ...@@ -6,12 +6,12 @@
/* /*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE. DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST. ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ. НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ. ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// generate timestamp: 2013-12-17+04:00 // generate timestamp: 2014-01-23+04:00
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#include "Configuration.h" #include "Configuration.h"
#include "Exceptions.h" #include "Exceptions.h"
...@@ -43,19 +43,19 @@ askPause(2000), ...@@ -43,19 +43,19 @@ askPause(2000),
end_private(false) end_private(false)
{ {
ulog.crit() << "UObject: init failed!!!!!!!!!!!!!!!" << endl; ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname+": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// ( val, confval, default val ) // ( val, confval, default val )
static const std::string init3_str( const std::string& s1, const std::string& s2, const std::string& s3 ) static const std::string init3_str( const std::string& s1, const std::string& s2, const std::string& s3 )
{ {
if( !s1.empty() ) if( !s1.empty() )
return s1; return s1;
if( !s2.empty() ) if( !s2.empty() )
return s2; return s2;
return s3; return s3;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& argprefix ): UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& argprefix ):
...@@ -79,69 +79,68 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)), ...@@ -79,69 +79,68 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)),
end_private(false) end_private(false)
{ {
if( UniSetTypes::findArgParam("--print-id-list",conf->getArgc(),conf->getArgv()) != -1 ) if( UniSetTypes::findArgParam("--print-id-list",conf->getArgc(),conf->getArgv()) != -1 )
{ {
// abort(); // abort();
} }
if( getId() == DefaultObjectId ) if( getId() == DefaultObjectId )
{ {
ostringstream err; ostringstream err;
err << "(UObject::init): Unknown ObjectID!"; err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() ); throw SystemError( err.str() );
} }
UniXML_iterator it(cnode); UniXML_iterator it(cnode);
string heart = conf->getArgParam("--heartbeat-id",it.getProp("heartbeat_id")); string heart = conf->getArgParam("--heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() ) if( !heart.empty() )
{ {
idHeartBeat = conf->getSensorID(heart); idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId ) if( idHeartBeat == DefaultObjectId )
{ {
ostringstream err; ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart; err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str()); throw SystemError(err.str());
} }
int heartbeatTime = conf->getArgPInt("--heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime()); int heartbeatTime = conf->getArgPInt("--heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 ) if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime); ptHeartBeat.setTiming(heartbeatTime);
else else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime); ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--heartbeat-max",it.getProp("heartbeat_max"), 10); maxHeartBeat = conf->getArgPInt("--heartbeat-max",it.getProp("heartbeat_max"), 10);
} }
// Инициализация значений // Инициализация значений
sleep_msec = conf->getArgPInt("--sleep-msec","150", 150); sleep_msec = conf->getArgPInt("--sleep-msec","150", 150);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000); resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime); ptResetMsg.setTiming(resetMsgTime);
smReadyTimeout = conf->getArgInt("--sm-ready-timeout",""); smReadyTimeout = conf->getArgInt("--sm-ready-timeout","");
if( smReadyTimeout == 0 ) if( smReadyTimeout == 0 )
smReadyTimeout = 60000; smReadyTimeout = 60000;
else if( smReadyTimeout < 0 ) else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime; smReadyTimeout = UniSetTimer::WaitUpTime;
std::string tmp_smtestID(""); 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"),tmp_smtestID));
activateTimeout = conf->getArgPInt("--activate-timeout", 20000); activateTimeout = conf->getArgPInt("--activate-timeout", 20000);
int msec = conf->getArgPInt("--startup-timeout", 10000); int msec = conf->getArgPInt("--startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec); ptStartUpTimeout.setTiming(msec);
// ===================== <variables> ===================== // ===================== <variables> =====================
// ===================== end of <variables> ===================== // ===================== end of <variables> =====================
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -152,7 +151,7 @@ UObject_SK::~UObject_SK() ...@@ -152,7 +151,7 @@ UObject_SK::~UObject_SK()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::updateValues() void UObject_SK::updateValues()
{ {
// Опрашиваем все входы... // Опрашиваем все входы...
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -168,31 +167,20 @@ void UObject_SK::checkSensors() ...@@ -168,31 +167,20 @@ void UObject_SK::checkSensors()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool UObject_SK::alarm( UniSetTypes::ObjectId _code, bool _state ) bool UObject_SK::alarm( UniSetTypes::ObjectId _code, bool _state )
{ {
if( _code == UniSetTypes::DefaultObjectId ) if( _code == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << getName()
ulog.crit() << getName() << "(alarm): попытка послать сообщение с DefaultObjectId"
<< "(alarm): попытка послать сообщение с DefaultObjectId" << endl;
<< endl; return false;
return false; }
}
ulog1 << getName() << "(alarm): " << ( _state ? "SEND " : "RESET " ) << endl;
if( ulog.is_level1() )
{
ulog.level1() << getName() << "(alarm): ";
if( _state ) ulog1 << " not found MessgeOID?!!" << endl;
ulog.level1(false) << "SEND "; return false;
else
ulog.level1(false) << "RESET ";
ulog.level1(false) << endl;
}
if( ulog.is_level1() )
ulog.level1() << " not found MessgeOID?!!" << endl;
return false;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::resetMsg() void UObject_SK::resetMsg()
...@@ -203,10 +191,10 @@ void UObject_SK::resetMsg() ...@@ -203,10 +191,10 @@ void UObject_SK::resetMsg()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::testMode( bool _state ) void UObject_SK::testMode( bool _state )
{ {
if( !_state ) if( !_state )
return; return;
// отключаем все выходы // отключаем все выходы
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -214,155 +202,150 @@ void UObject_SK::testMode( bool _state ) ...@@ -214,155 +202,150 @@ void UObject_SK::testMode( bool _state )
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UObject_SK::init_dlog( DebugStream& d ) void UObject_SK::init_mylog( DebugStream& d )
{ {
UObject_SK::dlog = d; UObject_SK::mylog = d;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UObject_SK::processingMessage( UniSetTypes::VoidMessage* _msg ) void UObject_SK::processingMessage( UniSetTypes::VoidMessage* _msg )
{ {
try try
{ {
switch( _msg->type ) switch( _msg->type )
{ {
case Message::SensorInfo: case Message::SensorInfo:
{ {
SensorMessage _sm( _msg ); SensorMessage _sm( _msg );
preSensorInfo( &_sm ); preSensorInfo( &_sm );
break; break;
} }
case Message::Timer: case Message::Timer:
{ {
TimerMessage _tm(_msg); TimerMessage _tm(_msg);
preTimerInfo(&_tm); preTimerInfo(&_tm);
break; break;
} }
case Message::SysCommand: case Message::SysCommand:
{ {
SystemMessage _sm( _msg ); SystemMessage _sm( _msg );
sysCommand( &_sm ); sysCommand( &_sm );
break; break;
} }
default: default:
break; break;
} }
} }
catch(Exception& ex) catch( Exception& ex )
{ {
cout << myname << "(processingMessage): " << ex << endl; ucrit << myname << "(processingMessage): " << ex << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::sysCommand( SystemMessage* _sm ) void UObject_SK::sysCommand( SystemMessage* _sm )
{ {
switch( _sm->command ) switch( _sm->command )
{ {
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
ulog << myname << "(sysCommand): WatchDog" << endl; ulog << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() ) if( !active || !ptStartUpTimeout.checkTime() )
{ {
if( ulog.is_warn() ) uwarn << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
ulog.warn() << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl; break;
break; }
} case SystemMessage::StartUp:
case SystemMessage::StartUp: {
{ waitSM(smReadyTimeout);
waitSM(smReadyTimeout); ptStartUpTimeout.reset();
ptStartUpTimeout.reset(); // т.к. для io-переменных важно соблюдать последовательность!
// т.к. для io-переменных важно соблюдать последовательность! // сперва обновить входы.. а потом уже выходы
// сперва обновить входы.. а потом уже выходы updateValues();
updateValues(); updateOutputs(true); // принудительное обновление выходов
updateOutputs(true); // принудительное обновление выходов preAskSensors(UniversalIO::UIONotify);
preAskSensors(UniversalIO::UIONotify); askSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify); active = true;
active = true; break;
break; }
}
case SystemMessage::FoldUp:
case SystemMessage::FoldUp: case SystemMessage::Finish:
case SystemMessage::Finish: preAskSensors(UniversalIO::UIODontNotify);
preAskSensors(UniversalIO::UIODontNotify); askSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify); break;
break;
case SystemMessage::LogRotate:
case SystemMessage::LogRotate: {
{ // переоткрываем логи
// переоткрываем логи mylog << myname << "(sysCommand): logRotate" << endl;
ulog << myname << "(sysCommand): logRotate" << endl; string fname( mylog.getLogFile() );
string fname( ulog.getLogFile() ); if( !fname.empty() )
if( !fname.empty() ) {
{ mylog.logFile(fname.c_str());
ulog.logFile(fname.c_str()); mylog << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
ulog << myname << "(sysCommand): ***************** ulog LOG ROTATE *****************" << endl; }
} }
} break;
break;
default:
default: break;
break; }
}
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::sigterm( int signo ) void UObject_SK::sigterm( int signo )
{ {
UniSetObject::sigterm(signo); UniSetObject::sigterm(signo);
active = false; active = false;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool UObject_SK::activateObject() bool UObject_SK::activateObject()
{ {
// блокирование обработки Startup // блокирование обработки Startup
// пока не пройдёт инициализация датчиков // пока не пройдёт инициализация датчиков
// см. sysCommand() // см. sysCommand()
{ {
activated = false; activated = false;
UniSetObject::activateObject(); UniSetObject::activateObject();
activated = true; activated = true;
} }
return true; return true;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::preTimerInfo( UniSetTypes::TimerMessage* _tm ) void UObject_SK::preTimerInfo( UniSetTypes::TimerMessage* _tm )
{ {
timerInfo(_tm); timerInfo(_tm);
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void UObject_SK::waitSM( int wait_msec, ObjectId _testID ) void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
{ {
if( _testID == DefaultObjectId ) if( _testID == DefaultObjectId )
_testID = smTestID; _testID = smTestID;
if( _testID == DefaultObjectId ) if( _testID == DefaultObjectId )
return; return;
if( ulog.is_info() ) uinfo << myname << "(waitSM): waiting SM ready "
{ << wait_msec << " msec"
ulog.info() << myname << "(waitSM): waiting SM ready " << " testID=" << _testID << endl;
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
}
if( !ui.waitReady(_testID,wait_msec) ) if( !ui.waitReady(_testID,wait_msec) )
{ {
ostringstream err; ostringstream err;
err << myname err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение " << "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек"; << wait_msec << " мсек";
if( ulog.is_crit() ) ucrit << err.str() << endl;
ulog.crit() << err.str() << endl; terminate();
terminate(); abort();
abort(); // kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс... throw SystemError(err.str());
throw SystemError(err.str()); }
}
} }
...@@ -371,70 +354,67 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID ) ...@@ -371,70 +354,67 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
void UObject_SK::callback() void UObject_SK::callback()
{ {
if( !active ) if( !active )
return; return;
try try
{ {
// проверка таймеров // проверка таймеров
checkTimers(this); checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) ) if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{ {
// cout << myname << ": ********* reset messages *********" << endl; // cout << myname << ": ********* reset messages *********" << endl;
resetMsg(); resetMsg();
} }
// обработка сообщений (таймеров и т.п.) // обработка сообщений (таймеров и т.п.)
for( int i=0; i<20; i++ ) for( int i=0; i<20; i++ )
{ {
if( !receiveMessage(msg) ) if( !receiveMessage(msg) )
break; break;
processingMessage(&msg); processingMessage(&msg);
updateOutputs(false); updateOutputs(false);
// updatePreviousValues(); // updatePreviousValues();
} }
// Выполнение шага программы // Выполнение шага программы
step(); step();
// "сердцебиение" // "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() ) if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{ {
ui.setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI); ui.setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset(); ptHeartBeat.reset();
} }
// обновление выходов // обновление выходов
updateOutputs(false); updateOutputs(false);
updatePreviousValues(); updatePreviousValues();
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(execute): " << ex << endl;
ulog.crit() << myname << "(execute): " << ex << endl; }
} catch(CORBA::SystemException& ex)
catch(CORBA::SystemException& ex) {
{ ucrit << myname << "(execute): СORBA::SystemException: "
if( ulog.is_crit() )
ulog.crit() << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit << myname << "(execute): catch ..." << endl;
ulog.crit() << myname << "(execute): catch ..." << endl; }
}
if( !active ) if( !active )
return; return;
msleep( sleep_msec ); msleep( sleep_msec );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val ) void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val )
{ {
// ui.setState(sid,state); // ui.setState(sid,state);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -447,85 +427,80 @@ void UObject_SK::preSensorInfo( UniSetTypes::SensorMessage* _sm ) ...@@ -447,85 +427,80 @@ void UObject_SK::preSensorInfo( UniSetTypes::SensorMessage* _sm )
{ {
sensorInfo(_sm); sensorInfo(_sm);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node ) 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 ) long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
{ {
try try
{ {
if( ulog.is_crit() ) ucrit << myname << "(getValue): Обращение к неизвестному датчику sid="
ulog.crit() << myname << "(getValue): Обращение к неизвестному датчику sid="
<< _sid << endl; << _sid << endl;
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(getValue): " << ex << endl;
ulog.crit() << myname << "(getValue): " << ex << endl; throw;
throw; }
}
return 0;
return 0;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd ) void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{ {
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
cout << myname << "(preAskSensors): wait activate..." << endl; cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
break; break;
} }
if( !activated && ulog.is_crit() ) if( !activated )
ulog.crit() << myname ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl; << "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; ) for( ;; )
{ {
try try
{ {
return; return;
} }
catch(SystemError& err) catch(SystemError& err)
{ {
if( ulog.is_crit() ) ucrit << myname << "(preAskSensors): " << err << endl;
ulog.crit() << myname << "(preAskSensors): " << err << endl; }
} catch(Exception& ex)
catch(Exception& ex) {
{ ucrit << myname << "(preAskSensors): " << ex << endl;
if( ulog.is_crit() ) }
ulog.crit() << myname << "(preAskSensors): " << ex << endl; catch(...)
} {
catch(...) ucrit << myname << "(preAskSensors): catch(...)" << endl;
{ }
if( ulog.is_crit() ) msleep(askPause);
ulog.crit() << myname << "(preAskSensors): catch(...)" << endl; }
}
msleep(askPause);
}
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state ) void UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
{ {
// блокируем сброс (т.к. он автоматически по таймеру) // блокируем сброс (т.к. он автоматически по таймеру)
if( !_state ) if( !_state )
{ {
ptResetMsg.reset(); ptResetMsg.reset();
return; return;
} }
alarm( _code, _state ); alarm( _code, _state );
ptResetMsg.reset(); ptResetMsg.reset();
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
...@@ -53,7 +53,7 @@ void TestProc::sysCommand( UniSetTypes::SystemMessage* sm ) ...@@ -53,7 +53,7 @@ void TestProc::sysCommand( UniSetTypes::SystemMessage* sm )
void TestProc::sensorInfo( SensorMessage *sm ) void TestProc::sensorInfo( SensorMessage *sm )
{ {
/* /*
dlog.level2() << myname << "(sensorInfo): id=" << sm->id << " val=" << sm->value mylog2 << myname << "(sensorInfo): id=" << sm->id << " val=" << sm->value
<< " " << timeToString(sm->sm_tv_sec,":") << " " << timeToString(sm->sm_tv_sec,":")
<< "(" << setw(6) << sm->sm_tv_usec << "): " << "(" << setw(6) << sm->sm_tv_usec << "): "
<< endl; << endl;
...@@ -83,7 +83,7 @@ void TestProc::timerInfo( TimerMessage *tm ) ...@@ -83,7 +83,7 @@ void TestProc::timerInfo( TimerMessage *tm )
{ {
state^=true; state^=true;
out_lamp_c = ( state ? lmpBLINK : lmpOFF ); out_lamp_c = ( state ? lmpBLINK : lmpOFF );
dlog.level2() << myname << ": state=" << state << " lmp=" << out_lamp_c << endl; mylog2 << myname << ": state=" << state << " lmp=" << out_lamp_c << endl;
askTimer(tmCheckWorking,checkTime); // reset timer askTimer(tmCheckWorking,checkTime); // reset timer
} }
else if( tm->id == tmCheckWorking ) else if( tm->id == tmCheckWorking )
...@@ -102,7 +102,7 @@ void TestProc::timerInfo( TimerMessage *tm ) ...@@ -102,7 +102,7 @@ void TestProc::timerInfo( TimerMessage *tm )
cerr << "======= TEST LOG PRINT ======" << endl; cerr << "======= TEST LOG PRINT ======" << endl;
cerr << "LOGLEVEL: [" << (int)(*lit) << "] " << (*lit) << endl; cerr << "LOGLEVEL: [" << (int)(*lit) << "] " << (*lit) << endl;
for( std::vector<Debug::type>::iterator it=loglevels.begin(); it!=loglevels.end(); ++it ) for( std::vector<Debug::type>::iterator it=loglevels.begin(); it!=loglevels.end(); ++it )
dlog[*it] << myname << ": test log print..." << endl; mylog[*it] << myname << ": test log print..." << endl;
cerr << "======= END LOG PRINT ======" << endl; cerr << "======= END LOG PRINT ======" << endl;
} }
...@@ -111,16 +111,16 @@ void TestProc::timerInfo( TimerMessage *tm ) ...@@ -111,16 +111,16 @@ void TestProc::timerInfo( TimerMessage *tm )
void TestProc::test_depend() void TestProc::test_depend()
{ {
cerr << myname << ": Check depend..." << endl; cerr << myname << ": Check depend..." << endl;
long test_val = 100; long test_val = 100;
// set depend 0... // set depend 0...
setValue(depend_c,0); setValue(depend_c,0);
setValue(set_d1_check_s,test_val); setValue(set_d1_check_s,test_val);
setValue(set_d2_check_s,test_val); setValue(set_d2_check_s,test_val);
cerr << myname << ": check depend OFF: d1: " << ( getValue(d1_check_s) == 0 ? "OK" : "FAIL" ) << endl; cerr << myname << ": check depend OFF: d1: " << ( getValue(d1_check_s) == 0 ? "OK" : "FAIL" ) << endl;
cerr << myname << ": check depend OFF: d2: " << ( getValue(d2_check_s) == -50 ? "OK" : "FAIL" ) << endl; cerr << myname << ": check depend OFF: d2: " << ( getValue(d2_check_s) == -50 ? "OK" : "FAIL" ) << endl;
// set depend 1 // set depend 1
setValue(depend_c,1); setValue(depend_c,1);
cerr << myname << ": check depend ON: d1: " << ( getValue(d1_check_s) == test_val ? "OK" : "FAIL" ) << endl; cerr << myname << ": check depend ON: d1: " << ( getValue(d1_check_s) == test_val ? "OK" : "FAIL" ) << endl;
...@@ -132,10 +132,10 @@ void TestProc::test_undefined_state() ...@@ -132,10 +132,10 @@ void TestProc::test_undefined_state()
// ---------------- Проверка выставления неопределённого состояния --------------------- // ---------------- Проверка выставления неопределённого состояния ---------------------
cerr << myname << ": Check undef state..." << endl; cerr << myname << ": Check undef state..." << endl;
undef ^= true; undef ^= true;
si.id = undef_c; si.id = undef_c;
si.node = conf->getLocalNode(); si.node = conf->getLocalNode();
cerr << myname << ": set undefined=" << undef << endl; cerr << myname << ": set undefined=" << undef << endl;
ui.setUndefinedState( si, undef, getId() ); ui.setUndefinedState( si, undef, getId() );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -149,7 +149,7 @@ void TestProc::test_thresholds() ...@@ -149,7 +149,7 @@ void TestProc::test_thresholds()
setValue(t_set_c,378); setValue(t_set_c,378);
cerr << myname << ": check threshold ON value: " << ( getValue(t_check_s) == 1 ? "OK" : "FAIL" ) << endl; cerr << myname << ": check threshold ON value: " << ( getValue(t_check_s) == 1 ? "OK" : "FAIL" ) << endl;
cerr << myname << ": ask threshold and check.. " << endl; cerr << myname << ": ask threshold and check.. " << endl;
try try
...@@ -166,7 +166,7 @@ void TestProc::test_thresholds() ...@@ -166,7 +166,7 @@ void TestProc::test_thresholds()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
dlog.level2() << myname << ": CHECK 'ask and get threshold' FAILED: " << ex << endl; mylog2 << myname << ": CHECK 'ask and get threshold' FAILED: " << ex << endl;
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -49,19 +49,19 @@ int main(int argc, const char **argv) ...@@ -49,19 +49,19 @@ int main(int argc, const char **argv)
} }
catch( SystemError& err ) catch( SystemError& err )
{ {
ulog.crit() << "(smemory): " << err << endl; ucrit << "(smemory): " << err << endl;
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
ulog.crit() << "(smemory): " << ex << endl; ucrit << "(smemory): " << ex << endl;
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
ulog.crit() << "(smemory): " << e.what() << endl; ucrit << "(smemory): " << e.what() << endl;
} }
catch(...) catch(...)
{ {
ulog.crit() << "(smemory): catch(...)" << endl; ucrit << "(smemory): catch(...)" << endl;
} }
return 1; return 1;
......
...@@ -73,7 +73,7 @@ namespace UniSetTypes ...@@ -73,7 +73,7 @@ namespace UniSetTypes
int getPIntField(const std::string& path, int def); int getPIntField(const std::string& path, int def);
xmlNode* findNode(xmlNode* node, const std::string& searchnode, const std::string& name="" ); xmlNode* findNode(xmlNode* node, const std::string& searchnode, const std::string& name="" );
// Получить узел // Получить узел
xmlNode* getNode(const std::string& path); xmlNode* getNode(const std::string& path);
// Получить указанное свойство пути // Получить указанное свойство пути
...@@ -92,7 +92,7 @@ namespace UniSetTypes ...@@ -92,7 +92,7 @@ namespace UniSetTypes
inline ObjectId getLocalNode() const { return localNode; } /*!< получение идентификатора локального узла */ inline ObjectId getLocalNode() const { return localNode; } /*!< получение идентификатора локального узла */
inline std::string getLocalNodeName() const { return localNodeName; } /*!< получение название локального узла */ inline std::string getLocalNodeName() const { return localNodeName; } /*!< получение название локального узла */
inline const std::string getNSName() const { return NSName; } inline const std::string getNSName() const { return NSName; }
// repository // repository
inline std::string getRootSection() const { return secRoot; } inline std::string getRootSection() const { return secRoot; }
inline std::string getSensorsSection() const { return secSensors; } inline std::string getSensorsSection() const { return secSensors; }
...@@ -108,7 +108,7 @@ namespace UniSetTypes ...@@ -108,7 +108,7 @@ namespace UniSetTypes
xmlNode* getXMLObjectNode( UniSetTypes::ObjectId ); xmlNode* getXMLObjectNode( UniSetTypes::ObjectId );
UniversalIO::IOType getIOType( UniSetTypes::ObjectId ); UniversalIO::IOType getIOType( UniSetTypes::ObjectId );
UniversalIO::IOType getIOType( const std::string& name ); UniversalIO::IOType getIOType( const std::string& name );
// net // net
inline unsigned int getCountOfNet() const { return countOfNet; } inline unsigned int getCountOfNet() const { return countOfNet; }
inline unsigned int getRepeatTimeout() const { return repeatTimeout; } inline unsigned int getRepeatTimeout() const { return repeatTimeout; }
...@@ -136,7 +136,7 @@ namespace UniSetTypes ...@@ -136,7 +136,7 @@ namespace UniSetTypes
inline bool isLocalIOR(){ return localIOR; } inline bool isLocalIOR(){ return localIOR; }
inline bool isTransientIOR(){ return transientIOR; } inline bool isTransientIOR(){ return transientIOR; }
/*! получить значение указанного параметра, или значение по умолчанию */ /*! получить значение указанного параметра, или значение по умолчанию */
std::string getArgParam(const std::string& name, const std::string& defval=""); std::string getArgParam(const std::string& name, const std::string& defval="");
/*! получить числовое значение параметра, если не число, то 0. Если параметра нет, используется значение defval */ /*! получить числовое значение параметра, если не число, то 0. Если параметра нет, используется значение defval */
...@@ -240,13 +240,28 @@ namespace UniSetTypes ...@@ -240,13 +240,28 @@ namespace UniSetTypes
/*! Глобальный объект для вывода логов */ /*! Глобальный объект для вывода логов */
extern DebugStream ulog; extern DebugStream ulog;
// Инициализация UniSetTypes::conf. // Инициализация UniSetTypes::conf.
// ( учитываются параметры командной строки --confile и --id-from-config ) // ( учитываются параметры командной строки --confile и --id-from-config )
void uniset_init( int argc, const char* const* argv, const std::string& xmlfile="configure.xml" ); void uniset_init( int argc, const char* const* argv, const std::string& xmlfile="configure.xml" );
} // end of UniSetTypes namespace } // end of UniSetTypes namespace
// --------------------------------------------------------------------------
// "синтаксический сахар"..для логов
#define uinfo if( UniSetTypes::ulog.debugging(Debug::INFO) ) UniSetTypes::ulog
#define uwarn if( UniSetTypes::ulog.debugging(Debug::WARN) ) UniSetTypes::ulog
#define ucrit if( UniSetTypes::ulog.debugging(Debug::CRIT) ) UniSetTypes::ulog
#define ulog1 if( UniSetTypes::ulog.debugging(Debug::LEVEL1) ) UniSetTypes::ulog
#define ulog2 if( UniSetTypes::ulog.debugging(Debug::LEVEL2) ) UniSetTypes::ulog
#define ulog3 if( UniSetTypes::ulog.debugging(Debug::LEVEL3) ) UniSetTypes::ulog
#define ulog4 if( UniSetTypes::ulog.debugging(Debug::LEVEL4) ) UniSetTypes::ulog
#define ulog5 if( UniSetTypes::ulog.debugging(Debug::LEVEL5) ) UniSetTypes::ulog
#define ulog6 if( UniSetTypes::ulog.debugging(Debug::LEVEL6) ) UniSetTypes::ulog
#define ulog7 if( UniSetTypes::ulog.debugging(Debug::LEVEL7) ) UniSetTypes::ulog
#define ulog8 if( UniSetTypes::ulog.debugging(Debug::LEVEL8) ) UniSetTypes::ulog
#define ulog9 if( UniSetTypes::ulog.debugging(Debug::LEVEL9) ) UniSetTypes::ulog
#define ulogsys if( UniSetTypes::ulog.debugging(Debug::SYSTEM) ) UniSetTypes::ulog
#define ulogrep if( UniSetTypes::ulog.debugging(Debug::REPOSITORY) ) UniSetTypes::ulog
// --------------------------------------------------------------------------
#endif // Configuration_H_ #endif // Configuration_H_
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <omniORB4/CORBA.h> #include <omniORB4/CORBA.h>
#include <omniORB4/omniURI.h> #include <omniORB4/omniURI.h>
#include <string> #include <string>
...@@ -63,7 +63,7 @@ UInterface::UInterface( ObjectId backid, CORBA::ORB_var orb, ObjectIndex* _oind ...@@ -63,7 +63,7 @@ UInterface::UInterface( ObjectId backid, CORBA::ORB_var orb, ObjectIndex* _oind
oind = uconf->oind; oind = uconf->oind;
init(); init();
} }
UInterface::~UInterface() UInterface::~UInterface()
{ {
...@@ -115,7 +115,7 @@ void UInterface::initBackId( UniSetTypes::ObjectId backid ) ...@@ -115,7 +115,7 @@ void UInterface::initBackId( UniSetTypes::ObjectId backid )
* \exception IOBadParam - генерируется если указано неправильное имя датчика или секции * \exception IOBadParam - генерируется если указано неправильное имя датчика или секции
* \exception IOTimeOut - генерируется если в течение времени timeout небыл получен ответ * \exception IOTimeOut - генерируется если в течение времени timeout небыл получен ответ
*/ */
long UInterface::getValue( ObjectId name, ObjectId node ) long UInterface::getValue( ObjectId name, ObjectId node )
throw(IO_THROW_EXCEPTIONS) throw(IO_THROW_EXCEPTIONS)
{ {
if ( name == DefaultObjectId ) if ( name == DefaultObjectId )
...@@ -163,46 +163,46 @@ long UInterface::getValue( ObjectId name, ObjectId node ) ...@@ -163,46 +163,46 @@ long UInterface::getValue( ObjectId name, ObjectId node )
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(name, node); rcache.erase(name, node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getValue): ORepFailed",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getValue): ORepFailed",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getValue): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getValue): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getValue): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getValue): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(getValue): TimeOut",name,node)); throw UniSetTypes::TimeOut(set_err("UI(getValue): TimeOut",name,node));
} }
long UInterface::getValue( ObjectId name ) long UInterface::getValue( ObjectId name )
{ {
return getValue(name, uconf->getLocalNode()); return getValue(name, uconf->getLocalNode());
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefined, void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefined,
UniSetTypes::ObjectId sup_id ) UniSetTypes::ObjectId sup_id )
{ {
if( si.id == DefaultObjectId ) if( si.id == DefaultObjectId )
{ {
ulog.warn() << "UI(setUndefinedState): ID=UniSetTypes::DefaultObjectId" << endl; uwarn << "UI(setUndefinedState): ID=UniSetTypes::DefaultObjectId" << endl;
return; return;
} }
...@@ -217,7 +217,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin ...@@ -217,7 +217,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
oref = rcache.resolve(si.id, si.node); oref = rcache.resolve(si.id, si.node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
...@@ -240,7 +240,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin ...@@ -240,7 +240,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(setUndefinedState):"+string(ex.err),si.id,si.node) << endl; uwarn << set_err("UI(setUndefinedState):"+string(ex.err),si.id,si.node) << endl;
} }
catch(IOController_i::IOBadParam& ex) catch(IOController_i::IOBadParam& ex)
{ {
...@@ -251,24 +251,24 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin ...@@ -251,24 +251,24 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
ulog.warn() << set_err("UI(setUndefinedState): resolve failed",si.id,si.node) << endl; uwarn << set_err("UI(setUndefinedState): resolve failed",si.id,si.node) << endl;
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(setUndefinedState): method no implement",si.id,si.node) << endl; uwarn << set_err("UI(setUndefinedState): method no implement",si.id,si.node) << endl;
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(setUndefinedState): object not exist",si.id,si.node) << endl; uwarn << set_err("UI(setUndefinedState): object not exist",si.id,si.node) << endl;
} }
catch(CORBA::COMM_FAILURE){} catch(CORBA::COMM_FAILURE){}
catch(CORBA::SystemException& ex){} catch(CORBA::SystemException& ex){}
catch(...){} catch(...){}
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(setUndefinedState): Timeout",si.id,si.node) << endl; uwarn << set_err("UI(setUndefinedState): Timeout",si.id,si.node) << endl;
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
/*! /*!
...@@ -277,7 +277,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin ...@@ -277,7 +277,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
* \return текущее значение датчика * \return текущее значение датчика
* \exception IOBadParam - генерируется если указано неправильное имя вывода или секции * \exception IOBadParam - генерируется если указано неправильное имя вывода или секции
*/ */
void UInterface::setValue(ObjectId name, long value, ObjectId node) void UInterface::setValue(ObjectId name, long value, ObjectId node)
throw(IO_THROW_EXCEPTIONS) throw(IO_THROW_EXCEPTIONS)
{ {
if ( name == DefaultObjectId ) if ( name == DefaultObjectId )
...@@ -291,14 +291,14 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node) ...@@ -291,14 +291,14 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node)
oref = rcache.resolve(name, node); oref = rcache.resolve(name, node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve( name, node ); oref = resolve( name, node );
IOController_i_var iom = IOController_i::_narrow(oref); IOController_i_var iom = IOController_i::_narrow(oref);
IOController_i::SensorInfo_var si; IOController_i::SensorInfo_var si;
si->id = name; si->id = name;
...@@ -329,31 +329,31 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node) ...@@ -329,31 +329,31 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node)
rcache.erase(name, node); rcache.erase(name, node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(setValue): resolve failed ",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(setValue): resolve failed ",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(setValue): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(setValue): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(setValue): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(setValue): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(setValue): CORBA::SystemException" << endl; // uwarn << "UI(setValue): CORBA::SystemException" << endl;
} }
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(setValue): Timeout",name,node)); throw UniSetTypes::TimeOut(set_err("UI(setValue): Timeout",name,node));
} }
void UInterface::setValue(ObjectId name, long value) void UInterface::setValue(ObjectId name, long value)
{ {
setValue(name, value, uconf->getLocalNode()); setValue(name, value, uconf->getLocalNode());
} }
...@@ -372,7 +372,7 @@ void UInterface::setValue( IOController_i::SensorInfo& si, long value, UniSetTyp ...@@ -372,7 +372,7 @@ void UInterface::setValue( IOController_i::SensorInfo& si, long value, UniSetTyp
myid = old; myid = old;
throw; throw;
} }
myid = old; myid = old;
} }
...@@ -382,7 +382,7 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe ...@@ -382,7 +382,7 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
{ {
if ( si.id == DefaultObjectId ) if ( si.id == DefaultObjectId )
{ {
ulog.warn() << "UI(fastSetValue): ID=UniSetTypes::DefaultObjectId" << endl; uwarn << "UI(fastSetValue): ID=UniSetTypes::DefaultObjectId" << endl;
return; return;
} }
...@@ -397,14 +397,14 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe ...@@ -397,14 +397,14 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
oref = rcache.resolve(si.id, si.node); oref = rcache.resolve(si.id, si.node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve( si.id,si.node ); oref = resolve( si.id,si.node );
IOController_i_var iom = IOController_i::_narrow(oref); IOController_i_var iom = IOController_i::_narrow(oref);
iom->fastSetValue(si, value,sup_id); iom->fastSetValue(si, value,sup_id);
return; return;
...@@ -412,15 +412,15 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe ...@@ -412,15 +412,15 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
catch(CORBA::TRANSIENT){} catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){} catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){} catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout()); msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil(); oref = CORBA::Object::_nil();
} }
} }
catch(UniSetTypes::TimeOut){} catch(UniSetTypes::TimeOut){}
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
rcache.erase(si.id,si.node); rcache.erase(si.id,si.node);
ulog.warn() << set_err("UI(fastSetValue): NameNotFound для объекта",si.id,si.node) << endl; uwarn << set_err("UI(fastSetValue): NameNotFound для объекта",si.id,si.node) << endl;
} }
catch(IOController_i::IOBadParam& ex) catch(IOController_i::IOBadParam& ex)
{ {
...@@ -429,33 +429,33 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe ...@@ -429,33 +429,33 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id,si.node); rcache.erase(si.id,si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
ulog.warn() << set_err("UI(fastSetValue): resolve failed ",si.id,si.node) << endl; uwarn << set_err("UI(fastSetValue): resolve failed ",si.id,si.node) << endl;
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id,si.node); rcache.erase(si.id,si.node);
ulog.warn() << set_err("UI(fastSetValue): method no implement",si.id,si.node) << endl; uwarn << set_err("UI(fastSetValue): method no implement",si.id,si.node) << endl;
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id,si.node); rcache.erase(si.id,si.node);
ulog.warn() << set_err("UI(fastSetValue): object not exist",si.id,si.node) << endl; uwarn << set_err("UI(fastSetValue): object not exist",si.id,si.node) << endl;
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(setValue): CORBA::SystemException" << endl; // uwarn << "UI(setValue): CORBA::SystemException" << endl;
} }
catch(...){} catch(...){}
rcache.erase(si.id,si.node); rcache.erase(si.id,si.node);
ulog.warn() << set_err("UI(fastSetValue): Timeout",si.id,si.node) << endl; uwarn << set_err("UI(fastSetValue): Timeout",si.id,si.node) << endl;
} }
...@@ -471,7 +471,7 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob ...@@ -471,7 +471,7 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
{ {
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
backid = myid; backid = myid;
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askRemoteSensor): unknown back ID"); throw UniSetTypes::IOBadParam("UI(askRemoteSensor): unknown back ID");
...@@ -486,14 +486,14 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob ...@@ -486,14 +486,14 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
oref = rcache.resolve(name, node); oref = rcache.resolve(name, node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve( name, node ); oref = resolve( name, node );
IONotifyController_i_var inc = IONotifyController_i::_narrow(oref); IONotifyController_i_var inc = IONotifyController_i::_narrow(oref);
IOController_i::SensorInfo_var si; IOController_i::SensorInfo_var si;
si->id = name; si->id = name;
...@@ -508,8 +508,8 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob ...@@ -508,8 +508,8 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
catch(CORBA::TRANSIENT){} catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){} catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){} catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout()); msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil(); oref = CORBA::Object::_nil();
} }
} }
catch(UniSetTypes::TimeOut){} catch(UniSetTypes::TimeOut){}
...@@ -525,30 +525,30 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob ...@@ -525,30 +525,30 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(name, node); rcache.erase(name, node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): resolve failed ",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(askSensor): resolve failed ",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(askSensor): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(askSensor): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(askSensor): ошибка системы коммуникации" << endl; // uwarn << "UI(askSensor): ошибка системы коммуникации" << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(askSensor): CORBA::SystemException" << endl; // uwarn << "UI(askSensor): CORBA::SystemException" << endl;
} }
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(askSensor): Timeout",name,node)); throw UniSetTypes::TimeOut(set_err("UI(askSensor): Timeout",name,node));
...@@ -565,7 +565,7 @@ void UInterface::askSensor( ObjectId name, UniversalIO::UIOCommand cmd, UniSetTy ...@@ -565,7 +565,7 @@ void UInterface::askSensor( ObjectId name, UniversalIO::UIOCommand cmd, UniSetTy
* \param node - идентификатор узла * \param node - идентификатор узла
*/ */
IOType UInterface::getIOType(ObjectId name, ObjectId node) IOType UInterface::getIOType(ObjectId name, ObjectId node)
throw(IO_THROW_EXCEPTIONS) throw(IO_THROW_EXCEPTIONS)
{ {
if ( name == DefaultObjectId ) if ( name == DefaultObjectId )
throw ORepFailed("UI(getIOType): попытка обратиться к объекту с id=UniSetTypes::DefaultObjectId"); throw ORepFailed("UI(getIOType): попытка обратиться к объекту с id=UniSetTypes::DefaultObjectId");
...@@ -583,7 +583,7 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node) ...@@ -583,7 +583,7 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve(name, node); oref = resolve(name, node);
IOController_i_var inc = IOController_i::_narrow(oref); IOController_i_var inc = IOController_i::_narrow(oref);
...@@ -595,13 +595,13 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node) ...@@ -595,13 +595,13 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
catch(CORBA::TRANSIENT){} catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){} catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){} catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout()); msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil(); oref = CORBA::Object::_nil();
} }
} }
catch(IOController_i::NameNotFound& ex) catch(IOController_i::NameNotFound& ex)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::NameNotFound("UI(getIOType): "+string(ex.err)); throw UniSetTypes::NameNotFound("UI(getIOType): "+string(ex.err));
} }
catch(IOController_i::IOBadParam& ex) catch(IOController_i::IOBadParam& ex)
...@@ -611,32 +611,32 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node) ...@@ -611,32 +611,32 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(name, node); rcache.erase(name, node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): resolve failed ",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getIOType): resolve failed ",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getIOType): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getIOType): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getIOType): ошибка системы коммуникации" << endl; // uwarn << "UI(getIOType): ошибка системы коммуникации" << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getIOType): CORBA::SystemException" << endl; // uwarn << "UI(getIOType): CORBA::SystemException" << endl;
} }
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(getIOType): Timeout",name, node)); throw UniSetTypes::TimeOut(set_err("UI(getIOType): Timeout",name, node));
} }
...@@ -663,12 +663,12 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node) ...@@ -663,12 +663,12 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
oref = rcache.resolve(name, node); oref = rcache.resolve(name, node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve( name, node ); oref = resolve( name, node );
UniSetObject_i_var uo = UniSetObject_i::_narrow(oref); UniSetObject_i_var uo = UniSetObject_i::_narrow(oref);
...@@ -677,13 +677,13 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node) ...@@ -677,13 +677,13 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
catch(CORBA::TRANSIENT){} catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){} catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){} catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout()); msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil(); oref = CORBA::Object::_nil();
} }
} }
catch(IOController_i::NameNotFound& ex) catch(IOController_i::NameNotFound& ex)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::NameNotFound("UI(getType): "+string(ex.err)); throw UniSetTypes::NameNotFound("UI(getType): "+string(ex.err));
} }
catch(IOController_i::IOBadParam& ex) catch(IOController_i::IOBadParam& ex)
...@@ -693,33 +693,33 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node) ...@@ -693,33 +693,33 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(name, node); rcache.erase(name, node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getType): resolve failed ",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getType): resolve failed ",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getType): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getType): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getType): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(getType): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getType): ошибка системы коммуникации" << endl; // uwarn << "UI(getType): ошибка системы коммуникации" << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getType): CORBA::SystemException" << endl; // uwarn << "UI(getType): CORBA::SystemException" << endl;
} }
catch(UniSetTypes::TimeOut){} catch(UniSetTypes::TimeOut){}
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(getType): Timeout",name, node)); throw UniSetTypes::TimeOut(set_err("UI(getType): Timeout",name, node));
} }
...@@ -736,7 +736,7 @@ void UInterface::registered(UniSetTypes::ObjectId id, const UniSetTypes::ObjectP ...@@ -736,7 +736,7 @@ void UInterface::registered(UniSetTypes::ObjectId id, const UniSetTypes::ObjectP
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
void UInterface::registered( UniSetTypes::ObjectId id, UniSetTypes::ObjectId node, void UInterface::registered( UniSetTypes::ObjectId id, UniSetTypes::ObjectId node,
const UniSetTypes::ObjectPtr oRef, bool force ) throw(ORepFailed) const UniSetTypes::ObjectPtr oRef, bool force ) throw(ORepFailed)
{ {
// если влючён режим использования локальных файлов // если влючён режим использования локальных файлов
...@@ -805,25 +805,15 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec ) ...@@ -805,25 +805,15 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
if( !sior.empty() ) if( !sior.empty() )
{ {
CORBA::Object_var nso = orb->string_to_object(sior.c_str()); CORBA::Object_var nso = orb->string_to_object(sior.c_str());
rcache.cache(rid, node, nso); // заносим в кэш rcache.cache(rid, node, nso); // заносим в кэш
return nso._retn(); return nso._retn();
} }
else else
{ {
// если NameService недоступен то, // если NameService недоступен то,
// сразу выдаём ошибку // сразу выдаём ошибку
// if( CORBA::is_nil(localctx) ) uwarn << "not found IOR-file for " << uconf->oind->getNameById(rid,node) << endl;
// { throw UniSetTypes::ResolveNameError();
if( ulog.is_warn() )
{
ulog.warn() << "not found IOR-file for " << uconf->oind->getNameById(rid,node) << endl;
}
throw UniSetTypes::ResolveNameError();
// }
// иначе пытаемся получить ссылку через NameService (omniNames)
// ulog.warn() << "не найден IOR-файл для " << uconf->oind->getNameById(rid,node)
// << " пытаемся получить доступ через NameService \n";
} }
} }
...@@ -838,12 +828,10 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec ) ...@@ -838,12 +828,10 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
{ {
try try
{ {
// // ulog.info() << "пытаемся связаться с "<< node << endl;
if( CORBA::is_nil(orb) ) if( CORBA::is_nil(orb) )
orb = uconf->getORB(); orb = uconf->getORB();
ctx = ORepHelpers::getRootNamingContext( orb, nodeName.c_str() ); ctx = ORepHelpers::getRootNamingContext( orb, nodeName.c_str() );
// // ulog.info() << "ok. "<< endl;
break; break;
} }
// catch(CORBA::COMM_FAILURE& ex ) // catch(CORBA::COMM_FAILURE& ex )
...@@ -855,12 +843,12 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec ) ...@@ -855,12 +843,12 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
ostringstream s; ostringstream s;
s << bname << curNet; s << bname << curNet;
nodeName=s.str(); nodeName=s.str();
} }
} }
if( CORBA::is_nil(ctx) ) if( CORBA::is_nil(ctx) )
{ {
// ulog.warn() << "NameService недоступен на узле "<< node << endl; // uwarn << "NameService недоступен на узле "<< node << endl;
throw NSResolveError(); throw NSResolveError();
} }
} }
...@@ -879,28 +867,28 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec ) ...@@ -879,28 +867,28 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
else else
localctx = ORepHelpers::getRootNamingContext( orb, nodeName ); localctx = ORepHelpers::getRootNamingContext( orb, nodeName );
} }
ctx = localctx; ctx = localctx;
} }
CosNaming::Name_var oname = omniURI::stringToName( oind->getNameById(rid,node).c_str() ); CosNaming::Name_var oname = omniURI::stringToName( oind->getNameById(rid,node).c_str() );
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
CORBA::Object_var nso = ctx->resolve(oname); CORBA::Object_var nso = ctx->resolve(oname);
if( CORBA::is_nil(nso) ) if( CORBA::is_nil(nso) )
throw UniSetTypes::ResolveNameError(); throw UniSetTypes::ResolveNameError();
// Для var // Для var
rcache.cache(rid, node, nso); // заносим в кэш rcache.cache(rid, node, nso); // заносим в кэш
return nso._retn(); return nso._retn();
} }
catch(CORBA::TRANSIENT){} catch(CORBA::TRANSIENT){}
msleep(uconf->getRepeatTimeout()); msleep(uconf->getRepeatTimeout());
} }
throw UniSetTypes::TimeOut(); throw UniSetTypes::TimeOut();
} }
catch(const CosNaming::NamingContext::NotFound &nf){} catch(const CosNaming::NamingContext::NotFound &nf){}
...@@ -910,23 +898,23 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec ) ...@@ -910,23 +898,23 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
throw UniSetTypes::ResolveNameError("ObjectNOTExist"); throw UniSetTypes::ResolveNameError("ObjectNOTExist");
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
throw UniSetTypes::ResolveNameError("CORBA::CommFailure"); throw UniSetTypes::ResolveNameError("CORBA::CommFailure");
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(resolve): CORBA::SystemException" << endl; // uwarn << "UI(resolve): CORBA::SystemException" << endl;
throw UniSetTypes::TimeOut(); throw UniSetTypes::TimeOut();
} }
throw UniSetTypes::ResolveNameError(); throw UniSetTypes::ResolveNameError();
} }
// ------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------
void UInterface::send( ObjectId name, TransportMessage& msg, ObjectId node) void UInterface::send( ObjectId name, TransportMessage& msg, ObjectId node)
throw(IO_THROW_EXCEPTIONS) throw(IO_THROW_EXCEPTIONS)
{ {
if ( name == DefaultObjectId ) if ( name == DefaultObjectId )
...@@ -963,27 +951,27 @@ void UInterface::send( ObjectId name, TransportMessage& msg, ObjectId node) ...@@ -963,27 +951,27 @@ void UInterface::send( ObjectId name, TransportMessage& msg, ObjectId node)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): resolve failed ",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(send): resolve failed ",name,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): method no implement",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(send): method no implement",name,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): object not exist",name,node)); throw UniSetTypes::IOBadParam(set_err("UI(send): object not exist",name,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(send): ошибка системы коммуникации" << endl; // uwarn << "UI(send): ошибка системы коммуникации" << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(send): CORBA::SystemException" << endl; // uwarn << "UI(send): CORBA::SystemException" << endl;
} }
rcache.erase(name, node); rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(send): Timeout",name, node)); throw UniSetTypes::TimeOut(set_err("UI(send): Timeout",name, node));
...@@ -1034,7 +1022,7 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id ...@@ -1034,7 +1022,7 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id
catch(IOController_i::NameNotFound &ex) catch(IOController_i::NameNotFound &ex)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << "UI(getChangedTime): " << ex.err << endl; uwarn << "UI(getChangedTime): " << ex.err << endl;
} }
catch(IOController_i::IOBadParam& ex ) catch(IOController_i::IOBadParam& ex )
{ {
...@@ -1044,27 +1032,27 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id ...@@ -1044,27 +1032,27 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(getChangedTime): resolve failed ",si.id,si.node) << endl; uwarn << set_err("UI(getChangedTime): resolve failed ",si.id,si.node) << endl;
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(getChangedTime): method no implement",si.id,si.node) << endl; uwarn << set_err("UI(getChangedTime): method no implement",si.id,si.node) << endl;
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(getChangedTime): object not exist",si.id,si.node) << endl; uwarn << set_err("UI(getChangedTime): object not exist",si.id,si.node) << endl;
} }
catch(CORBA::COMM_FAILURE) catch(CORBA::COMM_FAILURE)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(saveState): CORBA::COMM_FAILURE " << endl; // uwarn << "UI(saveState): CORBA::COMM_FAILURE " << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(saveState): CORBA::SystemException" << endl; // uwarn << "UI(saveState): CORBA::SystemException" << endl;
} }
catch(...){} catch(...){}
...@@ -1116,8 +1104,7 @@ bool UInterface::CacheOfResolve::clean() ...@@ -1116,8 +1104,7 @@ bool UInterface::CacheOfResolve::clean()
{ {
UniSetTypes::uniset_rwmutex_wrlock l(cmutex); UniSetTypes::uniset_rwmutex_wrlock l(cmutex);
if( ulog.is_info() ) uinfo << "UI: clean cache...."<< endl;
ulog.info() << "UI: clean cache...."<< endl;
time_t tm = time(NULL)-CleanTime*60; time_t tm = time(NULL)-CleanTime*60;
// remove_if(mcache.begin(), mcache.end(),OldRef_eq(tm)); // remove_if(mcache.begin(), mcache.end(),OldRef_eq(tm));
...@@ -1131,7 +1118,7 @@ bool UInterface::CacheOfResolve::clean() ...@@ -1131,7 +1118,7 @@ bool UInterface::CacheOfResolve::clean()
if( mcache.size() < MaxSize ) if( mcache.size() < MaxSize )
return true; return true;
return false; return false;
} }
// ------------------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------------------
...@@ -1163,16 +1150,16 @@ bool UInterface::isExist( UniSetTypes::ObjectId id ) ...@@ -1163,16 +1150,16 @@ bool UInterface::isExist( UniSetTypes::ObjectId id )
CORBA::Object_var oref = orb->string_to_object(sior.c_str()); CORBA::Object_var oref = orb->string_to_object(sior.c_str());
return rep.isExist( oref ); return rep.isExist( oref );
} }
return false; return false;
} }
string nm = oind->getNameById(id); string nm = oind->getNameById(id);
return rep.isExist(nm); return rep.isExist(nm);
} }
catch(UniSetTypes::Exception& ex) catch(UniSetTypes::Exception& ex)
{ {
// ulog.warn() << "UI(isExist): " << ex << endl; // uwarn << "UI(isExist): " << ex << endl;
} }
catch(...){} catch(...){}
return false; return false;
...@@ -1208,13 +1195,13 @@ string UInterface::set_err(const std::string& pre, UniSetTypes::ObjectId id, Uni ...@@ -1208,13 +1195,13 @@ string UInterface::set_err(const std::string& pre, UniSetTypes::ObjectId id, Uni
return string(pre+" DefaultObjectId"); return string(pre+" DefaultObjectId");
string nm(oind->getNameById(id,node)); string nm(oind->getNameById(id,node));
if( nm.empty() ) if( nm.empty() )
nm = "UnknownName"; nm = "UnknownName";
ostringstream s; ostringstream s;
s << pre << " (" << id << ")" << nm; s << pre << " (" << id << ")" << nm;
return s.str(); return s.str();
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid, void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid,
...@@ -1223,7 +1210,7 @@ void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Threshold ...@@ -1223,7 +1210,7 @@ void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Threshold
UniSetTypes::ObjectId backid) UniSetTypes::ObjectId backid)
{ {
askRemoteThreshold(sid, uconf->getLocalNode(), tid, cmd, low, hi, invert, backid); askRemoteThreshold(sid, uconf->getLocalNode(), tid, cmd, low, hi, invert, backid);
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ObjectId node, void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ObjectId node,
UniSetTypes::ThresholdId tid, UniversalIO::UIOCommand cmd, UniSetTypes::ThresholdId tid, UniversalIO::UIOCommand cmd,
...@@ -1232,7 +1219,7 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj ...@@ -1232,7 +1219,7 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
{ {
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
backid = myid; backid = myid;
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askRemoteThreshold): unknown back ID"); throw UniSetTypes::IOBadParam("UI(askRemoteThreshold): unknown back ID");
...@@ -1247,14 +1234,14 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj ...@@ -1247,14 +1234,14 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
oref = rcache.resolve(sid, node); oref = rcache.resolve(sid, node);
} }
catch( NameNotFound ){} catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++) for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{ {
try try
{ {
if( CORBA::is_nil(oref) ) if( CORBA::is_nil(oref) )
oref = resolve( sid, node ); oref = resolve( sid, node );
IONotifyController_i_var inc = IONotifyController_i::_narrow(oref); IONotifyController_i_var inc = IONotifyController_i::_narrow(oref);
IOController_i::SensorInfo_var si; IOController_i::SensorInfo_var si;
si->id = sid; si->id = sid;
...@@ -1287,35 +1274,35 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj ...@@ -1287,35 +1274,35 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(sid, node); rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): resolve failed ",sid,node)); throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): resolve failed ",sid,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(sid, node); rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): method no implement",sid,node)); throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): method no implement",sid,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(sid, node); rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): object not exist",sid,node)); throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): object not exist",sid,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(askThreshold): ошибка системы коммуникации" << endl; // uwarn << "UI(askThreshold): ошибка системы коммуникации" << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(askThreshold): CORBA::SystemException" << endl; // uwarn << "UI(askThreshold): CORBA::SystemException" << endl;
} }
rcache.erase(sid, node); rcache.erase(sid, node);
throw UniSetTypes::TimeOut(set_err("UI(askThreshold): Timeout",sid,node)); throw UniSetTypes::TimeOut(set_err("UI(askThreshold): Timeout",sid,node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
IONotifyController_i::ThresholdInfo IONotifyController_i::ThresholdInfo
UInterface::getThresholdInfo( UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid ) UInterface::getThresholdInfo( UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid )
{ {
IOController_i::SensorInfo si; IOController_i::SensorInfo si;
...@@ -1324,7 +1311,7 @@ IONotifyController_i::ThresholdInfo ...@@ -1324,7 +1311,7 @@ IONotifyController_i::ThresholdInfo
return getThresholdInfo(si,tid); return getThresholdInfo(si,tid);
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
IONotifyController_i::ThresholdInfo IONotifyController_i::ThresholdInfo
UInterface::getThresholdInfo( const IOController_i::SensorInfo& si, UniSetTypes::ThresholdId tid ) UInterface::getThresholdInfo( const IOController_i::SensorInfo& si, UniSetTypes::ThresholdId tid )
{ {
if ( si.id == DefaultObjectId ) if ( si.id == DefaultObjectId )
...@@ -1369,30 +1356,30 @@ IONotifyController_i::ThresholdInfo ...@@ -1369,30 +1356,30 @@ IONotifyController_i::ThresholdInfo
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): resolve failed ",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): resolve failed ",si.id,si.node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): method no implement",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): method no implement",si.id,si.node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): object not exist",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): object not exist",si.id,si.node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::TimeOut(set_err("UI(getThresholdInfo): Timeout",si.id,si.node)); throw UniSetTypes::TimeOut(set_err("UI(getThresholdInfo): Timeout",si.id,si.node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
...@@ -1440,40 +1427,40 @@ long UInterface::getRawValue( const IOController_i::SensorInfo& si ) ...@@ -1440,40 +1427,40 @@ long UInterface::getRawValue( const IOController_i::SensorInfo& si )
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): resolve failed ",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): resolve failed ",si.id,si.node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): method no implement",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): method no implement",si.id,si.node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): object not exist",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): object not exist",si.id,si.node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::TimeOut(set_err("UI(getRawValue): Timeout",si.id,si.node)); throw UniSetTypes::TimeOut(set_err("UI(getRawValue): Timeout",si.id,si.node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
void UInterface::calibrate(const IOController_i::SensorInfo& si, void UInterface::calibrate(const IOController_i::SensorInfo& si,
const IOController_i::CalibrateInfo& ci, const IOController_i::CalibrateInfo& ci,
UniSetTypes::ObjectId admId ) UniSetTypes::ObjectId admId )
{ {
if( admId==UniSetTypes::DefaultObjectId ) if( admId==UniSetTypes::DefaultObjectId )
admId = myid; admId = myid;
// if( admId==UniSetTypes::DefaultObjectId ) // if( admId==UniSetTypes::DefaultObjectId )
// throw UniSetTypes::IOBadParam("UI(askTreshold): неизвестен ID администратора"); // throw UniSetTypes::IOBadParam("UI(askTreshold): неизвестен ID администратора");
...@@ -1520,32 +1507,32 @@ void UInterface::calibrate(const IOController_i::SensorInfo& si, ...@@ -1520,32 +1507,32 @@ void UInterface::calibrate(const IOController_i::SensorInfo& si,
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(calibrate): resolve failed ",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(calibrate): resolve failed ",si.id,si.node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(calibrate): method no implement",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(calibrate): method no implement",si.id,si.node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(calibrate): object not exist",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(calibrate): object not exist",si.id,si.node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::TimeOut(set_err("UI(calibrate): Timeout",si.id,si.node)); throw UniSetTypes::TimeOut(set_err("UI(calibrate): Timeout",si.id,si.node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
IOController_i::CalibrateInfo UInterface::getCalibrateInfo( const IOController_i::SensorInfo& si ) IOController_i::CalibrateInfo UInterface::getCalibrateInfo( const IOController_i::SensorInfo& si )
{ {
...@@ -1591,30 +1578,30 @@ IOController_i::CalibrateInfo UInterface::getCalibrateInfo( const IOController_i ...@@ -1591,30 +1578,30 @@ IOController_i::CalibrateInfo UInterface::getCalibrateInfo( const IOController_i
} }
catch(ORepFailed) catch(ORepFailed)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): resolve failed ",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): resolve failed ",si.id,si.node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): method no implement",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): method no implement",si.id,si.node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): object not exist",si.id,si.node)); throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): object not exist",si.id,si.node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(si.id, si.node); rcache.erase(si.id, si.node);
throw UniSetTypes::TimeOut(set_err("UI(getCalibrateInfo): Timeout",si.id,si.node)); throw UniSetTypes::TimeOut(set_err("UI(getCalibrateInfo): Timeout",si.id,si.node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
...@@ -1645,7 +1632,7 @@ IOController_i::SensorInfoSeq_var UInterface::getSensorSeq( UniSetTypes::IDList& ...@@ -1645,7 +1632,7 @@ IOController_i::SensorInfoSeq_var UInterface::getSensorSeq( UniSetTypes::IDList&
oref = resolve(sid,conf->getLocalNode()); oref = resolve(sid,conf->getLocalNode());
IOController_i_var iom = IOController_i::_narrow(oref); IOController_i_var iom = IOController_i::_narrow(oref);
UniSetTypes::IDSeq_var seq = lst.getIDSeq(); UniSetTypes::IDSeq_var seq = lst.getIDSeq();
return iom->getSensorSeq(seq); return iom->getSensorSeq(seq);
} }
...@@ -1672,26 +1659,26 @@ IOController_i::SensorInfoSeq_var UInterface::getSensorSeq( UniSetTypes::IDList& ...@@ -1672,26 +1659,26 @@ IOController_i::SensorInfoSeq_var UInterface::getSensorSeq( UniSetTypes::IDList&
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): resolve failed ",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): resolve failed ",sid,conf->getLocalNode()));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): method no implement",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): method no implement",sid,conf->getLocalNode()));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): object not exist",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): object not exist",sid,conf->getLocalNode()));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::TimeOut(set_err("UI(getSensorSeq): Timeout",sid,conf->getLocalNode())); throw UniSetTypes::TimeOut(set_err("UI(getSensorSeq): Timeout",sid,conf->getLocalNode()));
...@@ -1748,31 +1735,31 @@ IDSeq_var UInterface::setOutputSeq( const IOController_i::OutSeq& lst, UniSetTyp ...@@ -1748,31 +1735,31 @@ IDSeq_var UInterface::setOutputSeq( const IOController_i::OutSeq& lst, UniSetTyp
rcache.erase(lst[0].si.id,lst[0].si.node); rcache.erase(lst[0].si.id,lst[0].si.node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): resolve failed ",lst[0].si.id,lst[0].si.node)); throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): resolve failed ",lst[0].si.id,lst[0].si.node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(lst[0].si.id,lst[0].si.node); rcache.erase(lst[0].si.id,lst[0].si.node);
throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): method no implement",lst[0].si.id,lst[0].si.node)); throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): method no implement",lst[0].si.id,lst[0].si.node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(lst[0].si.id,lst[0].si.node); rcache.erase(lst[0].si.id,lst[0].si.node);
throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): object not exist",lst[0].si.id,lst[0].si.node)); throw UniSetTypes::IOBadParam(set_err("UI(setOutputSeq): object not exist",lst[0].si.id,lst[0].si.node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(lst[0].si.id,lst[0].si.node); rcache.erase(lst[0].si.id,lst[0].si.node);
throw UniSetTypes::TimeOut(set_err("UI(setOutputSeq): Timeout",lst[0].si.id,lst[0].si.node)); throw UniSetTypes::TimeOut(set_err("UI(setOutputSeq): Timeout",lst[0].si.id,lst[0].si.node));
} }
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst, UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst,
UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId backid ) UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId backid )
{ {
if( lst.size() == 0 ) if( lst.size() == 0 )
...@@ -1780,7 +1767,7 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst, ...@@ -1780,7 +1767,7 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst,
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
backid = myid; backid = myid;
if( backid==UniSetTypes::DefaultObjectId ) if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askSensorSeq): unknown back ID"); throw UniSetTypes::IOBadParam("UI(askSensorSeq): unknown back ID");
...@@ -1837,26 +1824,26 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst, ...@@ -1837,26 +1824,26 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst,
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): resolve failed ",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): resolve failed ",sid,conf->getLocalNode()));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): method no implement",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): method no implement",sid,conf->getLocalNode()));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): object not exist",sid,conf->getLocalNode())); throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): object not exist",sid,conf->getLocalNode()));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(sid,conf->getLocalNode()); rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::TimeOut(set_err("UI(askSensorSeq): Timeout",sid,conf->getLocalNode())); throw UniSetTypes::TimeOut(set_err("UI(askSensorSeq): Timeout",sid,conf->getLocalNode()));
} }
...@@ -1905,26 +1892,26 @@ IOController_i::ShortMapSeq* UInterface::getSensors( UniSetTypes::ObjectId id, U ...@@ -1905,26 +1892,26 @@ IOController_i::ShortMapSeq* UInterface::getSensors( UniSetTypes::ObjectId id, U
rcache.erase(id,node); rcache.erase(id,node);
// не смогли получить ссылку на объект // не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getSensors): resolve failed ",id,node)); throw UniSetTypes::IOBadParam(set_err("UI(getSensors): resolve failed ",id,node));
} }
catch(CORBA::NO_IMPLEMENT) catch(CORBA::NO_IMPLEMENT)
{ {
rcache.erase(id,node); rcache.erase(id,node);
throw UniSetTypes::IOBadParam(set_err("UI(getSensors): method no implement",id,node)); throw UniSetTypes::IOBadParam(set_err("UI(getSensors): method no implement",id,node));
} }
catch(CORBA::OBJECT_NOT_EXIST) catch(CORBA::OBJECT_NOT_EXIST)
{ {
rcache.erase(id,node); rcache.erase(id,node);
throw UniSetTypes::IOBadParam(set_err("UI(getSensors): object not exist",id,node)); throw UniSetTypes::IOBadParam(set_err("UI(getSensors): object not exist",id,node));
} }
catch(CORBA::COMM_FAILURE& ex) catch(CORBA::COMM_FAILURE& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
// ошибка системы коммуникации // ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl; // uwarn << "UI(getValue): CORBA::SystemException" << endl;
} }
rcache.erase(id,node); rcache.erase(id,node);
throw UniSetTypes::TimeOut(set_err("UI(getSensors): Timeout",id,node)); throw UniSetTypes::TimeOut(set_err("UI(getSensors): Timeout",id,node));
} }
...@@ -1942,10 +1929,10 @@ bool UInterface::waitReady( UniSetTypes::ObjectId id, int msec, int pmsec, Objec ...@@ -1942,10 +1929,10 @@ bool UInterface::waitReady( UniSetTypes::ObjectId id, int msec, int pmsec, Objec
break; break;
} }
catch(...){} catch(...){}
msleep(pmsec); msleep(pmsec);
} }
return ready; return ready;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1974,11 +1961,11 @@ UniversalIO::IOType UInterface::getConfIOType( UniSetTypes::ObjectId id ) ...@@ -1974,11 +1961,11 @@ UniversalIO::IOType UInterface::getConfIOType( UniSetTypes::ObjectId id )
{ {
if( !conf ) if( !conf )
return UniversalIO::UnknownIOType; return UniversalIO::UnknownIOType;
xmlNode* x = conf->getXMLObjectNode(id); xmlNode* x = conf->getXMLObjectNode(id);
if( !x ) if( !x )
return UniversalIO::UnknownIOType; return UniversalIO::UnknownIOType;
UniXML_iterator it(x); UniXML_iterator it(x);
return UniSetTypes::getIOType( it.getProp("iotype") ); return UniSetTypes::getIOType( it.getProp("iotype") );
} }
......
...@@ -54,7 +54,7 @@ void IORFile::setIOR( const ObjectId id, const ObjectId node, const string& sior ...@@ -54,7 +54,7 @@ void IORFile::setIOR( const ObjectId id, const ObjectId node, const string& sior
if( !ior_file ) if( !ior_file )
{ {
ulog.crit() << "(IORFile): не смог открыть файл "+fname << endl; ucrit << "(IORFile): не смог открыть файл "+fname << endl;
throw TimeOut("(IORFile): не смог создать ior-файл "+fname); throw TimeOut("(IORFile): не смог создать ior-файл "+fname);
} }
......
...@@ -35,18 +35,17 @@ using namespace std; ...@@ -35,18 +35,17 @@ using namespace std;
namespace ORepHelpers namespace ORepHelpers
{ {
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! /*!
* \param cname - полное имя контекста ссылку на который, возвратит функция. * \param cname - полное имя контекста ссылку на который, возвратит функция.
* \param argc, argv - параметры инициализации ORB * \param argc, argv - параметры инициализации ORB
*/ */
CosNaming::NamingContext_ptr getContext(const string& cname, int argc, const char* const* argv, const string& nsName )throw(ORepFailed) CosNaming::NamingContext_ptr getContext(const string& cname, int argc, const char* const* argv, const string& nsName )throw(ORepFailed)
{ {
CORBA::ORB_var orb = CORBA::ORB_init( argc, (char**)argv ); CORBA::ORB_var orb = CORBA::ORB_init( argc, (char**)argv );
if( ulog.is_repository() ) ulogrep << "OREPHELP: orb init ok"<< endl;
ulog.repository() << "OREPHELP: orb init ok"<< endl;
return getContext(orb, cname, nsName); return getContext(orb, cname, nsName);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -54,26 +53,22 @@ namespace ORepHelpers ...@@ -54,26 +53,22 @@ namespace ORepHelpers
{ {
CosNaming::NamingContext_var rootC; CosNaming::NamingContext_var rootC;
if( ulog.is_repository() ) ulogrep << "OREPHELPER(getContext): get rootcontext...(servname = "<< servname << ")" <<endl;
ulog.repository() << "OREPHELPER(getContext): get rootcontext...(servname = "<< servname << ")" <<endl;
rootC = getRootNamingContext(orb, servname); rootC = getRootNamingContext(orb, servname);
if( ulog.is_repository() ) ulogrep << "OREPHELPER(getContext): get rootContect ok " << endl;
ulog.repository() << "OREPHELPER(getContext): get rootContect ok " << endl;
if( CORBA::is_nil(rootC) ) if( CORBA::is_nil(rootC) )
{ {
if( ulog.is_warn() ) uwarn << "OREPHELPER: не смог получить ссылку на NameServices"<< endl;
ulog.warn() << "OREPHELPER: не смог получить ссылку на NameServices"<< endl;
throw ORepFailed("OREPHELPER(getContext): не смог получить ссылку на NameServices"); throw ORepFailed("OREPHELPER(getContext): не смог получить ссылку на NameServices");
} }
if ( cname.empty() ) if ( cname.empty() )
return rootC._retn(); return rootC._retn();
if( ulog.is_repository() ) ulogrep << "OREPHELPER(getContext): get ref context " << cname << endl;
ulog.repository() << "OREPHELPER(getContext): get ref context " << cname << endl;
CosNaming::Name_var ctxName = omniURI::stringToName(cname.c_str()); CosNaming::Name_var ctxName = omniURI::stringToName(cname.c_str());
CosNaming::NamingContext_var ctx; CosNaming::NamingContext_var ctx;
...@@ -91,16 +86,14 @@ namespace ORepHelpers ...@@ -91,16 +86,14 @@ namespace ORepHelpers
{ {
ostringstream err; ostringstream err;
err << "OREPHELPER(getContext): не смог получить ссылку на контекст " << cname; err << "OREPHELPER(getContext): не смог получить ссылку на контекст " << cname;
if( ulog.is_warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
catch(const CosNaming::NamingContext::NotFound &nf) catch(const CosNaming::NamingContext::NotFound &nf)
{ {
ostringstream err; ostringstream err;
err << "OREPHELPER(getContext): не найден контекст " << cname; err << "OREPHELPER(getContext): не найден контекст " << cname;
if( ulog.warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
catch(const CosNaming::NamingContext::CannotProceed &np) catch(const CosNaming::NamingContext::CannotProceed &np)
...@@ -108,40 +101,33 @@ namespace ORepHelpers ...@@ -108,40 +101,33 @@ namespace ORepHelpers
ostringstream err; ostringstream err;
err << "OREPHELPER(getContext): catch CannotProced " << cname; err << "OREPHELPER(getContext): catch CannotProced " << cname;
err << " bad part=" << omniURI::nameToString(np.rest_of_name); err << " bad part=" << omniURI::nameToString(np.rest_of_name);
if( ulog.is_warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
ostringstream err; ostringstream err;
err << "OREPHELPER(getContext): поймали CORBA::SystemException: " << ex.NP_minorString(); err << "OREPHELPER(getContext): поймали CORBA::SystemException: " << ex.NP_minorString();
if( ulog.is_warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
catch(CORBA::Exception&) catch(CORBA::Exception&)
{ {
if( ulog.is_warn() ) uwarn << "OREPHELPER(getContext): поймали CORBA::Exception." << endl;
ulog.warn() << "OREPHELPER(getContext): поймали CORBA::Exception." << endl;
throw ORepFailed(); throw ORepFailed();
} }
catch(omniORB::fatalException& fe) catch(omniORB::fatalException& fe)
{ {
ostringstream err; ostringstream err;
err << "OREPHELPER(getContext): поймали omniORB::fatalException:"; err << "OREPHELPER(getContext): поймали omniORB::fatalException:";
if( ulog.is_warn() ) uwarn << err << endl;
{ uwarn << " file: " << fe.file() << endl;
ulog.warn() << err << endl; uwarn << " line: " << fe.line() << endl;
ulog.warn() << " file: " << fe.file() << endl; uwarn << " mesg: " << fe.errmsg() << endl;
ulog.warn() << " line: " << fe.line() << endl;
ulog.warn() << " mesg: " << fe.errmsg() << endl;
}
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
if( ulog.is_repository() ) ulogrep << "getContext: получили "<< cname << endl;
ulog.repository() << "getContext: получили "<< cname << endl;
// Если _var // Если _var
// return CosNaming::NamingContext::_duplicate(ctx); // return CosNaming::NamingContext::_duplicate(ctx);
...@@ -160,8 +146,7 @@ namespace ORepHelpers ...@@ -160,8 +146,7 @@ namespace ORepHelpers
{ {
// cout << "ORepHelpers(getRootNamingContext): nsName->" << nsName << endl; // cout << "ORepHelpers(getRootNamingContext): nsName->" << nsName << endl;
CORBA::Object_var initServ = orb->resolve_initial_references(nsName.c_str()); CORBA::Object_var initServ = orb->resolve_initial_references(nsName.c_str());
if( ulog.is_repository() ) ulogrep << "OREPHELP: get rootcontext...(nsName = "<< nsName << ")" <<endl;
ulog.repository() << "OREPHELP: get rootcontext...(nsName = "<< nsName << ")" <<endl;
rootContext = CosNaming::NamingContext::_narrow(initServ); rootContext = CosNaming::NamingContext::_narrow(initServ);
if (CORBA::is_nil(rootContext)) if (CORBA::is_nil(rootContext))
...@@ -170,15 +155,13 @@ namespace ORepHelpers ...@@ -170,15 +155,13 @@ namespace ORepHelpers
throw ORepFailed(err.c_str()); throw ORepFailed(err.c_str());
} }
if( ulog.is_repository() ) ulogrep << "OREPHELP: init NameService ok"<< endl;
ulog.repository() << "OREPHELP: init NameService ok"<< endl;
} }
catch(CORBA::ORB::InvalidName& ex) catch(CORBA::ORB::InvalidName& ex)
{ {
ostringstream err; ostringstream err;
err << "ORepHelpers(getRootNamingContext): InvalidName=" << nsName; err << "ORepHelpers(getRootNamingContext): InvalidName=" << nsName;
if( ulog.is_warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ORepFailed(err.str()); throw ORepFailed(err.str());
} }
catch (CORBA::COMM_FAILURE& ex) catch (CORBA::COMM_FAILURE& ex)
...@@ -198,8 +181,7 @@ namespace ORepHelpers ...@@ -198,8 +181,7 @@ namespace ORepHelpers
throw ORepFailed(err); throw ORepFailed(err);
} }
if( ulog.is_repository() ) ulogrep << "OREPHELP: get root context ok"<< endl;
ulog.repository() << "OREPHELP: get root context ok"<< endl;
// // Если создан как _ptr // // Если создан как _ptr
// return rootContext; // return rootContext;
...@@ -210,7 +192,7 @@ namespace ORepHelpers ...@@ -210,7 +192,7 @@ namespace ORepHelpers
// --------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------
/*! /*!
* \param fname - полное имя включающее в себя путь ("Root/Section1/name|Node:Alias") * \param fname - полное имя включающее в себя путь ("Root/Section1/name|Node:Alias")
* \param brk - используемый символ разделитель * \param brk - используемый символ разделитель
*/ */
const string getShortName( const string& fname, const std::string& brk ) const string getShortName( const string& fname, const std::string& brk )
{ {
...@@ -226,10 +208,10 @@ namespace ORepHelpers ...@@ -226,10 +208,10 @@ namespace ORepHelpers
if( pos2 == string::npos && pos1 == string::npos ) if( pos2 == string::npos && pos1 == string::npos )
return fname; return fname;
if( pos1 == string::npos ) if( pos1 == string::npos )
return fname.substr( 0, pos2 ); return fname.substr( 0, pos2 );
if( pos2 == string::npos ) if( pos2 == string::npos )
return fname.substr( pos1+1, fname.length() ); return fname.substr( pos1+1, fname.length() );
...@@ -239,7 +221,7 @@ namespace ORepHelpers ...@@ -239,7 +221,7 @@ namespace ORepHelpers
// --------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------
/*! /*!
* \param fullName - полное имя включающее в себя путь * \param fullName - полное имя включающее в себя путь
* \param brk - используемый символ разделитель * \param brk - используемый символ разделитель
* \note Функция возвращает путь без последнего символа разделителя ("Root/Section1/name" -> "Root/Section1") * \note Функция возвращает путь без последнего символа разделителя ("Root/Section1/name" -> "Root/Section1")
*/ */
const string getSectionName( const string& fullName, const std::string& brk ) const string getSectionName( const string& fullName, const std::string& brk )
...@@ -249,7 +231,7 @@ namespace ORepHelpers ...@@ -249,7 +231,7 @@ namespace ORepHelpers
return ""; return "";
return fullName.substr(0, pos); return fullName.substr(0, pos);
} }
// --------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------
/* /*
...@@ -259,7 +241,7 @@ namespace ORepHelpers ...@@ -259,7 +241,7 @@ namespace ORepHelpers
char checkBadSymbols(const string& str) char checkBadSymbols(const string& str)
{ {
using namespace UniSetTypes; using namespace UniSetTypes;
for ( unsigned int i=0;i<str.length();i++) for ( unsigned int i=0;i<str.length();i++)
{ {
for(unsigned int k=0; k<sizeof(BadSymbols); k++) for(unsigned int k=0; k<sizeof(BadSymbols); k++)
...@@ -269,7 +251,7 @@ namespace ORepHelpers ...@@ -269,7 +251,7 @@ namespace ORepHelpers
} }
} }
return 0; return 0;
} }
// --------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------
string BadSymbolsToStr() string BadSymbolsToStr()
......
...@@ -55,7 +55,7 @@ ObjectId ObjectIndex_XML::getIdByName( const string& name ) ...@@ -55,7 +55,7 @@ ObjectId ObjectIndex_XML::getIdByName( const string& name )
MapObjectKey::iterator it = mok.find(name); MapObjectKey::iterator it = mok.find(name);
if( it != mok.end() ) if( it != mok.end() )
return it->second; return it->second;
return DefaultObjectId; return DefaultObjectId;
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
...@@ -66,7 +66,7 @@ string ObjectIndex_XML::getMapName( const ObjectId id ) ...@@ -66,7 +66,7 @@ string ObjectIndex_XML::getMapName( const ObjectId id )
return ""; return "";
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
string ObjectIndex_XML::getTextName( const ObjectId id ) string ObjectIndex_XML::getTextName( const ObjectId id )
{ {
if( (unsigned)id<omap.size() && (unsigned)id>=0 && (unsigned)id<omap.size() ) if( (unsigned)id<omap.size() && (unsigned)id>=0 && (unsigned)id<omap.size() )
...@@ -88,9 +88,9 @@ std::ostream& ObjectIndex_XML::printMap( std::ostream& os ) ...@@ -88,9 +88,9 @@ std::ostream& ObjectIndex_XML::printMap( std::ostream& os )
if( it->repName == NULL ) if( it->repName == NULL )
continue; continue;
os << setw(5) << it->id << " " os << setw(5) << it->id << " "
// << setw(45) << ORepHelpers::getShortName(it->repName,'/') // << setw(45) << ORepHelpers::getShortName(it->repName,'/')
<< setw(45) << it->repName << setw(45) << it->repName
<< " " << it->textName << endl; << " " << it->textName << endl;
} }
...@@ -107,8 +107,8 @@ void ObjectIndex_XML::build(UniXML& xml) ...@@ -107,8 +107,8 @@ void ObjectIndex_XML::build(UniXML& xml)
ind = read_section(xml,"controllers",ind); ind = read_section(xml,"controllers",ind);
ind = read_section(xml,"services",ind); ind = read_section(xml,"services",ind);
ind = read_nodes(xml,"nodes",ind); ind = read_nodes(xml,"nodes",ind);
// //
omap.resize(ind); omap.resize(ind);
// omap[ind].repName=NULL; // omap[ind].repName=NULL;
// omap[ind].textName=NULL; // omap[ind].textName=NULL;
...@@ -119,13 +119,8 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -119,13 +119,8 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{ {
if( (unsigned)ind >= omap.size() ) if( (unsigned)ind >= omap.size() )
{ {
if( ulog.is_info() ) uwarn << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size()
{ << "... Делаем resize + 100" << endl;
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
}
omap.resize(omap.size()+100); omap.resize(omap.size()+100);
} }
...@@ -135,7 +130,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -135,7 +130,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build):: не нашли параметр RootSection в конф. файле "; msg << "(ObjectIndex_XML::build):: не нашли параметр RootSection в конф. файле ";
ulog.crit() << msg.str() << endl; ucrit << msg.str() << endl;
throw SystemError(msg.str()); throw SystemError(msg.str());
} }
...@@ -144,6 +139,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -144,6 +139,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build): не нашли корневого раздела " << sec; msg << "(ObjectIndex_XML::build): не нашли корневого раздела " << sec;
ucrit << msg.str() << endl;
throw NameNotFound(msg.str()); throw NameNotFound(msg.str());
} }
...@@ -153,6 +149,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -153,6 +149,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build): не удалось перейти к списку элементов " << sec; msg << "(ObjectIndex_XML::build): не удалось перейти к списку элементов " << sec;
ucrit << msg.str() << endl;
throw NameNotFound(msg.str()); throw NameNotFound(msg.str());
} }
...@@ -164,6 +161,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -164,6 +161,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build): у секции " << sec << " не указано свойство 'name' "; msg << "(ObjectIndex_XML::build): у секции " << sec << " не указано свойство 'name' ";
ucrit << msg.str() << endl;
throw NameNotFound(msg.str()); throw NameNotFound(msg.str());
} }
...@@ -199,14 +197,9 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, ...@@ -199,14 +197,9 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
if( (unsigned)ind >= omap.size() ) if( (unsigned)ind >= omap.size() )
{ {
if( ulog.is_info() ) uinfo << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size()
{ << "... Делаем resize + 100" << endl;
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
if( ulog.is_info() )
ulog.info() << msg.str() << "... Делаем resize + 100\n";
}
omap.resize(omap.size()+100); omap.resize(omap.size()+100);
} }
} }
...@@ -220,8 +213,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u ...@@ -220,8 +213,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size(); msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str()); uinfo << msg.str() << "... Делаем resize + 100\n";
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
omap.resize(omap.size()+100); omap.resize(omap.size()+100);
} }
...@@ -251,7 +243,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u ...@@ -251,7 +243,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
string alias(xml.getProp(it,"alias")); string alias(xml.getProp(it,"alias"));
if( alias.empty() ) if( alias.empty() )
alias = name; alias = name;
string nodename = mkFullNodeName(name,alias); string nodename = mkFullNodeName(name,alias);
delete[] omap[ind].repName; delete[] omap[ind].repName;
omap[ind].repName = new char[nodename.size()+1]; omap[ind].repName = new char[nodename.size()+1];
...@@ -267,7 +259,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u ...@@ -267,7 +259,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
strcpy( omap[ind].textName, textname.c_str() ); strcpy( omap[ind].textName, textname.c_str() );
omap[ind].data = (void*)(xmlNode*)(it); omap[ind].data = (void*)(xmlNode*)(it);
// //
mok[omap[ind].repName] = ind; mok[omap[ind].repName] = ind;
// cout << "read: " << "(" << ind << ") " << omap[ind].repName << "\t" << omap[ind].textName << endl; // cout << "read: " << "(" << ind << ") " << omap[ind].repName << "\t" << omap[ind].textName << endl;
...@@ -276,8 +268,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u ...@@ -276,8 +268,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size(); msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str()); uwarn << msg.str() << "... Делаем resize + 100" << endl;
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
omap.resize(omap.size()+100); omap.resize(omap.size()+100);
} }
} }
......
...@@ -93,7 +93,7 @@ void ObjectIndex_idXML::read_section( UniXML& xml, const std::string& sec ) ...@@ -93,7 +93,7 @@ void ObjectIndex_idXML::read_section( UniXML& xml, const std::string& sec )
{ {
ostringstream msg; ostringstream msg;
msg << "(ObjectIndex_idXML::build):: не нашли параметр RootSection в конф. файле "; msg << "(ObjectIndex_idXML::build):: не нашли параметр RootSection в конф. файле ";
ulog.crit() << msg.str() << endl; ucrit << msg.str() << endl;
throw SystemError(msg.str()); throw SystemError(msg.str());
} }
......
...@@ -37,7 +37,7 @@ using namespace std; ...@@ -37,7 +37,7 @@ using namespace std;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/* /*
ObjectRepository::ObjectRepository(int* argc, char* **argv, const char* NSName): ObjectRepository::ObjectRepository(int* argc, char* **argv, const char* NSName):
argc(*argc), argc(*argc),
argv(*argv), argv(*argv),
nsName(NSName) nsName(NSName)
{ {
...@@ -81,7 +81,7 @@ bool ObjectRepository::init() ...@@ -81,7 +81,7 @@ bool ObjectRepository::init()
localctx=0; localctx=0;
return false; return false;
} }
return true; return true;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -98,8 +98,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -98,8 +98,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
{ {
ostringstream err; ostringstream err;
if( ulog.is_info() ) uinfo << "ObjectRepository(registration): регистрируем " << name << endl;
ulog.info() << "ObjectRepository(registration): регистрируем " << name << endl;
// Проверка корректности имени // Проверка корректности имени
char bad = ORepHelpers::checkBadSymbols(name); char bad = ORepHelpers::checkBadSymbols(name);
...@@ -110,7 +109,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -110,7 +109,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
err << " содержит недопустимый символ " << bad; err << " содержит недопустимый символ " << bad;
throw ( InvalidObjectName(err.str().c_str()) ); throw ( InvalidObjectName(err.str().c_str()) );
} }
CosNaming::Name_var oName = omniURI::stringToName(name.c_str()); CosNaming::Name_var oName = omniURI::stringToName(name.c_str());
CosNaming::NamingContext_var ctx; CosNaming::NamingContext_var ctx;
for( int i=0; i<2; i++ ) for( int i=0; i<2; i++ )
...@@ -118,17 +117,15 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -118,17 +117,15 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
try try
{ {
// Добавляем в репозиторий новую ссылку (заменяя если есть старую) // Добавляем в репозиторий новую ссылку (заменяя если есть старую)
CORBA::ORB_var orb = uconf->getORB(); CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName); ctx = ORepHelpers::getContext(orb, section, nsName);
ctx->bind(oName, oRef); ctx->bind(oName, oRef);
return; return;
} }
catch(const CosNaming::NamingContext::AlreadyBound &nf) catch(const CosNaming::NamingContext::AlreadyBound &nf)
{ {
if( ulog.is_warn() ) uwarn << "(registration): "<< name <<" уже зарегестрирован в "<< section << "!!!" << endl;
ulog.warn() << "(registration): "<< name <<" уже зарегестрирован в "<< section << "!!!" << endl;
if( !force ) if( !force )
throw ObjectNameAlready(); throw ObjectNameAlready();
...@@ -139,7 +136,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -139,7 +136,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
} }
catch(ORepFailed) catch(ORepFailed)
{ {
string er("ObjectRepository(registrartion): (getContext) не смог зарегистрировать "+name); string er("ObjectRepository(registrartion): (getContext) не смог зарегистрировать "+name);
throw ORepFailed(er.c_str()); throw ORepFailed(er.c_str());
} }
catch(CosNaming::NamingContext::NotFound) catch(CosNaming::NamingContext::NotFound)
...@@ -157,16 +154,11 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -157,16 +154,11 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( ulog.is_warn() ) uwarn << "ObjectRepository(registrartion): поймали CORBA::SystemException: "
ulog.warn() << "ObjectRepository(registrartion): поймали CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
err << "ObjectRepository(registrartion): поймали CORBA::SystemException: " << ex.NP_minorString(); err << "ObjectRepository(registrartion): поймали CORBA::SystemException: " << ex.NP_minorString();
} }
// catch(...)
// {
// ulog.warn() << "поймали что-то неизвестное..."<< endl;
// }
} }
throw ORepFailed(err.str().c_str()); throw ORepFailed(err.str().c_str());
...@@ -178,7 +170,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co ...@@ -178,7 +170,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
* \note При этом надо иметь ввиду, что задается полное имя объекта. * \note При этом надо иметь ввиду, что задается полное имя объекта.
* Пример: registration("Root/SensorSection/sens1", oRef); * Пример: registration("Root/SensorSection/sens1", oRef);
* \param fullName - полное имя регистрируемого объекта (т.е. включающее в себя имя секции) * \param fullName - полное имя регистрируемого объекта (т.е. включающее в себя имя секции)
* \param oRef - ссылка на объект * \param oRef - ссылка на объект
* \exception ORepFailed - генерируется если произошла ошибка при регистрации * \exception ORepFailed - генерируется если произошла ошибка при регистрации
* \sa registration(const string name, const ObjectPtr oRef, const string section) * \sa registration(const string name, const ObjectPtr oRef, const string section)
*/ */
...@@ -203,25 +195,18 @@ void ObjectRepository::registration( const std::string& fullName, const UniSetTy ...@@ -203,25 +195,18 @@ void ObjectRepository::registration( const std::string& fullName, const UniSetTy
void ObjectRepository::unregistration(const string& name, const string& section) void ObjectRepository::unregistration(const string& name, const string& section)
throw(ORepFailed, NameNotFound) throw(ORepFailed, NameNotFound)
{ {
// ulog.info() << "OREP: unregistration "<< name << " из "<< section << endl;
ostringstream err; ostringstream err;
CosNaming::Name_var oName = omniURI::stringToName(name.c_str()); CosNaming::Name_var oName = omniURI::stringToName(name.c_str());
// ulog.info() << "OREP: string to name ok"<< endl;
CosNaming::NamingContext_var ctx; CosNaming::NamingContext_var ctx;
CORBA::ORB_var orb = uconf->getORB(); CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName); ctx = ORepHelpers::getContext(orb, section, nsName);
// ulog.info() << "OREP: get context " << section <<" ok"<< endl;
try try
{ {
// Удаляем запись об объекте // Удаляем запись об объекте
ctx->unbind(oName); ctx->unbind(oName);
// ulog.info() << "OREP: ok" << endl;
return; return;
} }
catch(const CosNaming::NamingContext::NotFound &nf) catch(const CosNaming::NamingContext::NotFound &nf)
{ {
err << "ObjectRepository(unregistrartion): не найден объект ->" << name; err << "ObjectRepository(unregistrartion): не найден объект ->" << name;
...@@ -269,7 +254,7 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName ) ...@@ -269,7 +254,7 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName )
CosNaming::Name_var nc = omniURI::stringToName(name.c_str()); CosNaming::Name_var nc = omniURI::stringToName(name.c_str());
oRef=localctx->resolve(nc); oRef=localctx->resolve(nc);
if ( !CORBA::is_nil(oRef) ) if ( !CORBA::is_nil(oRef) )
return oRef._retn(); return oRef._retn();
err << "ObjectRepository(resolve): не смог получить ссылку на объект " << name.c_str(); err << "ObjectRepository(resolve): не смог получить ссылку на объект " << name.c_str();
} }
...@@ -297,8 +282,8 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName ) ...@@ -297,8 +282,8 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName )
} }
if(err.str().empty()) if(err.str().empty())
err << "ObjectRepository(resolve): ??? для " << name; err << "ObjectRepository(resolve): ??? для " << name;
throw ORepFailed(err.str().c_str()); throw ORepFailed(err.str().c_str());
} }
...@@ -344,23 +329,21 @@ bool ObjectRepository::listSections(const string& in_section, ListObjectName *ls ...@@ -344,23 +329,21 @@ bool ObjectRepository::listSections(const string& in_section, ListObjectName *ls
bool ObjectRepository::list(const string& section, ListObjectName *ls, unsigned int how_many, ObjectType type) bool ObjectRepository::list(const string& section, ListObjectName *ls, unsigned int how_many, ObjectType type)
{ {
// Возвращает false если вынут не весь список... // Возвращает false если вынут не весь список...
// ulog.info() << "получаем список из "<< section << endl;
CosNaming::NamingContext_var ctx; CosNaming::NamingContext_var ctx;
try try
{ {
CORBA::ORB_var orb = uconf->getORB(); CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName); ctx = ORepHelpers::getContext(orb, section, nsName);
} }
catch(ORepFailed) catch(ORepFailed)
{ {
ulog.warn() << "ORepository(list): не смог получить ссылку на "<< section << endl; uwarn << "ORepository(list): не смог получить ссылку на "<< section << endl;
throw; throw;
// return false;
} }
if( CORBA::is_nil(ctx) ) if( CORBA::is_nil(ctx) )
{ {
ulog.warn() << "ORepository(list): не смог получить ссылку на "<< section << endl; uwarn << "ORepository(list): не смог получить ссылку на "<< section << endl;
throw ORepFailed(); throw ORepFailed();
} }
...@@ -383,7 +366,7 @@ bool ObjectRepository::list(const string& section, ListObjectName *ls, unsigned ...@@ -383,7 +366,7 @@ bool ObjectRepository::list(const string& section, ListObjectName *ls, unsigned
for( unsigned int i=0; i<how_many;i++) for( unsigned int i=0; i<how_many;i++)
{ {
switch( type ) switch( type )
{ {
case ObjectRef: case ObjectRef:
{ {
if(bl[i].binding_type == CosNaming::nobject) if(bl[i].binding_type == CosNaming::nobject)
...@@ -413,7 +396,7 @@ bool ObjectRepository::isExist( const string& fullName ) ...@@ -413,7 +396,7 @@ bool ObjectRepository::isExist( const string& fullName )
{ {
try try
{ {
CORBA::Object_var oRef = resolve(fullName, nsName); CORBA::Object_var oRef = resolve(fullName, nsName);
return isExist(oRef); return isExist(oRef);
} }
catch(...){} catch(...){}
...@@ -435,10 +418,10 @@ bool ObjectRepository::isExist( ObjectPtr oref ) ...@@ -435,10 +418,10 @@ bool ObjectRepository::isExist( ObjectPtr oref )
catch(CORBA::Exception&){} catch(CORBA::Exception&){}
catch(omniORB::fatalException& fe) catch(omniORB::fatalException& fe)
{ {
ulog.warn() << "ObjectRepository(isExist): "<< "поймали omniORB::fatalException:" << endl; uwarn << "ObjectRepository(isExist): "<< "поймали omniORB::fatalException:" << endl;
ulog.warn() << " file: " << fe.file() << endl; uwarn << " file: " << fe.file() << endl;
ulog.warn() << " line: " << fe.line() << endl; uwarn << " line: " << fe.line() << endl;
ulog.warn() << " mesg: " << fe.errmsg() << endl; uwarn << " mesg: " << fe.errmsg() << endl;
} }
catch(...){} catch(...){}
......
...@@ -21,13 +21,13 @@ ...@@ -21,13 +21,13 @@
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <iomanip>
#include "ProxyManager.h" #include "ProxyManager.h"
#include "PassiveObject.h" #include "PassiveObject.h"
#include "ORepHelpers.h" #include "ORepHelpers.h"
#include "Configuration.h" #include "Configuration.h"
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
using namespace std;
using namespace UniSetTypes; using namespace UniSetTypes;
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
PassiveObject::PassiveObject(): PassiveObject::PassiveObject():
...@@ -117,14 +117,12 @@ void PassiveObject::processingMessage( UniSetTypes::VoidMessage* msg ) ...@@ -117,14 +117,12 @@ void PassiveObject::processingMessage( UniSetTypes::VoidMessage* msg )
} }
default: default:
//ulog.warn() << myname << ": неизвестное сообщение " << msg->type << endl;
break; break;
} }
} }
catch(Exception& ex) catch( Exception& ex )
{ {
// ulog.warn() uwarn << myname << "(processingMessage): " << ex << endl;
// cerr << myname << "(processingMessage): " << ex << endl;
} }
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
......
...@@ -48,7 +48,7 @@ void ProxyManager::attachObject( PassiveObject* po, UniSetTypes::ObjectId id ) ...@@ -48,7 +48,7 @@ void ProxyManager::attachObject( PassiveObject* po, UniSetTypes::ObjectId id )
{ {
if( id == DefaultObjectId ) if( id == DefaultObjectId )
{ {
ulog.warn() << myname << "(attachObject): попытка добавить объект с id=" uwarn << myname << "(attachObject): попытка добавить объект с id="
<< DefaultObjectId << " PassiveObject=" << po->getName() << endl; << DefaultObjectId << " PassiveObject=" << po->getName() << endl;
return; return;
...@@ -78,39 +78,34 @@ bool ProxyManager::activateObject() ...@@ -78,39 +78,34 @@ bool ProxyManager::activateObject()
try try
{ {
for( int i=0; i<2; i++ ) for( int i=0; i<2; i++ )
{ {
try try
{ {
if( ulog.is_info() ) uinfo << myname << "(registered): попытка "
{ << i+1 << " регистриую (id=" << it->first << ") "
ulog.info() << myname << "(registered): попытка " << " (pname=" << it->second->getName() << ") "
<< i+1 << " регистриую (id=" << it->first << ") " << conf->oind->getNameById(it->first) << endl;
<< " (pname=" << it->second->getName() << ") "
<< conf->oind->getNameById(it->first) << endl;
}
ui.registered(it->first, getRef(),true); ui.registered(it->first, getRef(),true);
break; break;
} }
catch( UniSetTypes::ObjectNameAlready& ex ) catch( UniSetTypes::ObjectNameAlready& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(registered): СПЕРВА РАЗРЕГИСТРИРУЮ (ObjectNameAlready)" << endl;
ulog.crit() << myname << "(registered): СПЕРВА РАЗРЕГИСТРИРУЮ (ObjectNameAlready)" << endl;
try try
{ {
ui.unregister(it->first); ui.unregister(it->first);
} }
catch(Exception & ex) catch(Exception & ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(unregistered): " << ex << endl;
ulog.crit() << myname << "(unregistered): " << ex << endl;
} }
} }
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(activate): " << ex << endl;
ulog.crit() << myname << "(activate): " << ex << endl;
} }
} }
...@@ -127,8 +122,7 @@ bool ProxyManager::disactivateObject() ...@@ -127,8 +122,7 @@ bool ProxyManager::disactivateObject()
} }
catch(Exception& ex ) catch(Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(activate): " << ex << endl;
ulog.crit() << myname << "(activate): " << ex << endl;
} }
} }
...@@ -150,19 +144,16 @@ void ProxyManager::processingMessage( UniSetTypes::VoidMessage *msg ) ...@@ -150,19 +144,16 @@ void ProxyManager::processingMessage( UniSetTypes::VoidMessage *msg )
PObjectMap::iterator it = omap.find(msg->consumer); PObjectMap::iterator it = omap.find(msg->consumer);
if( it!=omap.end() ) if( it!=omap.end() )
it->second->processingMessage(msg); it->second->processingMessage(msg);
else if( ulog.is_crit() ) else
{ ucrit << myname << "(processingMessage): не найден объект "
ulog.crit() << myname << "(processingMessage): не найден объект "
<< " consumer= " << msg->consumer << endl; << " consumer= " << msg->consumer << endl;
}
} }
break; break;
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(processingMessage): " << ex << endl;
ulog.crit() << myname << "(processingMessage): " << ex << endl;
} }
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -176,8 +167,7 @@ void ProxyManager::allMessage( UniSetTypes::VoidMessage* msg ) ...@@ -176,8 +167,7 @@ void ProxyManager::allMessage( UniSetTypes::VoidMessage* msg )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(allMessage): " << ex << endl;
ulog.crit() << myname << "(allMessage): " << ex << endl;
} }
} }
} }
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/types.h> #include <sys/types.h>
...@@ -43,7 +43,7 @@ using namespace std; ...@@ -43,7 +43,7 @@ using namespace std;
Завершение работы организовано следующим образом. Завершение работы организовано следующим образом.
Имеется глобальный указатель gActivator (т.к. активатор в системе должен быть только один). Имеется глобальный указатель gActivator (т.к. активатор в системе должен быть только один).
Он заказывает на себя все сигналы связанные с завершением работы. Он заказывает на себя все сигналы связанные с завершением работы.
В качестве обработчика сигналов регистрируется UniSetActivator::terminated( int signo ). В качестве обработчика сигналов регистрируется UniSetActivator::terminated( int signo ).
В этом обработчике происходит вызов UniSetActivator::oaDestroy(int signo) для фактического В этом обработчике происходит вызов UniSetActivator::oaDestroy(int signo) для фактического
завершения работы и заказывается сигнал SIG_ALRM на время TERMINATE_TIMEOUT, завершения работы и заказывается сигнал SIG_ALRM на время TERMINATE_TIMEOUT,
...@@ -105,7 +105,7 @@ void UniSetActivator::init() ...@@ -105,7 +105,7 @@ void UniSetActivator::init()
poa = root_poa->create_POA("my poa", pman, pl); poa = root_poa->create_POA("my poa", pman, pl);
if( CORBA::is_nil(poa) ) if( CORBA::is_nil(poa) )
ulog.crit() << myname << "(init): init poa failed!!!" << endl; ucrit << myname << "(init): init poa failed!!!" << endl;
gActivator=this; gActivator=this;
atexit( UniSetActivator::normalexit ); atexit( UniSetActivator::normalexit );
...@@ -118,14 +118,14 @@ UniSetActivator::~UniSetActivator() ...@@ -118,14 +118,14 @@ UniSetActivator::~UniSetActivator()
{ {
if(!procterm ) if(!procterm )
{ {
ulog.system() << myname << "(destructor): ..."<< endl << flush; ulogsys << myname << "(destructor): ..."<< endl << flush;
if( !omDestroy ) if( !omDestroy )
oaDestroy(); oaDestroy();
procterm = 1; procterm = 1;
doneterm = 1; doneterm = 1;
set_signals(false); set_signals(false);
gActivator=0; gActivator=0;
} }
if( orbthr ) if( orbthr )
...@@ -139,31 +139,30 @@ void UniSetActivator::oaDestroy(int signo) ...@@ -139,31 +139,30 @@ void UniSetActivator::oaDestroy(int signo)
if( !omDestroy ) if( !omDestroy )
{ {
omDestroy = true; omDestroy = true;
ulog.system() << myname << "(oaDestroy): begin..."<< endl; ulogsys << myname << "(oaDestroy): begin..."<< endl;
ulog.system() << myname << "(oaDestroy): terminate... " << endl; ulogsys << myname << "(oaDestroy): terminate... " << endl;
term(signo); term(signo);
ulog.system() << myname << "(oaDestroy): terminate ok. " << endl; ulogsys << myname << "(oaDestroy): terminate ok. " << endl;
try try
{ {
stop(); stop();
} }
catch(...){} catch(...){}
ulog.system() << myname << "(oaDestroy): pman deactivate... " << endl; ulogsys << myname << "(oaDestroy): pman deactivate... " << endl;
pman->deactivate(false,true); pman->deactivate(false,true);
ulog.system() << myname << "(oaDestroy): pman deactivate ok. " << endl; ulogsys << myname << "(oaDestroy): pman deactivate ok. " << endl;
ulog.system() << myname << "(oaDestroy): orb destroy... " << endl; ulogsys << myname << "(oaDestroy): orb destroy... " << endl;
try try
{ {
orb->destroy(); orb->destroy();
} }
catch(...){} catch(...){}
if( ulog.is_system() ) ulogsys << myname << "(oaDestroy): orb destroy ok."<< endl;
ulog.system() << myname << "(oaDestroy): orb destroy ok."<< endl;
if( orbthr ) if( orbthr )
{ {
...@@ -176,7 +175,7 @@ void UniSetActivator::oaDestroy(int signo) ...@@ -176,7 +175,7 @@ void UniSetActivator::oaDestroy(int signo)
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Если thread=true то функция создает отдельный поток для обработки приходящих сообщений. * Если thread=true то функция создает отдельный поток для обработки приходящих сообщений.
* И передает все ресурсы этого потока orb. А также регистрирует процесс в репозитории. * И передает все ресурсы этого потока orb. А также регистрирует процесс в репозитории.
* \note Только после этого объект становится доступен другим процессам * \note Только после этого объект становится доступен другим процессам
...@@ -186,8 +185,7 @@ void UniSetActivator::oaDestroy(int signo) ...@@ -186,8 +185,7 @@ void UniSetActivator::oaDestroy(int signo)
*/ */
void UniSetActivator::run(bool thread) void UniSetActivator::run(bool thread)
{ {
if( ulog.is_system() ) ulogsys << myname << "(run): создаю менеджер "<< endl;
ulog.system() << myname << "(run): создаю менеджер "<< endl;
UniSetManager::initPOA(this); UniSetManager::initPOA(this);
...@@ -199,32 +197,30 @@ void UniSetActivator::run(bool thread) ...@@ -199,32 +197,30 @@ void UniSetActivator::run(bool thread)
getinfo(); // заполнение информации об объектах getinfo(); // заполнение информации об объектах
active=true; active=true;
ulog.system() << myname << "(run): активизируем менеджер"<<endl; ulogsys << myname << "(run): активизируем менеджер"<<endl;
pman->activate(); pman->activate();
msleep(50); msleep(50);
set_signals(true); set_signals(true);
if( thread ) if( thread )
{ {
if( ulog.is_info() ) uinfo << myname << "(run): запускаемся с созданием отдельного потока... "<< endl;
ulog.info() << myname << "(run): запускаемся с созданием отдельного потока... "<< endl;
orbthr = new ThreadCreator<UniSetActivator>(this, &UniSetActivator::work); orbthr = new ThreadCreator<UniSetActivator>(this, &UniSetActivator::work);
int ret = orbthr->start(); int ret = orbthr->start();
if( ret !=0 ) if( ret !=0 )
{ {
ulog.crit() << myname << "(run): НЕ СМОГЛИ СОЗДАТЬ ORB-поток"<<endl; ucrit << myname << "(run): НЕ СМОГЛИ СОЗДАТЬ ORB-поток"<<endl;
throw SystemError("(UniSetActivator::run): CREATE ORB THREAD FAILED"); throw SystemError("(UniSetActivator::run): CREATE ORB THREAD FAILED");
} }
} }
else else
{ {
if( ulog.is_info() ) uinfo << myname << "(run): запускаемся без создания отдельного потока... "<< endl;
ulog.info() << myname << "(run): запускаемся без создания отдельного потока... "<< endl;
work(); work();
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Функция останавливает работу orb и завершает поток. А так же удаляет ссылку из репозитория. * Функция останавливает работу orb и завершает поток. А так же удаляет ссылку из репозитория.
* \note Объект становится недоступен другим процессам * \note Объект становится недоступен другим процессам
*/ */
...@@ -235,33 +231,26 @@ void UniSetActivator::stop() ...@@ -235,33 +231,26 @@ void UniSetActivator::stop()
{ {
active=false; active=false;
if( ulog.is_system() ) ulogsys << myname << "(stop): disactivate... "<< endl;
ulog.system() << myname << "(stop): disactivate... "<< endl;
disactivate(); disactivate();
if( ulog.is_system() ) ulogsys << myname << "(stop): disactivate ok. "<<endl;
{ ulogsys << myname << "(stop): discard request..."<< endl;
ulog.system() << myname << "(stop): disactivate ok. "<<endl;
ulog.system() << myname << "(stop): discard request..."<< endl;
}
pman->discard_requests(true); pman->discard_requests(true);
if( ulog.is_system() ) ulogsys << myname << "(stop): discard request ok."<< endl;
ulog.system() << myname << "(stop): discard request ok."<< endl;
/* /*
try try
{ {
if( ulog.is_system() ) ulogsys << myname << "(stop):: shutdown orb... "<<endl;
ulog.system() << myname << "(stop):: shutdown orb... "<<endl;
orb->shutdown(false); orb->shutdown(false);
} }
catch(...){} catch(...){}
if( ulog.is_system() ) ulogsys << myname << "(stop): shutdown ok."<< endl;
ulog.system() << myname << "(stop): shutdown ok."<< endl;
*/ */
} }
} }
...@@ -270,8 +259,7 @@ void UniSetActivator::stop() ...@@ -270,8 +259,7 @@ void UniSetActivator::stop()
void UniSetActivator::work() void UniSetActivator::work()
{ {
if( ulog.is_system() ) ulogsys << myname << "(work): запускаем orb на обработку запросов..."<< endl;
ulog.system() << myname << "(work): запускаем orb на обработку запросов..."<< endl;
try try
{ {
if(orbthr) if(orbthr)
...@@ -283,41 +271,34 @@ void UniSetActivator::work() ...@@ -283,41 +271,34 @@ void UniSetActivator::work()
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(work): поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
ulog.crit() << myname << "(work): поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
} }
catch(CORBA::Exception& ex) catch(CORBA::Exception& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(work): поймали CORBA::Exception." << endl;
ulog.crit() << myname << "(work): поймали CORBA::Exception." << endl;
} }
catch(omniORB::fatalException& fe) catch(omniORB::fatalException& fe)
{ {
if( ulog.is_crit() ) ucrit << myname << "(work): : поймали omniORB::fatalException:" << endl;
{ ucrit << myname << "(work): file: " << fe.file() << endl;
ulog.crit() << myname << "(work): : поймали omniORB::fatalException:" << endl; ucrit << myname << "(work): line: " << fe.line() << endl;
ulog.crit() << myname << "(work): file: " << fe.file() << endl; ucrit << myname << "(work): mesg: " << fe.errmsg() << endl;
ulog.crit() << myname << "(work): line: " << fe.line() << endl;
ulog.crit() << myname << "(work): mesg: " << fe.errmsg() << endl;
}
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit << myname << "(work): catch ..." << endl;
ulog.crit() << myname << "(work): catch ..." << endl;
} }
if( ulog.is_system() ) ulogsys << myname << "(work): orb стоп!!!"<< endl;
ulog.system() << myname << "(work): orb стоп!!!"<< endl;
/* /*
ulog.system() << myname << "(oaDestroy): orb destroy... " << endl; ulogsys << myname << "(oaDestroy): orb destroy... " << endl;
try try
{ {
orb->destroy(); orb->destroy();
} }
catch(...){} catch(...){}
ulog.system() << myname << "(oaDestroy): orb destroy ok."<< endl; ulogsys << myname << "(oaDestroy): orb destroy ok."<< endl;
*/ */
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -357,12 +338,11 @@ void UniSetActivator::processingMessage( UniSetTypes::VoidMessage *msg ) ...@@ -357,12 +338,11 @@ void UniSetActivator::processingMessage( UniSetTypes::VoidMessage *msg )
default: default:
break; break;
} }
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(processingMessage): " << ex << endl;
ulog.crit() << myname << "(processingMessage): " << ex << endl;
} }
} }
...@@ -373,8 +353,7 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -373,8 +353,7 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm )
{ {
case SystemMessage::LogRotate: case SystemMessage::LogRotate:
{ {
if( ulog.is_system() ) ulogsys << myname << "(sysCommand): logRotate" << endl;
ulog.system() << myname << "(sysCommand): logRotate" << endl;
// переоткрываем логи // переоткрываем логи
string fname = ulog.getLogFile(); string fname = ulog.getLogFile();
if( !fname.empty() ) if( !fname.empty() )
...@@ -391,20 +370,20 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm ) ...@@ -391,20 +370,20 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm )
/* /*
void UniSetActivator::sig_child(int signo) void UniSetActivator::sig_child(int signo)
{ {
ulog.system() << gActivator->getName() << "(sig_child): дочерний процесс закончил работу...(sig=" << signo << ")" << endl; ulogsys << gActivator->getName() << "(sig_child): дочерний процесс закончил работу...(sig=" << signo << ")" << endl;
while( waitpid(-1, 0, WNOHANG) > 0); while( waitpid(-1, 0, WNOHANG) > 0);
} }
*/ */
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetActivator::set_signals(bool ask) void UniSetActivator::set_signals(bool ask)
{ {
struct sigaction act, oact; struct sigaction act, oact;
sigemptyset(&act.sa_mask); sigemptyset(&act.sa_mask);
sigemptyset(&oact.sa_mask); sigemptyset(&oact.sa_mask);
// добавляем сигналы, которые будут игнорироваться // добавляем сигналы, которые будут игнорироваться
// при обработке сигнала // при обработке сигнала
sigaddset(&act.sa_mask, SIGINT); sigaddset(&act.sa_mask, SIGINT);
sigaddset(&act.sa_mask, SIGTERM); sigaddset(&act.sa_mask, SIGTERM);
sigaddset(&act.sa_mask, SIGABRT ); sigaddset(&act.sa_mask, SIGABRT );
...@@ -420,7 +399,7 @@ void UniSetActivator::set_signals(bool ask) ...@@ -420,7 +399,7 @@ void UniSetActivator::set_signals(bool ask)
act.sa_handler = terminated; act.sa_handler = terminated;
else else
act.sa_handler = SIG_DFL; act.sa_handler = SIG_DFL;
sigaction(SIGINT, &act, &oact); sigaction(SIGINT, &act, &oact);
sigaction(SIGTERM, &act, &oact); sigaction(SIGTERM, &act, &oact);
sigaction(SIGABRT, &act, &oact); sigaction(SIGABRT, &act, &oact);
...@@ -434,8 +413,7 @@ void UniSetActivator::finishterm( int signo ) ...@@ -434,8 +413,7 @@ void UniSetActivator::finishterm( int signo )
{ {
if( !doneterm ) if( !doneterm )
{ {
if( ulog.is_system() && gActivator ) ulogsys << ( gActivator ? gActivator->getName() : "" )
ulog.system() << gActivator->getName()
<< "(finishterm): прерываем процесс завершения...!" << endl<< flush; << "(finishterm): прерываем процесс завершения...!" << endl<< flush;
if( gActivator ) if( gActivator )
...@@ -461,12 +439,11 @@ void UniSetActivator::terminated( int signo ) ...@@ -461,12 +439,11 @@ void UniSetActivator::terminated( int signo )
procterm = 1; procterm = 1;
SIGNO = signo; SIGNO = signo;
MYPID = getpid(); MYPID = getpid();
if( ulog.is_system() && gActivator ) ulogsys << ( gActivator ? gActivator->getName() : "" ) << "(terminated): catch SIGNO="<< signo << "("
{ << strsignal(signo) <<")"<< endl << flush
ulog.system() << gActivator->getName() << "(terminated): catch SIGNO="<< signo << "("<< strsignal(signo) <<")"<< endl << flush; << ( gActivator ? gActivator->getName() : "" ) << "(terminated): устанавливаем timer завершения на "
ulog.system() << gActivator->getName() << "(terminated): устанавливаем timer завершения на " << TERMINATE_TIMEOUT << " сек " << endl << flush;
<< TERMINATE_TIMEOUT << " сек " << endl << flush;
}
sighold(SIGALRM); sighold(SIGALRM);
sigset(SIGALRM, UniSetActivator::finishterm); sigset(SIGALRM, UniSetActivator::finishterm);
alarm(TERMINATE_TIMEOUT); alarm(TERMINATE_TIMEOUT);
...@@ -475,8 +452,9 @@ void UniSetActivator::terminated( int signo ) ...@@ -475,8 +452,9 @@ void UniSetActivator::terminated( int signo )
gActivator->oaDestroy(SIGNO); // gActivator->term(SIGNO); gActivator->oaDestroy(SIGNO); // gActivator->term(SIGNO);
doneterm = 1; doneterm = 1;
if( ulog.is_system() )
ulog.system() << gActivator->getName() << "(terminated): завершаемся..."<< endl<< flush; ulogsys << ( gActivator ? gActivator->getName() : "" ) << "(terminated): завершаемся..."<< endl<< flush;
if( gActivator ) if( gActivator )
UniSetActivator::set_signals(false); UniSetActivator::set_signals(false);
...@@ -489,21 +467,20 @@ void UniSetActivator::terminated( int signo ) ...@@ -489,21 +467,20 @@ void UniSetActivator::terminated( int signo )
void UniSetActivator::normalexit() void UniSetActivator::normalexit()
{ {
if( gActivator && ulog.is_system() ) if( gActivator )
ulog.system() << gActivator->getName() << "(default exit): good bye."<< endl << flush; ulogsys << gActivator->getName() << "(default exit): good bye."<< endl << flush;
} }
void UniSetActivator::normalterminate() void UniSetActivator::normalterminate()
{ {
if( gActivator ) if( gActivator )
ulog.crit() << gActivator->getName() << "(default exception terminate): Никто не выловил исключение!!! Good bye."<< endl<< flush; ucrit << gActivator->getName() << "(default exception terminate): Никто не выловил исключение!!! Good bye."<< endl<< flush;
// abort(); // abort();
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetActivator::term( int signo ) void UniSetActivator::term( int signo )
{ {
if( ulog.is_system() ) ulogsys << myname << "(term): TERM" << endl;
ulog.system() << myname << "(term): TERM" << endl;
if( doneterm ) if( doneterm )
return; return;
...@@ -513,21 +490,18 @@ void UniSetActivator::term( int signo ) ...@@ -513,21 +490,18 @@ void UniSetActivator::term( int signo )
try try
{ {
if( ulog.is_system() ) ulogsys << myname << "(term): вызываем sigterm()" << endl;
ulog.system() << myname << "(term): вызываем sigterm()" << endl;
sigterm(signo); sigterm(signo);
if( ulog.is_system() ) ulogsys << myname << "(term): sigterm() ok." << endl;
ulog.system() << myname << "(term): sigterm() ok." << endl;
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.crit() << myname << "(term): " << ex << endl; ucrit << myname << "(term): " << ex << endl;
} }
catch(...){} catch(...){}
if( ulog.is_system() ) ulogsys << myname << "(term): END TERM" << endl;
ulog.system() << myname << "(term): END TERM" << endl;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetActivator::waitDestroy() void UniSetActivator::waitDestroy()
...@@ -536,10 +510,10 @@ void UniSetActivator::waitDestroy() ...@@ -536,10 +510,10 @@ void UniSetActivator::waitDestroy()
{ {
if( doneterm || !gActivator ) if( doneterm || !gActivator )
break; break;
msleep(50); msleep(50);
} }
gActivator = 0; gActivator = 0;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <cstdlib> #include <cstdlib>
#include <sstream> #include <sstream>
#include <list> #include <list>
...@@ -41,7 +41,7 @@ using namespace std; ...@@ -41,7 +41,7 @@ using namespace std;
// объект-функция для посылки сообщения менеджеру // объект-функция для посылки сообщения менеджеру
class MPush: public unary_function<UniSetManager*, bool> class MPush: public unary_function<UniSetManager*, bool>
{ {
public: public:
MPush(const UniSetTypes::TransportMessage& msg):msg(msg){} MPush(const UniSetTypes::TransportMessage& msg):msg(msg){}
bool operator()(UniSetManager* m) const bool operator()(UniSetManager* m) const
{ {
...@@ -54,7 +54,7 @@ class MPush: public unary_function<UniSetManager*, bool> ...@@ -54,7 +54,7 @@ class MPush: public unary_function<UniSetManager*, bool>
catch(...){} catch(...){}
return false; return false;
} }
private: private:
const UniSetTypes::TransportMessage& msg; const UniSetTypes::TransportMessage& msg;
}; };
...@@ -62,7 +62,7 @@ class MPush: public unary_function<UniSetManager*, bool> ...@@ -62,7 +62,7 @@ class MPush: public unary_function<UniSetManager*, bool>
// объект-функция для посылки сообщения объекту // объект-функция для посылки сообщения объекту
class OPush: public unary_function<UniSetObject*, bool> class OPush: public unary_function<UniSetObject*, bool>
{ {
public: public:
OPush(const UniSetTypes::TransportMessage& msg):msg(msg){} OPush(const UniSetTypes::TransportMessage& msg):msg(msg){}
bool operator()(UniSetObject* o) const bool operator()(UniSetObject* o) const
{ {
...@@ -97,7 +97,7 @@ sig(0) ...@@ -97,7 +97,7 @@ sig(0)
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
UniSetManager::UniSetManager(const string& name, const string& section): UniSetManager::UniSetManager(const string& name, const string& section):
UniSetObject(name, section), UniSetObject(name, section),
sig(0) sig(0)
{ {
...@@ -110,12 +110,12 @@ UniSetManager::~UniSetManager() ...@@ -110,12 +110,12 @@ UniSetManager::~UniSetManager()
{ {
try try
{ {
objects(deactiv); objects(deactiv);
} }
catch(...){} catch(...){}
try try
{ {
managers(deactiv); managers(deactiv);
} }
catch(...){} catch(...){}
olist.clear(); olist.clear();
...@@ -130,14 +130,14 @@ void UniSetManager::initPOA( UniSetManager* rmngr ) ...@@ -130,14 +130,14 @@ void UniSetManager::initPOA( UniSetManager* rmngr )
string mname(getName()); string mname(getName());
mname+="_poamngr"; mname+="_poamngr";
PortableServer::POA_var root_poa = rmngr->getPOA(); PortableServer::POA_var root_poa = rmngr->getPOA();
poa = root_poa->create_POA(mname.c_str(), pman, policyList); poa = root_poa->create_POA(mname.c_str(), pman, policyList);
*/ */
PortableServer::POA_var rpoa = rmngr->getPOA(); PortableServer::POA_var rpoa = rmngr->getPOA();
if( rpoa != poa ) if( rpoa != poa )
poa = rmngr->getPOA(); poa = rmngr->getPOA();
if( CORBA::is_nil(poa) ) if( CORBA::is_nil(poa) )
ulog.crit() << myname << "(initPOA): failed init poa " << endl; ucrit << myname << "(initPOA): failed init poa " << endl;
// Инициализация самого менеджера и его подобъектов // Инициализация самого менеджера и его подобъектов
UniSetObject::init(rmngr); UniSetObject::init(rmngr);
...@@ -152,11 +152,10 @@ bool UniSetManager::addObject( UniSetObject *obj ) ...@@ -152,11 +152,10 @@ bool UniSetManager::addObject( UniSetObject *obj )
ObjectsList::iterator li=find(olist.begin(),olist.end(), obj); ObjectsList::iterator li=find(olist.begin(),olist.end(), obj);
if( li==olist.end() ) if( li==olist.end() )
{ {
if( ulog.is_info() ) uinfo << myname << "(activator): добавляем объект "<< obj->getName()<< endl;
ulog.info() << myname << "(activator): добавляем объект "<< obj->getName()<< endl; olist.push_back(obj);
olist.push_back(obj);
} }
} // unlock } // unlock
return true; return true;
} }
...@@ -168,28 +167,27 @@ bool UniSetManager::removeObject(UniSetObject* obj) ...@@ -168,28 +167,27 @@ bool UniSetManager::removeObject(UniSetObject* obj)
ObjectsList::iterator li=find(olist.begin(),olist.end(), obj); ObjectsList::iterator li=find(olist.begin(),olist.end(), obj);
if( li!=olist.end() ) if( li!=olist.end() )
{ {
if( ulog.is_info() ) uinfo << myname << "(activator): удаляем объект "<< obj->getName()<< endl;
ulog.info() << myname << "(activator): удаляем объект "<< obj->getName()<< endl;
try try
{ {
obj->disactivate(); obj->disactivate();
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.warn() << myname << "(removeObject): " << ex << endl; uwarn << myname << "(removeObject): " << ex << endl;
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
ulog.warn() << myname << "(removeObject): поймали CORBA::SystemException: " << ex.NP_minorString() << endl; uwarn << myname << "(removeObject): поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
} }
catch(CORBA::Exception& ex) catch(CORBA::Exception& ex)
{ {
ulog.warn() << myname << "(removeObject): CORBA::Exception" << endl; uwarn << myname << "(removeObject): CORBA::Exception" << endl;
} }
catch( omniORB::fatalException& fe ) catch( omniORB::fatalException& fe )
{ {
ulog.crit() << myname << "(managers): Caught omniORB::fatalException:" << endl; ucrit << myname << "(managers): Caught omniORB::fatalException:" << endl;
ulog.crit() << myname << "(managers): file: " << fe.file() ucrit << myname << "(managers): file: " << fe.file()
<< " line: " << fe.line() << " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl; << " mesg: " << fe.errmsg() << endl;
} }
...@@ -203,13 +201,12 @@ bool UniSetManager::removeObject(UniSetObject* obj) ...@@ -203,13 +201,12 @@ bool UniSetManager::removeObject(UniSetObject* obj)
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Функция работы со списком менеджеров * Функция работы со списком менеджеров
*/ */
void UniSetManager::managers(OManagerCommand cmd) void UniSetManager::managers(OManagerCommand cmd)
{ {
if( ulog.is_info() ) uinfo << myname <<"(managers): mlist.size="
ulog.info() << myname <<"(managers): mlist.size="
<< mlist.size() << " cmd=" << cmd << endl; << mlist.size() << " cmd=" << cmd << endl;
{ //lock { //lock
uniset_rwmutex_rlock lock(mlistMutex); uniset_rwmutex_rlock lock(mlistMutex);
...@@ -241,43 +238,34 @@ void UniSetManager::managers(OManagerCommand cmd) ...@@ -241,43 +238,34 @@ void UniSetManager::managers(OManagerCommand cmd)
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(managers): " << ex << endl
{ << " Не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
ulog.crit() << myname << "(managers): " << ex << endl;
ulog.crit() << myname << "(managers): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
} }
catch(CORBA::SystemException& ex) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(managers): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
ulog.crit() << myname << "(managers): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
} }
catch( CORBA::Exception& ex ) catch( CORBA::Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(managers): Caught CORBA::Exception. " << ex._name() << endl;
ulog.crit() << myname << "(managers): Caught CORBA::Exception. " << ex._name() << endl;
} }
catch( omniORB::fatalException& fe ) catch( omniORB::fatalException& fe )
{ {
if( ulog.is_crit() ) ucrit << myname << "(managers): Caught omniORB::fatalException:" << endl;
{ ucrit << myname << "(managers): file: " << fe.file()
ulog.crit() << myname << "(managers): Caught omniORB::fatalException:" << endl; << " line: " << fe.line()
ulog.crit() << myname << "(managers): file: " << fe.file() << " mesg: " << fe.errmsg() << endl;
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
} }
} }
} // unlock } // unlock
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Функция работы со списком объектов. * Функция работы со списком объектов.
*/ */
void UniSetManager::objects(OManagerCommand cmd) void UniSetManager::objects(OManagerCommand cmd)
{ {
if( ulog.is_info() ) uinfo << myname <<"(objects): olist.size="
ulog.info() << myname <<"(objects): olist.size="
<< olist.size() << " cmd=" << cmd << endl; << olist.size() << " cmd=" << cmd << endl;
{ //lock { //lock
uniset_rwmutex_rlock lock(olistMutex); uniset_rwmutex_rlock lock(olistMutex);
...@@ -310,60 +298,50 @@ void UniSetManager::objects(OManagerCommand cmd) ...@@ -310,60 +298,50 @@ void UniSetManager::objects(OManagerCommand cmd)
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(objects): " << ex << endl;
{ ucrit << myname << "(objects): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
ulog.crit() << myname << "(objects): " << ex << endl;
ulog.crit() << myname << "(objects): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
} }
catch(CORBA::SystemException& ex) catch(CORBA::SystemException& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(objects): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
ulog.crit() << myname << "(objects): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
} }
catch( CORBA::Exception& ex ) catch( CORBA::Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(objects): Caught CORBA::Exception. "
ulog.crit() << myname << "(objects): Caught CORBA::Exception. " << ex._name()
<< ex._name() << " (" << (*li)->getName() << ")" << endl;
<< " (" << (*li)->getName() << ")" << endl;
} }
catch( omniORB::fatalException& fe ) catch( omniORB::fatalException& fe )
{ {
if( ulog.is_crit() ) ucrit << myname << "(objects): Caught omniORB::fatalException:" << endl;
{ ucrit << myname << "(objects): file: " << fe.file()
ulog.crit() << myname << "(objects): Caught omniORB::fatalException:" << endl; << " line: " << fe.line()
ulog.crit() << myname << "(objects): file: " << fe.file() << " mesg: " << fe.errmsg() << endl;
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
} }
} }
} // unlock } // unlock
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Регистрирация объекта и всех его подобъектов в репозитории. * Регистрирация объекта и всех его подобъектов в репозитории.
* \note Только после этого он (и они) становятся доступны другим процессам * \note Только после этого он (и они) становятся доступны другим процессам
*/ */
bool UniSetManager::activateObject() bool UniSetManager::activateObject()
{ {
if( ulog.is_info() ) uinfo << myname << "(activateObjects): активизирую объекты"<< endl;
ulog.info() << myname << "(activateObjects): активизирую объекты"<< endl;
UniSetObject::activateObject(); UniSetObject::activateObject();
managers(activ); managers(activ);
objects(activ); objects(activ);
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* Удаление объекта и всех его подобъектов из репозитория. * Удаление объекта и всех его подобъектов из репозитория.
* \note Объект становится недоступен другим процессам * \note Объект становится недоступен другим процессам
*/ */
bool UniSetManager::disactivateObject() bool UniSetManager::disactivateObject()
{ {
if( ulog.is_info() ) uinfo << myname << "(disactivateObjects): деактивизирую объекты"<< endl;
ulog.info() << myname << "(disactivateObjects): деактивизирую объекты"<< endl;
// именно в такой последовательности! // именно в такой последовательности!
objects(deactiv); objects(deactiv);
managers(deactiv); managers(deactiv);
...@@ -372,7 +350,6 @@ bool UniSetManager::disactivateObject() ...@@ -372,7 +350,6 @@ bool UniSetManager::disactivateObject()
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetManager::sigterm( int signo ) void UniSetManager::sigterm( int signo )
{ {
// ulog.info() << "UniSetActivator: default processing signo="<< signo << endl;
sig=signo; sig=signo;
objects(term); objects(term);
managers(term); managers(term);
...@@ -384,7 +361,7 @@ void UniSetManager::broadcast(const TransportMessage& msg) ...@@ -384,7 +361,7 @@ void UniSetManager::broadcast(const TransportMessage& msg)
{ {
// себя не забыть... // себя не забыть...
// push(msg); // push(msg);
// Всем объектам... // Всем объектам...
{ //lock { //lock
uniset_rwmutex_rlock lock(olistMutex); uniset_rwmutex_rlock lock(olistMutex);
...@@ -409,11 +386,10 @@ bool UniSetManager::addManager( UniSetManager *child ) ...@@ -409,11 +386,10 @@ bool UniSetManager::addManager( UniSetManager *child )
if(it == mlist.end() ) if(it == mlist.end() )
{ {
mlist.push_back( child ); mlist.push_back( child );
if( ulog.is_info() ) uinfo << myname << ": добавляем менеджер "<< child->getName()<< endl;
ulog.info() << myname << ": добавляем менеджер "<< child->getName()<< endl;
} }
else if( ulog.is_warn() ) else
ulog.warn() << myname << ": попытка повторного добавления объекта "<< child->getName() << endl; uwarn << myname << ": попытка повторного добавления объекта "<< child->getName() << endl;
} // unlock } // unlock
return true; return true;
...@@ -425,8 +401,8 @@ bool UniSetManager::removeManager( UniSetManager* child ) ...@@ -425,8 +401,8 @@ bool UniSetManager::removeManager( UniSetManager* child )
{ //lock { //lock
uniset_rwmutex_wrlock lock(mlistMutex); uniset_rwmutex_wrlock lock(mlistMutex);
mlist.remove(child); mlist.remove(child);
} // unlock } // unlock
return true; return true;
} }
...@@ -434,15 +410,15 @@ bool UniSetManager::removeManager( UniSetManager* child ) ...@@ -434,15 +410,15 @@ bool UniSetManager::removeManager( UniSetManager* child )
const UniSetManager* UniSetManager::itemM(const ObjectId id) const UniSetManager* UniSetManager::itemM(const ObjectId id)
{ {
{ //lock { //lock
uniset_rwmutex_rlock lock(mlistMutex); uniset_rwmutex_rlock lock(mlistMutex);
for( UniSetManagerList::iterator li=mlist.begin(); li!=mlist.end();++li ) for( UniSetManagerList::iterator li=mlist.begin(); li!=mlist.end();++li )
{ {
if ( (*li)->getId()==id ) if ( (*li)->getId()==id )
return (*li); return (*li);
} }
} // unlock } // unlock
return 0; return 0;
} }
...@@ -456,9 +432,9 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id) ...@@ -456,9 +432,9 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id)
for (ObjectsList::iterator li=olist.begin(); li!=olist.end();++li) for (ObjectsList::iterator li=olist.begin(); li!=olist.end();++li)
{ {
if ( (*li)->getId()==id ) if ( (*li)->getId()==id )
return (*li); return (*li);
} }
} // unlock } // unlock
return 0; return 0;
} }
...@@ -468,18 +444,18 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id) ...@@ -468,18 +444,18 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id)
int UniSetManager::objectsCount() int UniSetManager::objectsCount()
{ {
int res( olist.size()+mlist.size() ); int res( olist.size()+mlist.size() );
for( UniSetManagerList::const_iterator it= beginMList(); for( UniSetManagerList::const_iterator it= beginMList();
it!= endMList(); ++it ) it!= endMList(); ++it )
{ {
res+= (*it)->objectsCount(); res+= (*it)->objectsCount();
} }
return res; return res;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq, int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
int begin, const long uplimit ) int begin, const long uplimit )
{ {
int ind = begin; int ind = begin;
...@@ -487,7 +463,7 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq, ...@@ -487,7 +463,7 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
// получаем у самого менджера // получаем у самого менджера
SimpleInfo_var msi=mngr->getInfo(); SimpleInfo_var msi=mngr->getInfo();
(*seq)[ind] = msi; (*seq)[ind] = msi;
ind++; ind++;
if( ind > uplimit ) if( ind > uplimit )
return ind; return ind;
...@@ -505,11 +481,11 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq, ...@@ -505,11 +481,11 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
} }
catch(CORBA::Exception& ex) catch(CORBA::Exception& ex)
{ {
ulog.warn() << myname << "(getObjectsInfo): CORBA::Exception" << endl; uwarn << myname << "(getObjectsInfo): CORBA::Exception" << endl;
} }
catch(...) catch(...)
{ {
ulog.warn() << myname << "(getObjectsInfo): не смог получить у объекта " uwarn << myname << "(getObjectsInfo): не смог получить у объекта "
<< conf->oind->getNameById( (*it)->getId() ) << " информацию" << endl; << conf->oind->getNameById( (*it)->getId() ) << " информацию" << endl;
} }
} }
...@@ -537,12 +513,12 @@ SimpleInfoSeq* UniSetManager::getObjectsInfo( CORBA::Long maxlength ) ...@@ -537,12 +513,12 @@ SimpleInfoSeq* UniSetManager::getObjectsInfo( CORBA::Long maxlength )
int length = objectsCount()+1; int length = objectsCount()+1;
if( length >= maxlength ) if( length >= maxlength )
length = maxlength; length = maxlength;
res->length(length); res->length(length);
// используем рекурсивную функцию // используем рекурсивную функцию
int ind = 0; int ind = 0;
const int limit = length; const int limit = length;
ind = getObjectsInfo( this, res, ind, limit ); ind = getObjectsInfo( this, res, ind, limit );
return res; return res;
} }
......
...@@ -59,9 +59,9 @@ void UniSetManager_LT::callback() ...@@ -59,9 +59,9 @@ void UniSetManager_LT::callback()
sleepTime=lt.checkTimers(this); sleepTime=lt.checkTimers(this);
} }
catch(Exception& ex) catch( Exception& ex )
{ {
ulog.crit() << myname << "(callback): " << ex << endl; ucrit << myname << "(callback): " << ex << endl;
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
using namespace std; using namespace std;
using namespace UniSetTypes; using namespace UniSetTypes;
#define CREATE_TIMER new ThrPassiveTimer(); #define CREATE_TIMER new ThrPassiveTimer();
// new PassiveSysTimer(); // new PassiveSysTimer();
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -123,7 +123,7 @@ stCountOfQueueFull(0) ...@@ -123,7 +123,7 @@ stCountOfQueueFull(0)
myid = ui.getIdByName(myname); myid = ui.getIdByName(myname);
if( myid == DefaultObjectId ) if( myid == DefaultObjectId )
{ {
ulog.warn() << "name: my ID not found!" << endl; uwarn << "name: my ID not found!" << endl;
throw Exception(name+": my ID not found!"); throw Exception(name+": my ID not found!");
} }
...@@ -150,19 +150,15 @@ void UniSetObject::init_object() ...@@ -150,19 +150,15 @@ void UniSetObject::init_object()
mutex_act.setName(myname + "_mutex_act"); mutex_act.setName(myname + "_mutex_act");
SizeOfMessageQueue = conf->getArgPInt("--uniset-object-size-message-queue",conf->getField("SizeOfMessageQueue"), 1000); SizeOfMessageQueue = conf->getArgPInt("--uniset-object-size-message-queue",conf->getField("SizeOfMessageQueue"), 1000);
MaxCountRemoveOfMessage = conf->getArgInt("--uniset-object-maxcount-remove-message",conf->getField("MaxCountRemoveOfMessage")); MaxCountRemoveOfMessage = conf->getArgInt("--uniset-object-maxcount-remove-message",conf->getField("MaxCountRemoveOfMessage"));
if( MaxCountRemoveOfMessage <= 0 ) if( MaxCountRemoveOfMessage <= 0 )
MaxCountRemoveOfMessage = SizeOfMessageQueue / 4; MaxCountRemoveOfMessage = SizeOfMessageQueue / 4;
if( MaxCountRemoveOfMessage <= 0 ) if( MaxCountRemoveOfMessage <= 0 )
MaxCountRemoveOfMessage = 10; MaxCountRemoveOfMessage = 10;
if( ulog.is_info() ) uinfo << myname << "(init): SizeOfMessageQueue=" << SizeOfMessageQueue
{ << " MaxCountRemoveOfMessage=" << MaxCountRemoveOfMessage
ulog.info() << myname << "(init): SizeOfMessageQueue=" << SizeOfMessageQueue << endl;
<< " MaxCountRemoveOfMessage=" << MaxCountRemoveOfMessage
<< endl;
}
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -172,11 +168,9 @@ void UniSetObject::init_object() ...@@ -172,11 +168,9 @@ void UniSetObject::init_object()
*/ */
bool UniSetObject::init( UniSetManager* om ) bool UniSetObject::init( UniSetManager* om )
{ {
if( ulog.is_info() ) uinfo << myname << ": init..." << endl;
ulog.info() << myname << ": init..." << endl;
this->mymngr = om; this->mymngr = om;
if( ulog.is_info() ) uinfo << myname << ": init ok..." << endl;
ulog.info() << myname << ": init ok..." << endl;
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -186,7 +180,7 @@ void UniSetObject::setID( UniSetTypes::ObjectId id ) ...@@ -186,7 +180,7 @@ void UniSetObject::setID( UniSetTypes::ObjectId id )
throw ObjectNameAlready("ObjectId already set(setID)"); throw ObjectNameAlready("ObjectId already set(setID)");
string myfullname = ui.getNameById(id); string myfullname = ui.getNameById(id);
myname = ORepHelpers::getShortName(myfullname.c_str()); myname = ORepHelpers::getShortName(myfullname.c_str());
section = ORepHelpers::getSectionName(myfullname.c_str()); section = ORepHelpers::getSectionName(myfullname.c_str());
myid = id; myid = id;
ui.initBackId(myid); ui.initBackId(myid);
...@@ -205,24 +199,18 @@ bool UniSetObject::receiveMessage( VoidMessage& vm ) ...@@ -205,24 +199,18 @@ bool UniSetObject::receiveMessage( VoidMessage& vm )
if( !queueMsg.empty() ) if( !queueMsg.empty() )
{ {
// контроль переполнения // контроль переполнения
if( queueMsg.size() > SizeOfMessageQueue ) if( queueMsg.size() > SizeOfMessageQueue )
{ {
if( ulog.is_crit() ) ucrit << myname <<"(receiveMessages): messages queue overflow!" << endl << flush;
ulog.crit() << myname <<"(receiveMessages): messages queue overflow!" << endl << flush;
cleanMsgQueue(queueMsg); cleanMsgQueue(queueMsg);
// обновляем статистику по переполнениям // обновляем статистику по переполнениям
stCountOfQueueFull++; stCountOfQueueFull++;
stMaxQueueMessages=0; stMaxQueueMessages=0;
} }
if( !queueMsg.empty() ) if( !queueMsg.empty() )
{ {
// if( ulog.is_crit() )
// ulog.crit() << myname <<"(receiveMessages): get new msg.." << endl << flush;
vm = queueMsg.top(); // получили сообщение vm = queueMsg.top(); // получили сообщение
// Проверка на последовательное вынимание
// cout << myname << ": receive message....tm=" << vm.time << " msec=" << vm.time_msec << "\tprior="<< vm.priority << endl;
queueMsg.pop(); // удалили сообщение из очереди queueMsg.pop(); // удалили сообщение из очереди
return true; return true;
} }
...@@ -257,20 +245,20 @@ struct MsgInfo ...@@ -257,20 +245,20 @@ struct MsgInfo
inline bool operator < ( const MsgInfo& mi ) const inline bool operator < ( const MsgInfo& mi ) const
{ {
if( type != mi.type ) if( type != mi.type )
return type < mi.type; return type < mi.type;
if( id != mi.id ) if( id != mi.id )
return id < mi.id; return id < mi.id;
if( node != mi.node ) if( node != mi.node )
return node < mi.node; return node < mi.node;
if( tm.tv_sec != mi.tm.tv_sec ) if( tm.tv_sec != mi.tm.tv_sec )
return tm.tv_sec < mi.tm.tv_sec; return tm.tv_sec < mi.tm.tv_sec;
return tm.tv_usec < mi.tm.tv_usec; return tm.tv_usec < mi.tm.tv_usec;
} }
}; };
// структура определяющая минимальное количество полей // структура определяющая минимальное количество полей
...@@ -286,7 +274,7 @@ struct CInfo ...@@ -286,7 +274,7 @@ struct CInfo
confirm(0) confirm(0)
{ {
} }
CInfo( ConfirmMessage& cm ): CInfo( ConfirmMessage& cm ):
sensor_id(cm.sensor_id), sensor_id(cm.sensor_id),
value(cm.value), value(cm.value),
...@@ -327,19 +315,17 @@ bool UniSetObject::waitMessage(VoidMessage& vm, timeout_t timeMS) ...@@ -327,19 +315,17 @@ bool UniSetObject::waitMessage(VoidMessage& vm, timeout_t timeMS)
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetObject::registered() void UniSetObject::registered()
{ {
if( ulog.is_info() ) uinfo << myname << ": registration..." << endl;
ulog.info() << myname << ": registration..." << endl;
if( myid == UniSetTypes::DefaultObjectId ) if( myid == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_info() ) uinfo << myname << "(registered): myid=DefaultObjectId \n";
ulog.info() << myname << "(registered): myid=DefaultObjectId \n";
return; return;
} }
if( !mymngr ) if( !mymngr )
{ {
ulog.warn() << myname << "(registered): unknown my manager" << endl; uwarn << myname << "(registered): unknown my manager" << endl;
string err(myname+": unknown my manager"); string err(myname+": unknown my manager");
throw ORepFailed(err.c_str()); throw ORepFailed(err.c_str());
} }
...@@ -348,7 +334,7 @@ void UniSetObject::registered() ...@@ -348,7 +334,7 @@ void UniSetObject::registered()
UniSetTypes::uniset_rwmutex_rlock lock(refmutex); UniSetTypes::uniset_rwmutex_rlock lock(refmutex);
if( !oref ) if( !oref )
{ {
ulog.crit() << myname << "(registered): oref is NULL!..." << endl; ucrit << myname << "(registered): oref is NULL!..." << endl;
return; return;
} }
} }
...@@ -365,21 +351,19 @@ void UniSetObject::registered() ...@@ -365,21 +351,19 @@ void UniSetObject::registered()
catch( ObjectNameAlready& al ) catch( ObjectNameAlready& al )
{ {
/*! /*!
\warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации. \warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации.
Мы чистим существующую ссылку и заменяем её на новую. Мы чистим существующую ссылку и заменяем её на новую.
Это сделано для более надежной работы, иначе может получится, что если объект перед завершением Это сделано для более надежной работы, иначе может получится, что если объект перед завершением
не очистил за собой ссылку(не разрегистрировался), то больше он никогда не сможет вновь зарегистрироваться. не очистил за собой ссылку(не разрегистрировался), то больше он никогда не сможет вновь зарегистрироваться.
Т.к. \b надёжной функции проверки "жив" ли объект пока нет... Т.к. \b надёжной функции проверки "жив" ли объект пока нет...
(так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона: (так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона:
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый) если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый)
объект станет недоступен другим, а знать об этом не будет!!! объект станет недоступен другим, а знать об этом не будет!!!
*/ */
ulog.crit() << myname << "(registered): replace object (ObjectNameAlready)" << endl; ucrit << myname << "(registered): replace object (ObjectNameAlready)" << endl;
reg = true; reg = true;
unregister(); unregister();
// ulog.crit() << myname << "(registered): не смог зарегестрироваться в репозитории объектов (ObjectNameAlready)" << endl;
// throw al;
} }
} }
} }
...@@ -390,7 +374,7 @@ void UniSetObject::registered() ...@@ -390,7 +374,7 @@ void UniSetObject::registered()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.warn() << myname << "(registered): " << ex << endl; uwarn << myname << "(registered): " << ex << endl;
string err(myname+": don`t registration in object reposotory"); string err(myname+": don`t registration in object reposotory");
throw ORepFailed(err.c_str()); throw ORepFailed(err.c_str());
} }
...@@ -404,8 +388,7 @@ void UniSetObject::unregister() ...@@ -404,8 +388,7 @@ void UniSetObject::unregister()
if( myid == UniSetTypes::DefaultObjectId ) if( myid == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_info() ) uinfo << myname << "(unregister): myid=DefaultObjectId \n";
ulog.info() << myname << "(unregister): myid=DefaultObjectId \n";
reg = false; reg = false;
return; return;
} }
...@@ -414,7 +397,7 @@ void UniSetObject::unregister() ...@@ -414,7 +397,7 @@ void UniSetObject::unregister()
UniSetTypes::uniset_rwmutex_rlock lock(refmutex); UniSetTypes::uniset_rwmutex_rlock lock(refmutex);
if( !oref ) if( !oref )
{ {
ulog.warn() << myname << "(unregister): oref NULL!" << endl; uwarn << myname << "(unregister): oref NULL!" << endl;
reg = false; reg = false;
return; return;
} }
...@@ -423,17 +406,13 @@ void UniSetObject::unregister() ...@@ -423,17 +406,13 @@ void UniSetObject::unregister()
try try
{ {
if( ulog.is_info() ) uinfo << myname << ": unregister "<< endl;
ulog.info() << myname << ": unregister "<< endl;
ui.unregister(myid); ui.unregister(myid);
uinfo << myname << ": unregister ok. "<< endl;
if( ulog.is_info() )
ulog.info() << myname << ": unregister ok. "<< endl;
} }
catch(...) catch(...)
{ {
ulog.warn() << myname << ": don`t registration in object repository" << endl; uwarn << myname << ": don`t registration in object repository" << endl;
} }
reg = false; reg = false;
...@@ -463,8 +442,7 @@ void UniSetObject::push(const TransportMessage& tm) ...@@ -463,8 +442,7 @@ void UniSetObject::push(const TransportMessage& tm)
// контроль переполнения // контроль переполнения
if( !queueMsg.empty() && queueMsg.size()>SizeOfMessageQueue ) if( !queueMsg.empty() && queueMsg.size()>SizeOfMessageQueue )
{ {
if( ulog.is_crit() ) ucrit << myname <<"(push): message queue overflow!" << endl << flush;
ulog.crit() << myname <<"(push): message queue overflow!" << endl << flush;
cleanMsgQueue(queueMsg); cleanMsgQueue(queueMsg);
// обновляем статистику // обновляем статистику
...@@ -472,9 +450,6 @@ void UniSetObject::push(const TransportMessage& tm) ...@@ -472,9 +450,6 @@ void UniSetObject::push(const TransportMessage& tm)
stMaxQueueMessages=0; stMaxQueueMessages=0;
} }
// if( ulog.is_crit() )
// ulog.crit() << myname <<"(push): push new msg.." << endl << flush;
VoidMessage v(tm); VoidMessage v(tm);
queueMsg.push(v); queueMsg.push(v);
...@@ -490,7 +465,7 @@ void UniSetObject::push(const TransportMessage& tm) ...@@ -490,7 +465,7 @@ void UniSetObject::push(const TransportMessage& tm)
struct tmpConsumerInfo struct tmpConsumerInfo
{ {
tmpConsumerInfo(){} tmpConsumerInfo(){}
map<UniSetTypes::KeyType,VoidMessage> smap; map<UniSetTypes::KeyType,VoidMessage> smap;
map<int,VoidMessage> tmap; map<int,VoidMessage> tmap;
map<int,VoidMessage> sysmap; map<int,VoidMessage> sysmap;
...@@ -500,11 +475,8 @@ struct tmpConsumerInfo ...@@ -500,11 +475,8 @@ struct tmpConsumerInfo
void UniSetObject::cleanMsgQueue( MessagesQueue& q ) void UniSetObject::cleanMsgQueue( MessagesQueue& q )
{ {
if( ulog.is_crit() ) ucrit << myname << "(cleanMsgQueue): msg queue cleaning..." << endl << flush;
{ ucrit << myname << "(cleanMsgQueue): current size of queue: " << q.size() << endl << flush;
ulog.crit() << myname << "(cleanMsgQueue): msg queue cleaning..." << endl << flush;
ulog.crit() << myname << "(cleanMsgQueue): current size of queue: " << q.size() << endl << flush;
}
// проходим по всем известным нам типам(базовым) // проходим по всем известным нам типам(базовым)
// ищем все совпадающие сообщения и оставляем только последние... // ищем все совпадающие сообщения и оставляем только последние...
...@@ -519,7 +491,7 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q ) ...@@ -519,7 +491,7 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
{ {
m = q.top(); m = q.top();
q.pop(); q.pop();
switch( m.type ) switch( m.type )
{ {
case Message::SensorInfo: case Message::SensorInfo:
...@@ -568,23 +540,19 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q ) ...@@ -568,23 +540,19 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
break; break;
} }
} }
if( ulog.is_crit() ) ucrit << myname << "(cleanMsgQueue): ******** cleanup RESULT ********" << endl;
ulog.crit() << myname << "(cleanMsgQueue): ******** cleanup RESULT ********" << endl;
for( map<UniSetTypes::ObjectId,tmpConsumerInfo>::iterator it0 = consumermap.begin(); for( map<UniSetTypes::ObjectId,tmpConsumerInfo>::iterator it0 = consumermap.begin();
it0!=consumermap.end(); ++it0 ) it0!=consumermap.end(); ++it0 )
{ {
if( ulog.is_crit() ) ucrit << myname << "(cleanMsgQueue): CONSUMER=" << it0->first << endl;
{ ucrit << myname << "(cleanMsgQueue): after clean SensorMessage: " << it0->second.smap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): CONSUMER=" << it0->first << endl; ucrit << myname << "(cleanMsgQueue): after clean TimerMessage: " << it0->second.tmap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean SensorMessage: " << it0->second.smap.size() << endl; ucrit << myname << "(cleanMsgQueue): after clean SystemMessage: " << it0->second.sysmap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean TimerMessage: " << it0->second.tmap.size() << endl; ucrit << myname << "(cleanMsgQueue): after clean ConfirmMessage: " << it0->second.cmap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean SystemMessage: " << it0->second.sysmap.size() << endl; ucrit << myname << "(cleanMsgQueue): after clean other: " << it0->second.lstOther.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean ConfirmMessage: " << it0->second.cmap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean other: " << it0->second.lstOther.size() << endl;
}
// теперь ОСТАВШИЕСЯ запихиваем обратно в очередь... // теперь ОСТАВШИЕСЯ запихиваем обратно в очередь...
map<UniSetTypes::KeyType,VoidMessage>::iterator it=it0->second.smap.begin(); map<UniSetTypes::KeyType,VoidMessage>::iterator it=it0->second.smap.begin();
...@@ -616,31 +584,25 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q ) ...@@ -616,31 +584,25 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
q.push(*it6); q.push(*it6);
} }
if( ulog.is_crit() ) ucrit << myname
{ << "(cleanMsgQueue): ******* result size of queue: "
ulog.crit() << myname
<< "(cleanMsgQueue): ******* result size of queue: "
<< q.size() << q.size()
<< " < " << getMaxSizeOfMessageQueue() << endl; << " < " << getMaxSizeOfMessageQueue() << endl;
}
if( q.size() >= getMaxSizeOfMessageQueue() ) if( q.size() >= getMaxSizeOfMessageQueue() )
{ {
if( ulog.is_crit() ) ucrit << myname << "(cleanMsgQueue): clean failed. size > " << q.size() << endl;
{ ucrit << myname << "(cleanMsgQueue): remove " << getMaxCountRemoveOfMessage() << " old messages " << endl;
ulog.crit() << myname << "(cleanMsgQueue): clean failed. size > " << q.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): remove " << getMaxCountRemoveOfMessage() << " old messages " << endl;
}
for( unsigned int i=0; i<getMaxCountRemoveOfMessage(); i++ ) for( unsigned int i=0; i<getMaxCountRemoveOfMessage(); i++ )
{ {
q.top(); q.top();
q.pop(); q.pop();
if( q.empty() ) if( q.empty() )
break; break;
} }
if( ulog.is_crit() ) ucrit << myname << "(cleanMsgQueue): result size=" << q.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): result size=" << q.size() << endl;
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -671,13 +633,12 @@ bool UniSetObject::disactivate() ...@@ -671,13 +633,12 @@ bool UniSetObject::disactivate()
{ // lock { // lock
uniset_rwmutex_wrlock mlk(qmutex); uniset_rwmutex_wrlock mlk(qmutex);
while( !queueMsg.empty() ) while( !queueMsg.empty() )
queueMsg.pop(); queueMsg.pop();
} }
try try
{ {
if( ulog.is_info() ) uinfo << "disactivateObject..." << endl;
ulog.info() << "disactivateObject..." << endl;
PortableServer::POA_var poamngr = mymngr->getPOA(); PortableServer::POA_var poamngr = mymngr->getPOA();
if( !PortableServer::POA_Helper::is_nil(poamngr) ) if( !PortableServer::POA_Helper::is_nil(poamngr) )
...@@ -690,37 +651,30 @@ bool UniSetObject::disactivate() ...@@ -690,37 +651,30 @@ bool UniSetObject::disactivate()
unregister(); unregister();
PortableServer::ObjectId_var oid = poamngr->servant_to_id(static_cast<PortableServer::ServantBase*>(this)); PortableServer::ObjectId_var oid = poamngr->servant_to_id(static_cast<PortableServer::ServantBase*>(this));
poamngr->deactivate_object(oid); poamngr->deactivate_object(oid);
if( ulog.is_info() ) uinfo << "ok..." << endl;
ulog.info() << "ok..." << endl;
return true; return true;
} }
if( ulog.is_warn() ) uwarn << "manager already destroyed.." << endl;
ulog.warn() << "manager already destroyed.." << endl;
} }
catch(CORBA::TRANSIENT) catch(CORBA::TRANSIENT)
{ {
if( ulog.is_warn() ) uwarn << "isExist: нет связи..."<< endl;
ulog.warn() << "isExist: нет связи..."<< endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_warn() ) uwarn << "UniSetObject: "<<"поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
ulog.warn() << "UniSetObject: "<<"поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
} }
catch(CORBA::Exception& ex) catch(CORBA::Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << "UniSetObject: "<<"поймали CORBA::Exception." << endl;
ulog.warn() << "UniSetObject: "<<"поймали CORBA::Exception." << endl;
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << "UniSetObject: "<< ex << endl;
ulog.warn() << "UniSetObject: "<< ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << "UniSetObject: "<<" catch ..." << endl;
ulog.warn() << "UniSetObject: "<<" catch ..." << endl;
} }
return false; return false;
...@@ -729,12 +683,11 @@ bool UniSetObject::disactivate() ...@@ -729,12 +683,11 @@ bool UniSetObject::disactivate()
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool UniSetObject::activate() bool UniSetObject::activate()
{ {
if( ulog.is_info() ) uinfo << myname << ": activate..." << endl;
ulog.info() << myname << ": activate..." << endl;
if( mymngr == NULL ) if( mymngr == NULL )
{ {
ulog.crit() << myname << "(activate): mymngr=NULL!!! activate failure..." << endl; ucrit << myname << "(activate): mymngr=NULL!!! activate failure..." << endl;
return false; return false;
} }
...@@ -752,11 +705,11 @@ bool UniSetObject::activate() ...@@ -752,11 +705,11 @@ bool UniSetObject::activate()
} }
else else
{ {
// А если myid==UniSetTypes::DefaultObjectId // А если myid==UniSetTypes::DefaultObjectId
// то myname = noname. ВСЕГДА! // то myname = noname. ВСЕГДА!
if( myid == UniSetTypes::DefaultObjectId ) if( myid == UniSetTypes::DefaultObjectId )
{ {
ulog.crit() << myname << "(activate): Не задан ID!!! activate failure..." << endl; ucrit << myname << "(activate): Не задан ID!!! activate failure..." << endl;
// вызываем на случай если она переопределена в дочерних классах // вызываем на случай если она переопределена в дочерних классах
// Например в UniSetManager, если здесь не вызвать, то не будут инициализированы подчинённые объекты. // Например в UniSetManager, если здесь не вызвать, то не будут инициализированы подчинённые объекты.
// (см. UniSetManager::activateObject) // (см. UniSetManager::activateObject)
...@@ -773,9 +726,9 @@ bool UniSetObject::activate() ...@@ -773,9 +726,9 @@ bool UniSetObject::activate()
// Activate object... // Activate object...
poa->activate_object_with_id(oid, this); poa->activate_object_with_id(oid, this);
} }
{ {
UniSetTypes::uniset_rwmutex_wrlock lock(refmutex); UniSetTypes::uniset_rwmutex_wrlock lock(refmutex);
oref = poa->servant_to_reference(static_cast<PortableServer::ServantBase*>(this) ); oref = poa->servant_to_reference(static_cast<PortableServer::ServantBase*>(this) );
...@@ -790,34 +743,30 @@ bool UniSetObject::activate() ...@@ -790,34 +743,30 @@ bool UniSetObject::activate()
thr = new ThreadCreator<UniSetObject>(this, &UniSetObject::work); thr = new ThreadCreator<UniSetObject>(this, &UniSetObject::work);
thr->start(); thr->start();
} }
else else
{ {
if( ulog.is_info() ) uinfo << myname << ": ?? не задан ObjectId...("
{ << "myid=" << myid << " threadcreate=" << threadcreate
ulog.info() << myname << ": ?? не задан ObjectId...(" << ")" << endl;
<< "myid=" << myid << " threadcreate=" << threadcreate
<< ")" << endl;
}
thread(false); thread(false);
} }
activateObject(); activateObject();
if( ulog.is_info() ) uinfo << myname << ": activate ok." << endl;
ulog.info() << myname << ": activate ok." << endl;
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetObject::work() void UniSetObject::work()
{ {
if( ulog.is_info() ) uinfo << myname << ": thread processing messages run..." << endl;
ulog.info() << myname << ": thread processing messages run..." << endl;
if( thr ) if( thr )
msgpid = thr->getTID(); msgpid = thr->getTID();
while( isActive() ) while( isActive() )
{ {
callback(); callback();
} }
ulog.warn() << myname << ": thread processing messages stop..." << endl;
uinfo << myname << ": thread processing messages stop..." << endl;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetObject::callback() void UniSetObject::callback()
...@@ -832,8 +781,7 @@ void UniSetObject::callback() ...@@ -832,8 +781,7 @@ void UniSetObject::callback()
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniSetObject::processingMessage( UniSetTypes::VoidMessage *msg ) void UniSetObject::processingMessage( UniSetTypes::VoidMessage *msg )
{ {
if( ulog.is_info() ) uinfo << myname << ": default processing messages..." << endl;
ulog.info() << myname << ": default processing messages..." << endl;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
UniSetTypes::SimpleInfo* UniSetObject::getInfo() UniSetTypes::SimpleInfo* UniSetObject::getInfo()
...@@ -844,26 +792,26 @@ UniSetTypes::SimpleInfo* UniSetObject::getInfo() ...@@ -844,26 +792,26 @@ UniSetTypes::SimpleInfo* UniSetObject::getInfo()
info << "tid=" << setw(10); info << "tid=" << setw(10);
if( threadcreate ) if( threadcreate )
{ {
if(thr) if(thr)
{ {
msgpid = thr->getId(); // заодно(на всякий) обновим и внутреннюю информацию msgpid = thr->getId(); // заодно(на всякий) обновим и внутреннюю информацию
info << msgpid; info << msgpid;
} }
else else
info << "не запущен"; info << "не запущен";
} }
else else
info << "откл."; info << "откл.";
info << "\tcount=" << countMessages(); info << "\tcount=" << countMessages();
info << "\tmaxMsg=" << stMaxQueueMessages; info << "\tmaxMsg=" << stMaxQueueMessages;
info << "\tqFull("<< SizeOfMessageQueue << ")=" << stCountOfQueueFull; info << "\tqFull("<< SizeOfMessageQueue << ")=" << stCountOfQueueFull;
// info << "\n"; // info << "\n";
SimpleInfo* res = new SimpleInfo(); SimpleInfo* res = new SimpleInfo();
res->info = info.str().c_str(); // CORBA::string_dup(info.str().c_str()); res->info = info.str().c_str(); // CORBA::string_dup(info.str().c_str());
res->id = myid; res->id = myid;
return res; // ._retn(); return res; // ._retn();
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -883,7 +831,7 @@ bool UniSetObject::PriorVMsgCompare::operator()(const UniSetTypes::VoidMessage& ...@@ -883,7 +831,7 @@ bool UniSetObject::PriorVMsgCompare::operator()(const UniSetTypes::VoidMessage&
return lhs.tm.tv_usec >= rhs.tm.tv_usec; return lhs.tm.tv_usec >= rhs.tm.tv_usec;
return lhs.tm.tv_sec >= rhs.tm.tv_sec; return lhs.tm.tv_sec >= rhs.tm.tv_sec;
} }
return lhs.priority < rhs.priority; return lhs.priority < rhs.priority;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -61,7 +61,7 @@ void UniSetObject_LT::callback() ...@@ -61,7 +61,7 @@ void UniSetObject_LT::callback()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.crit() << myname << "(callback): " << ex << endl; ucrit << myname << "(callback): " << ex << endl;
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -89,8 +89,7 @@ void IOController::sensorsUnregistration() ...@@ -89,8 +89,7 @@ void IOController::sensorsUnregistration()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_crit() ) ucrit << myname << "(sensorsUnregistration): "<< ex << endl;
ulog.crit() << myname << "(sensorsUnregistration): "<< ex << endl;
} }
catch(...){} catch(...){}
} }
...@@ -117,8 +116,7 @@ void IOController::activateInit() ...@@ -117,8 +116,7 @@ void IOController::activateInit()
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(activateInit): "<< ex << endl;
ulog.crit() << myname << "(activateInit): "<< ex << endl;
} }
catch(...){} catch(...){}
} }
...@@ -130,7 +128,7 @@ CORBA::Long IOController::getValue( const IOController_i::SensorInfo& si ) ...@@ -130,7 +128,7 @@ CORBA::Long IOController::getValue( const IOController_i::SensorInfo& si )
return localGetValue(li,si); return localGetValue(li,si);
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
long IOController::localGetValue( IOController::IOStateList::iterator& li, long IOController::localGetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si ) const IOController_i::SensorInfo& si )
{ {
if( li == ioList.end() ) if( li == ioList.end() )
...@@ -144,15 +142,13 @@ long IOController::localGetValue( IOController::IOStateList::iterator& li, ...@@ -144,15 +142,13 @@ long IOController::localGetValue( IOController::IOStateList::iterator& li,
uniset_rwmutex_rlock lock(li->second.val_lock); uniset_rwmutex_rlock lock(li->second.val_lock);
return li->second.value; return li->second.value;
} }
// ------------- // -------------
ostringstream err; ostringstream err;
err << myname << "(localGetValue): Not found sensor (" << si.id << ":" << si.node << ") " err << myname << "(localGetValue): Not found sensor (" << si.id << ":" << si.node << ") "
<< conf->oind->getNameById(si.id); << conf->oind->getNameById(si.id);
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -163,7 +159,7 @@ void IOController::setUndefinedState(const IOController_i::SensorInfo& si, ...@@ -163,7 +159,7 @@ void IOController::setUndefinedState(const IOController_i::SensorInfo& si,
localSetUndefinedState( li,undefined,si ); localSetUndefinedState( li,undefined,si );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void IOController::localSetUndefinedState( IOStateList::iterator& li, void IOController::localSetUndefinedState( IOStateList::iterator& li,
bool undefined, const IOController_i::SensorInfo& si ) bool undefined, const IOController_i::SensorInfo& si )
{ {
// сохранение текущего состояния // сохранение текущего состояния
...@@ -175,10 +171,10 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li, ...@@ -175,10 +171,10 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
ostringstream err; ostringstream err;
err << myname << "(localSetUndefined): Unknown sensor (" << si.id << ":" << si.node << ")" err << myname << "(localSetUndefined): Unknown sensor (" << si.id << ":" << si.node << ")"
<< "name: " << conf->oind->getNameById(si.id) << "name: " << conf->oind->getNameById(si.id)
<< "node: " << conf->oind->getMapName(si.node); << "node: " << conf->oind->getMapName(si.node);
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
bool changed = false; bool changed = false;
{ // lock { // lock
uniset_rwmutex_wrlock lock(li->second.val_lock); uniset_rwmutex_wrlock lock(li->second.val_lock);
...@@ -188,7 +184,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li, ...@@ -188,7 +184,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// сперва локальные события... // сперва локальные события...
try try
{ {
if( changed ) if( changed )
li->second.sigUndefChange.emit(li, this); li->second.sigUndefChange.emit(li, this);
} }
...@@ -196,7 +192,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li, ...@@ -196,7 +192,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// потом глобольное, но конкретно для 'undefchange' // потом глобольное, но конкретно для 'undefchange'
try try
{ {
if( changed ) if( changed )
sigAnyUndefChange.emit(li, this); sigAnyUndefChange.emit(li, this);
} }
...@@ -204,7 +200,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li, ...@@ -204,7 +200,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// теперь просто событие по изменению состояния // теперь просто событие по изменению состояния
try try
{ {
if( changed ) if( changed )
li->second.sigChange.emit(li, this); li->second.sigChange.emit(li, this);
} }
...@@ -212,7 +208,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li, ...@@ -212,7 +208,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// глобальное по всем.. // глобальное по всем..
try try
{ {
if( changed ) if( changed )
sigAnyChange.emit(li, this); sigAnyChange.emit(li, this);
} }
...@@ -229,7 +225,7 @@ void IOController::fastSetValue( const IOController_i::SensorInfo& si, CORBA::Lo ...@@ -229,7 +225,7 @@ void IOController::fastSetValue( const IOController_i::SensorInfo& si, CORBA::Lo
catch(...){} catch(...){}
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void IOController::setValue( const IOController_i::SensorInfo& si, CORBA::Long value, void IOController::setValue( const IOController_i::SensorInfo& si, CORBA::Long value,
UniSetTypes::ObjectId sup_id ) UniSetTypes::ObjectId sup_id )
{ {
IOController::IOStateList::iterator li(ioList.end()); IOController::IOStateList::iterator li(ioList.end());
...@@ -237,7 +233,7 @@ void IOController::setValue( const IOController_i::SensorInfo& si, CORBA::Long v ...@@ -237,7 +233,7 @@ void IOController::setValue( const IOController_i::SensorInfo& si, CORBA::Long v
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void IOController::localSetValue( IOController::IOStateList::iterator& li, void IOController::localSetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si, const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id ) CORBA::Long value, UniSetTypes::ObjectId sup_id )
{ {
if( sup_id == UniSetTypes::DefaultObjectId ) if( sup_id == UniSetTypes::DefaultObjectId )
...@@ -246,35 +242,31 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li, ...@@ -246,35 +242,31 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li,
// сохранение текущего состояния // сохранение текущего состояния
if( li == ioList.end() ) if( li == ioList.end() )
li = ioList.find(key(si.id, si.node)); li = ioList.find(key(si.id, si.node));
if( li==ioList.end() ) if( li==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(localSaveValue): Unknown sensor (" << si.id << ":" << si.node << ")" err << myname << "(localSaveValue): Unknown sensor (" << si.id << ":" << si.node << ")"
<< "name: " << conf->oind->getNameById(si.id) << "name: " << conf->oind->getNameById(si.id)
<< "node: " << conf->oind->getMapName(si.node); << "node: " << conf->oind->getMapName(si.node);
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
bool changed = false; bool changed = false;
{ // lock { // lock
uniset_rwmutex_wrlock lock(li->second.val_lock); uniset_rwmutex_wrlock lock(li->second.val_lock);
// фильтрам может потребоваться измениять исходное значение (например для усреднения) // фильтрам может потребоваться измениять исходное значение (например для усреднения)
// поэтому передаём (и затем сохраняем) напрямую(ссылку) value (а не const value) // поэтому передаём (и затем сохраняем) напрямую(ссылку) value (а не const value)
bool blocked = ( li->second.blocked || li->second.undefined ); bool blocked = ( li->second.blocked || li->second.undefined );
if( checkIOFilters(&li->second,value,sup_id) || blocked ) if( checkIOFilters(&li->second,value,sup_id) || blocked )
{ {
if( ulog.is_info() ) uinfo << myname << ": save sensor value (" << si.id << ":" << si.node << ")"
{
ulog.info() << myname << ": save sensor value (" << si.id << ":" << si.node << ")"
<< " name: " << conf->oind->getNameById(si.id) << " name: " << conf->oind->getNameById(si.id)
<< " node: " << conf->oind->getMapName(si.node) << " node: " << conf->oind->getMapName(si.node)
<< " value="<< value << endl; << " value="<< value << endl;
}
long prev = li->second.value; long prev = li->second.value;
...@@ -303,14 +295,14 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li, ...@@ -303,14 +295,14 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li,
} // unlock } // unlock
try try
{ {
if( changed ) if( changed )
li->second.sigChange.emit(li, this); li->second.sigChange.emit(li, this);
} }
catch(...){} catch(...){}
try try
{ {
if( changed ) if( changed )
sigAnyChange.emit(li, this); sigAnyChange.emit(li, this);
} }
...@@ -324,10 +316,9 @@ IOType IOController::getIOType( const IOController_i::SensorInfo& si ) ...@@ -324,10 +316,9 @@ IOType IOController::getIOType( const IOController_i::SensorInfo& si )
IOStateList::iterator ali = ioList.find(k); IOStateList::iterator ali = ioList.find(k);
if( ali!=ioList.end() ) if( ali!=ioList.end() )
return ali->second.type; return ali->second.type;
ostringstream err; ostringstream err;
err << myname << "(getIOType): датчик имя: " << conf->oind->getNameById(si.id) << " не найден"; err << myname << "(getIOType): датчик имя: " << conf->oind->getNameById(si.id) << " не найден";
// ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -338,8 +329,7 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force ) ...@@ -338,8 +329,7 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
{ {
ostringstream err; ostringstream err;
err << "(IOCOntroller::ioRegistration): КОНТРОЛЛЕРУ НЕ ЗАДАН ObjectId. Регистрация невозможна."; err << "(IOCOntroller::ioRegistration): КОНТРОЛЛЕРУ НЕ ЗАДАН ObjectId. Регистрация невозможна.";
if( ulog.is_warn() ) uwarn << err.str() << endl;
ulog.warn() << err.str() << endl;
throw ResolveNameError(err.str().c_str()); throw ResolveNameError(err.str().c_str());
} }
...@@ -352,9 +342,9 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force ) ...@@ -352,9 +342,9 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
if( li!=ioList.end() ) if( li!=ioList.end() )
{ {
ostringstream err; ostringstream err;
err << "Попытка повторной регистрации датчика("<< k << "). имя: " err << "Попытка повторной регистрации датчика("<< k << "). имя: "
<< conf->oind->getNameById(ainf.si.id) << conf->oind->getNameById(ainf.si.id)
<< " узел: " << conf->oind->getMapName(ainf.si.node); << " узел: " << conf->oind->getMapName(ainf.si.node);
throw ObjectNameAlready(err.str().c_str()); throw ObjectNameAlready(err.str().c_str());
} }
} }
...@@ -380,35 +370,27 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force ) ...@@ -380,35 +370,27 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
{ {
try try
{ {
if( ulog.is_info() ) uinfo << myname
{ << "(ioRegistration): регистрирую "
ulog.info() << myname
<< "(ioRegistration): регистрирую "
<< conf->oind->getNameById(ainf.si.id, ainf.si.node) << endl; << conf->oind->getNameById(ainf.si.id, ainf.si.node) << endl;
}
ui.registered( ainf.si.id, ainf.si.node, getRef(), true ); ui.registered( ainf.si.id, ainf.si.node, getRef(), true );
return; return;
} }
catch(ObjectNameAlready& ex ) catch(ObjectNameAlready& ex )
{ {
if( ulog.is_warn() ) uwarn << myname << "(asRegistration): ЗАМЕНЯЮ СУЩЕСТВУЮЩИЙ ОБЪЕКТ (ObjectNameAlready)" << endl;
{
ulog.warn() << myname
<< "(asRegistration): ЗАМЕНЯЮ СУЩЕСТВУЮЩИЙ ОБЪЕКТ (ObjectNameAlready)" << endl;
}
ui.unregister(ainf.si.id,ainf.si.node); ui.unregister(ainf.si.id,ainf.si.node);
} }
} }
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(ioRegistration): " << ex << endl;
ulog.crit() << myname << "(ioRegistration): " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit << myname << "(ioRegistration): catch ..."<< endl;
ulog.crit() << myname << "(ioRegistration): catch ..."<< endl;
} }
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -439,8 +421,7 @@ void IOController::logging( UniSetTypes::SensorMessage& sm ) ...@@ -439,8 +421,7 @@ void IOController::logging( UniSetTypes::SensorMessage& sm )
if( isPingDBServer ) if( isPingDBServer )
{ {
isPingDBServer = false; isPingDBServer = false;
if( ulog.is_crit() ) ucrit << myname << "(logging): DBServer unavailable" << endl;
ulog.crit() << myname << "(logging): DBServer unavailable" << endl;
} }
} }
} }
...@@ -453,7 +434,7 @@ void IOController::dumpToDB() ...@@ -453,7 +434,7 @@ void IOController::dumpToDB()
{ // lock { // lock
// uniset_mutex_lock lock(ioMutex, 100); // uniset_mutex_lock lock(ioMutex, 100);
for( IOStateList::iterator li = ioList.begin(); li!=ioList.end(); ++li ) for( IOStateList::iterator li = ioList.begin(); li!=ioList.end(); ++li )
{ {
uniset_rwmutex_rlock lock(li->second.val_lock); uniset_rwmutex_rlock lock(li->second.val_lock);
SensorMessage sm; SensorMessage sm;
...@@ -469,19 +450,19 @@ void IOController::dumpToDB() ...@@ -469,19 +450,19 @@ void IOController::dumpToDB()
if ( !li->second.dbignore ) if ( !li->second.dbignore )
logging(sm); logging(sm);
} }
} // unlock } // unlock
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
IOController_i::SensorInfoSeq* IOController::getSensorsMap() IOController_i::SensorInfoSeq* IOController::getSensorsMap()
{ {
// ЗА ОСВОБОЖДЕНИЕ ПАМЯТИ ОТВЕЧАЕТ КЛИЕНТ!!!!!! // ЗА ОСВОБОЖДЕНИЕ ПАМЯТИ ОТВЕЧАЕТ КЛИЕНТ!!!!!!
// поэтому ему лучше пользоваться при получении _var-классом // поэтому ему лучше пользоваться при получении _var-классом
IOController_i::SensorInfoSeq* res = new IOController_i::SensorInfoSeq(); IOController_i::SensorInfoSeq* res = new IOController_i::SensorInfoSeq();
res->length( ioList.size()); res->length( ioList.size());
int i=0; int i=0;
for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it) for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it)
{ {
uniset_rwmutex_rlock lock(it->second.val_lock); uniset_rwmutex_rlock lock(it->second.val_lock);
(*res)[i] = it->second; (*res)[i] = it->second;
i++; i++;
...@@ -516,11 +497,10 @@ IOController_i::SensorIOInfo IOController::getSensorIOInfo( const IOController_i ...@@ -516,11 +497,10 @@ IOController_i::SensorIOInfo IOController::getSensorIOInfo( const IOController_i
// ------------- // -------------
ostringstream err; ostringstream err;
err << myname << "(getSensorIOInfo): Unknown sensor (" << si.id << ":" << si.node << ")" err << myname << "(getSensorIOInfo): Unknown sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node); << conf->oind->getNameById(si.id,si.node);
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -531,8 +511,8 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si) ...@@ -531,8 +511,8 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it==ioList.end() ) if( it==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(getRawValue): Unknown analog sensor (" << si.id << ":" << si.node << ")" err << myname << "(getRawValue): Unknown analog sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node); << conf->oind->getNameById(si.id,si.node);
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -544,10 +524,10 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si) ...@@ -544,10 +524,10 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it->second.type == UniversalIO::AI ) if( it->second.type == UniversalIO::AI )
return UniSetTypes::lcalibrate(it->second.value,ci.minRaw,ci.maxRaw,ci.minCal,ci.maxCal,true); return UniSetTypes::lcalibrate(it->second.value,ci.minRaw,ci.maxRaw,ci.minCal,ci.maxCal,true);
if( it->second.type == UniversalIO::AO ) if( it->second.type == UniversalIO::AO )
return UniSetTypes::lcalibrate(it->second.value,ci.minCal,ci.maxCal,ci.minRaw,ci.maxRaw,true); return UniSetTypes::lcalibrate(it->second.value,ci.minCal,ci.maxCal,ci.minRaw,ci.maxRaw,true);
} }
return it->second.value; return it->second.value;
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
...@@ -559,13 +539,12 @@ void IOController::calibrate(const IOController_i::SensorInfo& si, ...@@ -559,13 +539,12 @@ void IOController::calibrate(const IOController_i::SensorInfo& si,
if( it==ioList.end() ) if( it==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(calibrate): Unknown analog sensor (" << si.id << ":" << si.node << ")" err << myname << "(calibrate): Unknown analog sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node); << conf->oind->getNameById(si.id,si.node);
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
if( ulog.is_info() ) uinfo << myname <<"(calibrate): from " << conf->oind->getNameById(adminId) << endl;
ulog.info() << myname <<"(calibrate): from " << conf->oind->getNameById(adminId) << endl;
it->second.ci = ci; it->second.ci = ci;
} }
...@@ -576,11 +555,11 @@ IOController_i::CalibrateInfo IOController::getCalibrateInfo(const IOController_ ...@@ -576,11 +555,11 @@ IOController_i::CalibrateInfo IOController::getCalibrateInfo(const IOController_
if( it==ioList.end() ) if( it==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(calibrate): Unknown analog sensor (" << si.id << ":" << si.node << ")" err << myname << "(calibrate): Unknown analog sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node); << conf->oind->getNameById(si.id,si.node);
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
return it->second.ci; return it->second.ci;
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo& ai): IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo& ai):
...@@ -598,7 +577,7 @@ IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo* ai): ...@@ -598,7 +577,7 @@ IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo* ai):
any(0) any(0)
{} {}
IOController::USensorInfo& IOController::USensorInfo&
IOController::USensorInfo::operator=(IOController_i::SensorIOInfo& r) IOController::USensorInfo::operator=(IOController_i::SensorIOInfo& r)
{ {
(*this) = r; (*this) = r;
...@@ -606,16 +585,16 @@ IOController::USensorInfo& ...@@ -606,16 +585,16 @@ IOController::USensorInfo&
return *this; return *this;
} }
IOController::USensorInfo& IOController::USensorInfo&
IOController::USensorInfo::operator=(IOController_i::SensorIOInfo* r) IOController::USensorInfo::operator=(IOController_i::SensorIOInfo* r)
{ {
(*this) = (*r); (*this) = (*r);
// any=0; // any=0;
return *this; return *this;
} }
const IOController::USensorInfo& const IOController::USensorInfo&
IOController::USensorInfo::operator=(const IOController_i::SensorIOInfo& r) IOController::USensorInfo::operator=(const IOController_i::SensorIOInfo& r)
{ {
(*this) = r; (*this) = r;
...@@ -624,7 +603,7 @@ const IOController::USensorInfo& ...@@ -624,7 +603,7 @@ const IOController::USensorInfo&
} }
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
bool IOController::checkIOFilters( const USensorInfo& ai, CORBA::Long& newvalue, bool IOController::checkIOFilters( const USensorInfo& ai, CORBA::Long& newvalue,
UniSetTypes::ObjectId sup_id ) UniSetTypes::ObjectId sup_id )
{ {
for( IOFilterSlotList::iterator it=iofilters.begin(); it!=iofilters.end(); ++it ) for( IOFilterSlotList::iterator it=iofilters.begin(); it!=iofilters.end(); ++it )
...@@ -685,7 +664,7 @@ IOController_i::SensorInfoSeq* IOController::getSensorSeq( const IDSeq& lst ) ...@@ -685,7 +664,7 @@ IOController_i::SensorInfoSeq* IOController::getSensorSeq( const IDSeq& lst )
(*res)[i] = it->second; (*res)[i] = it->second;
continue; continue;
} }
// элемент не найден... // элемент не найден...
(*res)[i].si.id = DefaultObjectId; (*res)[i].si.id = DefaultObjectId;
(*res)[i].si.node = DefaultObjectId; (*res)[i].si.node = DefaultObjectId;
...@@ -734,10 +713,10 @@ IOController_i::ShortIOInfo IOController::getChangedTime( const IOController_i:: ...@@ -734,10 +713,10 @@ IOController_i::ShortIOInfo IOController::getChangedTime( const IOController_i::
// ------------- // -------------
ostringstream err; ostringstream err;
err << myname << "(getChangedTime): вход(выход) с именем " err << myname << "(getChangedTime): вход(выход) с именем "
<< conf->oind->getNameById(si.id) << " не найден"; << conf->oind->getNameById(si.id) << " не найден";
if( ulog.is_info() )
ulog.info() << err.str() << endl; uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -750,7 +729,7 @@ IOController_i::ShortMapSeq* IOController::getSensors() ...@@ -750,7 +729,7 @@ IOController_i::ShortMapSeq* IOController::getSensors()
int i=0; int i=0;
for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it) for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it)
{ {
IOController_i::ShortMap m; IOController_i::ShortMap m;
{ {
uniset_rwmutex_rlock lock(it->second.val_lock); uniset_rwmutex_rlock lock(it->second.val_lock);
...@@ -775,12 +754,10 @@ IOController::ChangeSignal IOController::signal_change_value( UniSetTypes::Objec ...@@ -775,12 +754,10 @@ IOController::ChangeSignal IOController::signal_change_value( UniSetTypes::Objec
if( it==ioList.end() ) if( it==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(signal_change_value): вход(выход) с именем " err << myname << "(signal_change_value): вход(выход) с именем "
<< conf->oind->getNameById(id) << " не найден"; << conf->oind->getNameById(id) << " не найден";
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -804,11 +781,10 @@ IOController::ChangeUndefinedStateSignal IOController::signal_change_undefined_s ...@@ -804,11 +781,10 @@ IOController::ChangeUndefinedStateSignal IOController::signal_change_undefined_s
if( it==ioList.end() ) if( it==ioList.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(signal_change_undefine): вход(выход) с именем " err << myname << "(signal_change_undefine): вход(выход) с именем "
<< conf->oind->getNameById(id) << " не найден"; << conf->oind->getNameById(id) << " не найден";
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
......
...@@ -44,7 +44,7 @@ askIOMutex("askIOMutex"), ...@@ -44,7 +44,7 @@ askIOMutex("askIOMutex"),
trshMutex("trshMutex"), trshMutex("trshMutex"),
maxAttemtps(conf->getPIntField("ConsumerMaxAttempts", 5)) maxAttemtps(conf->getPIntField("ConsumerMaxAttempts", 5))
{ {
} }
IONotifyController::IONotifyController(const string& name, const string& section, NCRestorer* d ): IONotifyController::IONotifyController(const string& name, const string& section, NCRestorer* d ):
...@@ -103,7 +103,7 @@ bool IONotifyController::addConsumer(ConsumerList& lst, const ConsumerInfo& ci ) ...@@ -103,7 +103,7 @@ bool IONotifyController::addConsumer(ConsumerList& lst, const ConsumerInfo& ci )
// ConsumerList::const_iterator it= find_if(lst.begin(), lst.end(), FindCons_eq(ci)); // ConsumerList::const_iterator it= find_if(lst.begin(), lst.end(), FindCons_eq(ci));
// if(it != lst.end() ) // if(it != lst.end() )
// return; // return;
for( ConsumerList::const_iterator it=lst.begin(); it!=lst.end(); ++it) for( ConsumerList::const_iterator it=lst.begin(); it!=lst.end(); ++it)
{ {
if( it->id==ci.id && it->node==ci.node ) if( it->id==ci.id && it->node==ci.node )
return false; return false;
...@@ -117,7 +117,7 @@ bool IONotifyController::addConsumer(ConsumerList& lst, const ConsumerInfo& ci ) ...@@ -117,7 +117,7 @@ bool IONotifyController::addConsumer(ConsumerList& lst, const ConsumerInfo& ci )
cinf.ref = UniSetObject_i::_narrow(op); cinf.ref = UniSetObject_i::_narrow(op);
} }
catch(...){} catch(...){}
lst.push_front(cinf); lst.push_front(cinf);
return true; return true;
} }
...@@ -132,14 +132,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c ...@@ -132,14 +132,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c
{ {
// ConsumerInfo tmp(*li); // ConsumerInfo tmp(*li);
// if( cons == tmp ) // if( cons == tmp )
if( li->id == cons.id && li->node == cons.node ) if( li->id == cons.id && li->node == cons.node )
{ {
lst.erase(li); lst.erase(li);
// ulog.info() << name.c_name() <<": удаляем "<< name << " из списка потребителей" << endl;
return true; return true;
} }
} }
return false; return false;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -148,16 +147,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c ...@@ -148,16 +147,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c
* \param ci - информация о заказчике * \param ci - информация о заказчике
* \param cmd - команда см. UniversalIO::UIOCommand * \param cmd - команда см. UniversalIO::UIOCommand
*/ */
void IONotifyController::askSensor(const IOController_i::SensorInfo& si, void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
const UniSetTypes::ConsumerInfo& ci, UniversalIO::UIOCommand cmd ) const UniSetTypes::ConsumerInfo& ci, UniversalIO::UIOCommand cmd )
{ {
if( ulog.is_info() ) uinfo << "(askSensor): поступил " << ( cmd == UIODontNotify ? "отказ" :"заказ" ) << " от "
{
ulog.info() << "(askSensor): поступил " << ( cmd == UIODontNotify ? "отказ" :"заказ" ) << " от "
<< conf->oind->getNameById(ci.id, ci.node) << conf->oind->getNameById(ci.id, ci.node)
<< " на аналоговый датчик " << " на аналоговый датчик "
<< conf->oind->getNameById(si.id,si.node) << endl; << conf->oind->getNameById(si.id,si.node) << endl;
}
// если такого аналогового датчика нет, здесь сработает исключение... // если такого аналогового датчика нет, здесь сработает исключение...
IOStateList::iterator li = myioEnd(); IOStateList::iterator li = myioEnd();
...@@ -165,11 +161,11 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -165,11 +161,11 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
{ // lock { // lock
uniset_rwmutex_wrlock lock(askIOMutex); uniset_rwmutex_wrlock lock(askIOMutex);
// а раз есть заносим(исключаем) заказчика // а раз есть заносим(исключаем) заказчика
ask( askIOList, si, ci, cmd); ask( askIOList, si, ci, cmd);
} // unlock } // unlock
// посылка первый раз состояния // посылка первый раз состояния
if( cmd==UniversalIO::UIONotify || (cmd==UIONotifyFirstNotNull && li->second.value) ) if( cmd==UniversalIO::UIONotify || (cmd==UIONotifyFirstNotNull && li->second.value) )
{ {
SensorMessage smsg; SensorMessage smsg;
...@@ -177,7 +173,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -177,7 +173,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
smsg.node = si.node; smsg.node = si.node;
smsg.consumer = ci.id; smsg.consumer = ci.id;
smsg.supplier = getId(); smsg.supplier = getId();
smsg.sensor_type= li->second.type; smsg.sensor_type= li->second.type;
smsg.priority = (Message::Priority)li->second.priority; smsg.priority = (Message::Priority)li->second.priority;
smsg.sm_tv_sec = li->second.tv_sec; smsg.sm_tv_sec = li->second.tv_sec;
smsg.sm_tv_usec = li->second.tv_usec; smsg.sm_tv_usec = li->second.tv_usec;
...@@ -189,7 +185,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -189,7 +185,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
smsg.sm_tv_sec = li->second.tv_sec; smsg.sm_tv_sec = li->second.tv_sec;
smsg.sm_tv_usec = li->second.tv_usec; smsg.sm_tv_usec = li->second.tv_usec;
} }
TransportMessage tm(smsg.transport_msg()); TransportMessage tm(smsg.transport_msg());
try try
{ {
...@@ -197,21 +193,18 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -197,21 +193,18 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
ulog.warn() << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_warn() ) uwarn << myname << "(askSensor): " << conf->oind->getNameById(ci.id, ci.node)
ulog.warn() << conf->oind->getNameById(ci.id, ci.node) << " недоступен!!(CORBA::SystemException): "
<< " недоступен!!(CORBA::SystemException): " << ex.NP_minorString() << endl;
<< ex.NP_minorString() << endl; }
}
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askSensor): " << conf->oind->getNameById(ci.id, ci.node)
ulog.warn() << conf->oind->getNameById(ci.id, ci.node) << " catch..." << endl;
<< " catch..." << endl;
} }
} }
} }
...@@ -220,7 +213,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si, ...@@ -220,7 +213,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& si, void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& si,
const UniSetTypes::ConsumerInfo& cons, UniversalIO::UIOCommand cmd) const UniSetTypes::ConsumerInfo& cons, UniversalIO::UIOCommand cmd)
{ {
// поиск датчика в списке // поиск датчика в списке
UniSetTypes::KeyType k( key(si.id,si.node) ); UniSetTypes::KeyType k( key(si.id,si.node) );
AskMap::iterator askIterator = askLst.find(k); AskMap::iterator askIterator = askLst.find(k);
...@@ -230,26 +223,24 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -230,26 +223,24 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
case UniversalIO::UIONotifyChange: case UniversalIO::UIONotifyChange:
case UniversalIO::UIONotifyFirstNotNull: case UniversalIO::UIONotifyFirstNotNull:
{ {
if( askIterator==askLst.end() ) if( askIterator==askLst.end() )
{ {
ConsumerList lst; // создаем новый список ConsumerList lst; // создаем новый список
addConsumer(lst,cons); addConsumer(lst,cons);
// более оптимальный способ(при условии вставки первый раз) // askLst[key]=lst; // более оптимальный способ(при условии вставки первый раз) // askLst[key]=lst;
askLst.insert(AskMap::value_type(k,lst)); askLst.insert(AskMap::value_type(k,lst));
try try
{ {
dumpOrdersList(si,lst); dumpOrdersList(si,lst);
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump: " << ex << endl;
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump (catch...)" << endl;
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
else else
...@@ -262,13 +253,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -262,13 +253,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump: " << ex << endl;
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump (catch...)" << endl;
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
} }
...@@ -282,7 +271,7 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -282,7 +271,7 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
if( removeConsumer(askIterator->second, cons) ) if( removeConsumer(askIterator->second, cons) )
{ {
if( askIterator->second.empty() ) if( askIterator->second.empty() )
askLst.erase(askIterator); askLst.erase(askIterator);
else else
{ {
try try
...@@ -291,13 +280,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -291,13 +280,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump: " << ex << endl;
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump (catch...)" << endl;
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
} }
} }
} }
...@@ -310,17 +297,17 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s ...@@ -310,17 +297,17 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool IONotifyController::myIOFilter( const USensorInfo& ai, bool IONotifyController::myIOFilter( const USensorInfo& ai,
CORBA::Long newvalue, UniSetTypes::ObjectId sup_id ) CORBA::Long newvalue, UniSetTypes::ObjectId sup_id )
{ {
if( ai.value == newvalue ) if( ai.value == newvalue )
return false; return false;
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void IONotifyController::localSetValue( IOController::IOStateList::iterator& li, void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si, const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id ) CORBA::Long value, UniSetTypes::ObjectId sup_id )
{ {
// Если датчик не найден сдесь сработает исключение // Если датчик не найден сдесь сработает исключение
...@@ -328,11 +315,10 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li, ...@@ -328,11 +315,10 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
if( li == myioEnd() ) // ??? if( li == myioEnd() ) // ???
{ {
ostringstream err; ostringstream err;
err << myname << "(localSetValue): вход(выход) с именем " err << myname << "(localSetValue): вход(выход) с именем "
<< conf->oind->getNameById(si.id) << " не найден"; << conf->oind->getNameById(si.id) << " не найден";
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -347,7 +333,7 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li, ...@@ -347,7 +333,7 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
if( prevValue == li->second.value ) if( prevValue == li->second.value )
return; return;
// Рассылаем уведомления только в слуае изменения значения // Рассылаем уведомления только в слуае изменения значения
sm.id = si.id; sm.id = si.id;
sm.node = si.node; sm.node = si.node;
...@@ -362,12 +348,12 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li, ...@@ -362,12 +348,12 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
} // unlock } // unlock
try try
{ {
if( !li->second.dbignore ) if( !li->second.dbignore )
loggingInfo(sm); loggingInfo(sm);
} }
catch(...){} catch(...){}
AskMap::iterator it = askIOList.find( key(si.id,si.node) ); AskMap::iterator it = askIOList.find( key(si.id,si.node) );
if( it!=askIOList.end() ) if( it!=askIOList.end() )
{ // lock { // lock
...@@ -409,21 +395,18 @@ void IONotifyController::send(ConsumerList& lst, UniSetTypes::SensorMessage& sm) ...@@ -409,21 +395,18 @@ void IONotifyController::send(ConsumerList& lst, UniSetTypes::SensorMessage& sm)
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(IONotifyController::send): " << ex
ulog.warn() << myname << "(IONotifyController::send): " << ex
<< " for " << conf->oind->getNameById(li->id, li->node) << endl; << " for " << conf->oind->getNameById(li->id, li->node) << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_warn() ) uwarn << myname << "(IONotifyController::send): "
ulog.warn() << myname << "(IONotifyController::send): "
<< conf->oind->getNameById(li->id, li->node) << " (CORBA::SystemException): " << conf->oind->getNameById(li->id, li->node) << " (CORBA::SystemException): "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_crit() ) ucrit << myname << "(IONotifyController::send): "
ulog.crit() << myname << "(IONotifyController::send): "
<< conf->oind->getNameById(li->id, li->node) << conf->oind->getNameById(li->id, li->node)
<< " catch..." << endl; << " catch..." << endl;
} }
...@@ -462,9 +445,8 @@ void IONotifyController::readDump() ...@@ -462,9 +445,8 @@ void IONotifyController::readDump()
restorer->read(this); restorer->read(this);
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(IONotifyController::readDump): " << ex << endl;
ulog.warn() << myname << "(IONotifyController::readDump): " << ex << endl;
} }
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
...@@ -490,9 +472,8 @@ void IONotifyController::dumpOrdersList(const IOController_i::SensorInfo& si, ...@@ -490,9 +472,8 @@ void IONotifyController::dumpOrdersList(const IOController_i::SensorInfo& si,
restorer->dump(this,inf,lst); restorer->dump(this,inf,lst);
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(IONotifyController::dumpOrderList): " << ex << endl;
ulog.warn() << myname << "(IONotifyController::dumpOrderList): " << ex << endl;
} }
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
...@@ -510,16 +491,15 @@ void IONotifyController::dumpThresholdList(const IOController_i::SensorInfo& si, ...@@ -510,16 +491,15 @@ void IONotifyController::dumpThresholdList(const IOController_i::SensorInfo& si,
restorer->dumpThreshold(this,inf,lst); restorer->dumpThreshold(this,inf,lst);
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(IONotifyController::dumpThresholdList): " << ex << endl;
ulog.warn() << myname << "(IONotifyController::dumpThresholdList): " << ex << endl;
} }
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, const UniSetTypes::ConsumerInfo& ci, void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, const UniSetTypes::ConsumerInfo& ci,
UniSetTypes::ThresholdId tid, UniSetTypes::ThresholdId tid,
CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Boolean invert, CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Boolean invert,
UniversalIO::UIOCommand cmd ) UniversalIO::UIOCommand cmd )
{ {
if( lowLimit > hiLimit ) if( lowLimit > hiLimit )
...@@ -532,7 +512,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -532,7 +512,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
{ // lock { // lock
uniset_rwmutex_wrlock lock(trshMutex); uniset_rwmutex_wrlock lock(trshMutex);
// поиск датчика в списке // поиск датчика в списке
UniSetTypes::KeyType skey( key(si.id,si.node) ); UniSetTypes::KeyType skey( key(si.id,si.node) );
AskThresholdMap::iterator it = askTMap.find(skey); AskThresholdMap::iterator it = askTMap.find(skey);
ThresholdInfoExt ti(tid,lowLimit,hiLimit,invert); ThresholdInfoExt ti(tid,lowLimit,hiLimit,invert);
...@@ -543,7 +523,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -543,7 +523,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
case UniversalIO::UIONotify: // заказ case UniversalIO::UIONotify: // заказ
case UniversalIO::UIONotifyChange: case UniversalIO::UIONotifyChange:
{ {
if( it==askTMap.end() ) if( it==askTMap.end() )
{ {
ThresholdExtList lst; // создаем новый список ThresholdExtList lst; // создаем новый список
ThresholdsListInfo tli; ThresholdsListInfo tli;
...@@ -559,13 +539,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -559,13 +539,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump: " << ex << endl;
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << " не смогли сделать dump" << endl;
ulog.warn() << myname << " не смогли сделать dump" << endl;
} }
} }
else else
...@@ -578,13 +556,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -578,13 +556,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshold): dump: " << ex << endl;
ulog.warn() << myname << "(askThreshold): dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshold): dump catch..." << endl;
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
} }
} }
} }
...@@ -592,7 +568,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -592,7 +568,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
if( cmd == UniversalIO::UIONotifyChange ) if( cmd == UniversalIO::UIONotifyChange )
break; break;
// посылка первый раз состояния // посылка первый раз состояния
try try
{ {
SensorMessage sm; SensorMessage sm;
...@@ -612,7 +588,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -612,7 +588,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
if( val <= lowLimit ) if( val <= lowLimit )
{ {
sm.threshold = false; sm.threshold = false;
CORBA::Object_var op = ui.resolve(ci.id, ci.node); CORBA::Object_var op = ui.resolve(ci.id, ci.node);
UniSetObject_i_var ref = UniSetObject_i::_narrow(op); UniSetObject_i_var ref = UniSetObject_i::_narrow(op);
if(!CORBA::is_nil(ref)) if(!CORBA::is_nil(ref))
ref->push(sm.transport_msg()); ref->push(sm.transport_msg());
...@@ -629,19 +605,16 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -629,19 +605,16 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshod): " << ex << endl;
ulog.warn() << myname << "(askThreshod): " << ex << endl;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshod): CORBA::SystemException: "
ulog.warn() << myname << "(askThreshod): CORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshold): dump catch..." << endl;
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
} }
} }
break; break;
...@@ -658,13 +631,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -658,13 +631,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshold): dump: " << ex << endl;
ulog.warn() << myname << "(askThreshold): dump: " << ex << endl;
} }
catch(...) catch(...)
{ {
if( ulog.is_warn() ) uwarn << myname << "(askThreshold): dump catch..." << endl;
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
} }
} }
} }
...@@ -676,11 +647,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons ...@@ -676,11 +647,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
} }
} // unlock } // unlock
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
bool IONotifyController::addThreshold(ThresholdExtList& lst, ThresholdInfoExt& ti, const UniSetTypes::ConsumerInfo& ci) bool IONotifyController::addThreshold(ThresholdExtList& lst, ThresholdInfoExt& ti, const UniSetTypes::ConsumerInfo& ci)
{ {
for( ThresholdExtList::iterator it=lst.begin(); it!=lst.end(); ++it) for( ThresholdExtList::iterator it=lst.begin(); it!=lst.end(); ++it)
{ {
if( ti==(*it) ) if( ti==(*it) )
{ {
...@@ -709,7 +680,7 @@ bool IONotifyController::addThreshold(ThresholdExtList& lst, ThresholdInfoExt& t ...@@ -709,7 +680,7 @@ bool IONotifyController::addThreshold(ThresholdExtList& lst, ThresholdInfoExt& t
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
bool IONotifyController::removeThreshold( ThresholdExtList& lst, ThresholdInfoExt& ti, const UniSetTypes::ConsumerInfo& ci ) bool IONotifyController::removeThreshold( ThresholdExtList& lst, ThresholdInfoExt& ti, const UniSetTypes::ConsumerInfo& ci )
{ {
for( ThresholdExtList::iterator it=lst.begin(); it!=lst.end(); ++it) for( ThresholdExtList::iterator it=lst.begin(); it!=lst.end(); ++it)
{ {
if( ti == (*it) ) if( ti == (*it) )
{ {
...@@ -725,8 +696,8 @@ bool IONotifyController::removeThreshold( ThresholdExtList& lst, ThresholdInfoEx ...@@ -725,8 +696,8 @@ bool IONotifyController::removeThreshold( ThresholdExtList& lst, ThresholdInfoEx
return false; return false;
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
void IONotifyController::checkThreshold( IOStateList::iterator& li, void IONotifyController::checkThreshold( IOStateList::iterator& li,
const IOController_i::SensorInfo& si, const IOController_i::SensorInfo& si,
bool send_msg ) bool send_msg )
{ {
{ // lock { // lock
...@@ -767,7 +738,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li, ...@@ -767,7 +738,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
tm.tv_sec = 0; tm.tv_usec = 0; tm.tv_sec = 0; tm.tv_usec = 0;
gettimeofday(&tm,&tz); gettimeofday(&tm,&tz);
for( ThresholdExtList::iterator it=lst->second.list.begin(); it!=lst->second.list.end(); ++it) for( ThresholdExtList::iterator it=lst->second.list.begin(); it!=lst->second.list.end(); ++it)
{ {
// Используем здесь sm.value чтобы не делать ещё раз lock на li->second.value // Используем здесь sm.value чтобы не делать ещё раз lock на li->second.value
...@@ -789,11 +760,11 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li, ...@@ -789,11 +760,11 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
else if( sm.value <= it->lowlimit ) else if( sm.value <= it->lowlimit )
state = IONotifyController_i::LowThreshold; state = IONotifyController_i::LowThreshold;
} }
// если ничего не менялось.. // если ничего не менялось..
if( it->state == state ) if( it->state == state )
continue; continue;
it->state = state; it->state = state;
sm.tid = it->id; sm.tid = it->id;
...@@ -801,7 +772,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li, ...@@ -801,7 +772,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
// если состояние не normal, значит порог сработал, // если состояние не normal, значит порог сработал,
// не важно какой.. нижний или верхний (зависит от inverse) // не важно какой.. нижний или верхний (зависит от inverse)
sm.threshold = ( state != IONotifyController_i::NormalThreshold ) ? true : false; sm.threshold = ( state != IONotifyController_i::NormalThreshold ) ? true : false;
// запоминаем время изменения состояния // запоминаем время изменения состояния
it->tv_sec = tm.tv_sec; it->tv_sec = tm.tv_sec;
it->tv_usec = tm.tv_usec; it->tv_usec = tm.tv_usec;
...@@ -817,8 +788,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li, ...@@ -817,8 +788,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
} }
catch( UniSetTypes::Exception& ex ) catch( UniSetTypes::Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << myname << "(checkThreshold): " << ex << endl;
ulog.crit() << myname << "(checkThreshold): " << ex << endl;
} }
} }
...@@ -839,14 +809,14 @@ IONotifyController::ThresholdExtList::iterator IONotifyController::findThreshold ...@@ -839,14 +809,14 @@ IONotifyController::ThresholdExtList::iterator IONotifyController::findThreshold
if( lst!=askTMap.end() ) if( lst!=askTMap.end() )
{ {
for( ThresholdExtList::iterator it=lst->second.list.begin(); it!=lst->second.list.end(); ++it) for( ThresholdExtList::iterator it=lst->second.list.begin(); it!=lst->second.list.end(); ++it)
{ {
if( it->id == tid ) if( it->id == tid )
return it; return it;
} }
} }
} }
ThresholdExtList::iterator it; ThresholdExtList::iterator it;
return it; return it;
} }
...@@ -860,12 +830,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const ...@@ -860,12 +830,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const
if( it == askTMap.end() ) if( it == askTMap.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(getThresholds): Not found sensor (" << si.id << ":" << si.node << ") " err << myname << "(getThresholds): Not found sensor (" << si.id << ":" << si.node << ") "
<< conf->oind->getNameById(si.id); << conf->oind->getNameById(si.id);
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -876,12 +844,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const ...@@ -876,12 +844,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const
} }
ostringstream err; ostringstream err;
err << myname << "(getThresholds): Not found for sensor (" << si.id << ":" << si.node << ") " err << myname << "(getThresholds): Not found for sensor (" << si.id << ":" << si.node << ") "
<< conf->oind->getNameById(si.id) << " ThresholdID='" << tid << "'"; << conf->oind->getNameById(si.id) << " ThresholdID='" << tid << "'";
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
...@@ -893,12 +859,10 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO ...@@ -893,12 +859,10 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
if( it == askTMap.end() ) if( it == askTMap.end() )
{ {
ostringstream err; ostringstream err;
err << myname << "(getThresholds): Not found sensor (" << si.id << ":" << si.node << ") " err << myname << "(getThresholds): Not found sensor (" << si.id << ":" << si.node << ") "
<< conf->oind->getNameById(si.id); << conf->oind->getNameById(si.id);
if( ulog.is_info() ) uinfo << err.str() << endl;
ulog.info() << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str()); throw IOController_i::NameNotFound(err.str().c_str());
} }
...@@ -912,8 +876,7 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO ...@@ -912,8 +876,7 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_warn() ) uwarn << myname << "(getThresholdsList): для датчика "
ulog.warn() << myname << "(getThresholdsList): для датчика "
<< conf->oind->getNameById(it->second.si.id, it->second.si.node) << conf->oind->getNameById(it->second.si.id, it->second.si.node)
<< " " << ex << endl; << " " << ex << endl;
} }
...@@ -937,8 +900,6 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO ...@@ -937,8 +900,6 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList() IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList()
{ {
// ulog.info() << myname << "(getThresholdsList): ...\n";
IONotifyController_i::ThresholdsListSeq* res = new IONotifyController_i::ThresholdsListSeq(); IONotifyController_i::ThresholdsListSeq* res = new IONotifyController_i::ThresholdsListSeq();
res->length( askTMap.size() ); res->length( askTMap.size() );
...@@ -956,8 +917,7 @@ IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList() ...@@ -956,8 +917,7 @@ IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList()
} }
catch(Exception& ex) catch(Exception& ex)
{ {
if( ulog.is_warn() ) uwarn << myname << "(getThresholdsList): для датчика "
ulog.warn() << myname << "(getThresholdsList): для датчика "
<< conf->oind->getNameById(it->second.si.id, it->second.si.node) << conf->oind->getNameById(it->second.si.id, it->second.si.node)
<< " " << ex << endl; << " " << ex << endl;
continue; continue;
...@@ -989,7 +949,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC ...@@ -989,7 +949,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
SensorMessage sm; SensorMessage sm;
// эти поля можно копировать без lock, т.к. они не меняются // эти поля можно копировать без lock, т.к. они не меняются
sm.id = it.si.id; sm.id = it.si.id;
sm.node = it.si.node; sm.node = it.si.node;
sm.undefined = it.undefined; sm.undefined = it.undefined;
sm.priority = (Message::Priority)it.priority; sm.priority = (Message::Priority)it.priority;
...@@ -1005,7 +965,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC ...@@ -1005,7 +965,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
} // unlock } // unlock
try try
{ {
if( !it.dbignore ) if( !it.dbignore )
loggingInfo(sm); loggingInfo(sm);
} }
...@@ -1014,7 +974,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC ...@@ -1014,7 +974,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
AskMap::iterator it1 = askIOList.find( key(it.si.id,it.si.node) ); AskMap::iterator it1 = askIOList.find( key(it.si.id,it.si.node) );
if( it1!=askIOList.end() ) if( it1!=askIOList.end() )
{ // lock { // lock
uniset_rwmutex_rlock lock(askIOMutex); uniset_rwmutex_rlock lock(askIOMutex);
send(it1->second, sm); send(it1->second, sm);
} // unlock } // unlock
} }
...@@ -1025,7 +985,7 @@ IDSeq* IONotifyController::askSensorsSeq( const UniSetTypes::IDSeq& lst, ...@@ -1025,7 +985,7 @@ IDSeq* IONotifyController::askSensorsSeq( const UniSetTypes::IDSeq& lst,
UniversalIO::UIOCommand cmd) UniversalIO::UIOCommand cmd)
{ {
UniSetTypes::IDList badlist; // cписок не найденных идентификаторов UniSetTypes::IDList badlist; // cписок не найденных идентификаторов
IOController_i::SensorInfo si; IOController_i::SensorInfo si;
int size = lst.length(); int size = lst.length();
......
...@@ -60,9 +60,9 @@ void IONotifyController_LT::callback() ...@@ -60,9 +60,9 @@ void IONotifyController_LT::callback()
sleepTime=lt.checkTimers(this); sleepTime=lt.checkTimers(this);
} }
catch(Exception& ex) catch( Exception& ex )
{ {
ulog.crit() << myname << "(callback): " << ex << endl; ucrit << myname << "(callback): " << ex << endl;
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include "Debug.h" #include "Debug.h"
#include "Configuration.h" #include "Configuration.h"
...@@ -44,7 +44,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController ...@@ -44,7 +44,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
{ {
UniSetTypes::KeyType k( key(inf.si.id,inf.si.node) ); UniSetTypes::KeyType k( key(inf.si.id,inf.si.node) );
// Проверка зарегистрирован-ли данный датчик // Проверка зарегистрирован-ли данный датчик
// если такого дискретного датчика нет, то здесь сработает исключение... // если такого дискретного датчика нет, то здесь сработает исключение...
if( !force ) if( !force )
{ {
...@@ -63,18 +63,17 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController ...@@ -63,18 +63,17 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
case UniversalIO::AO: case UniversalIO::AO:
ic->ioRegistration(inf); ic->ioRegistration(inf);
break; break;
default: default:
if( ulog.is_crit() ) ucrit << ic->getName() << "(askDumper::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА! -> "
ulog.crit() << ic->getName() << "(askDumper::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА! -> "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl; << conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
return; return;
break; break;
} }
} }
} }
switch(inf.type) switch(inf.type)
{ {
case UniversalIO::DI: case UniversalIO::DI:
...@@ -85,8 +84,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController ...@@ -85,8 +84,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
break; break;
default: default:
if( ulog.is_crit() ) ucrit << ic->getName() << "(NCRestorer::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА!-> "
ulog.crit() << ic->getName() << "(NCRestorer::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА!-> "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl; << conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
break; break;
} }
...@@ -94,7 +92,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController ...@@ -94,7 +92,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyController::ThresholdExtList& lst, bool force ) void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyController::ThresholdExtList& lst, bool force )
{ {
// Проверка зарегистрирован-ли данный датчик // Проверка зарегистрирован-ли данный датчик
// если такого дискретного датчика нет сдесь сработает исключение... // если такого дискретного датчика нет сдесь сработает исключение...
if( !force ) if( !force )
{ {
...@@ -154,15 +152,13 @@ void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyC ...@@ -154,15 +152,13 @@ void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyC
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
if( ulog.is_warn() ) uwarn << ic->getName() << "(NCRestorer::addthresholdlist): " << ex
ulog.warn() << ic->getName() << "(NCRestorer::addthresholdlist): " << ex
<< " для " << conf->oind->getNameById(inf.si.id, inf.si.node) << endl; << " для " << conf->oind->getNameById(inf.si.id, inf.si.node) << endl;
throw; throw;
} }
catch( CORBA::SystemException& ex ) catch( CORBA::SystemException& ex )
{ {
if( ulog.is_warn() ) uwarn << ic->getName() << "(NCRestorer::addthresholdlist): "
ulog.warn() << ic->getName() << "(NCRestorer::addthresholdlist): "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << " недоступен!!(CORBA::SystemException): " << conf->oind->getNameById(inf.si.id,inf.si.node) << " недоступен!!(CORBA::SystemException): "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
throw; throw;
...@@ -198,14 +194,13 @@ void NCRestorer::init_depends_signals( IONotifyController* ic ) ...@@ -198,14 +194,13 @@ void NCRestorer::init_depends_signals( IONotifyController* ic )
if( it->second.d_si.id == DefaultObjectId ) if( it->second.d_si.id == DefaultObjectId )
continue; continue;
if( ulog.is_info() ) uinfo << ic->getName() << "(NCRestorer::init_depends_signals): "
ulog.info() << ic->getName() << "(NCRestorer::init_depends_signals): "
<< " init depend: '" << conf->oind->getMapName(it->second.si.id) << "'" << " init depend: '" << conf->oind->getMapName(it->second.si.id) << "'"
<< " dep_name=(" << it->second.d_si.id << ")'" << conf->oind->getMapName(it->second.d_si.id) << "'" << " dep_name=(" << it->second.d_si.id << ")'" << conf->oind->getMapName(it->second.d_si.id) << "'"
<< endl; << endl;
IOController::ChangeSignal s = ic->signal_change_value(it->second.d_si); IOController::ChangeSignal s = ic->signal_change_value(it->second.d_si);
s.connect( sigc::mem_fun( &it->second, &IOController::USensorInfo::checkDepend) ); s.connect( sigc::mem_fun( &it->second, &IOController::USensorInfo::checkDepend) );
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
/*! \file /*! \file
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <sstream> #include <sstream>
#include "Debug.h" #include "Debug.h"
#include "Configuration.h" #include "Configuration.h"
...@@ -44,8 +44,8 @@ fname(fname) ...@@ -44,8 +44,8 @@ fname(fname)
init(fname); init(fname);
} }
NCRestorer_XML::NCRestorer_XML(const string& fname, NCRestorer_XML::NCRestorer_XML(const string& fname,
const std::string& f_field, const std::string& f_field,
const std::string& f_value): const std::string& f_value):
s_filterField(f_field), s_filterField(f_field),
s_filterValue(f_value), s_filterValue(f_value),
...@@ -78,8 +78,8 @@ NCRestorer_XML::~NCRestorer_XML() ...@@ -78,8 +78,8 @@ NCRestorer_XML::~NCRestorer_XML()
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer_XML::init( const std::string& fname ) void NCRestorer_XML::init( const std::string& fname )
{ {
/*! /*!
\warning Файл открывается только при создании... \warning Файл открывается только при создании...
Т.е. не будут учтены изменения в промежутке между записью(dump-а) файла Т.е. не будут учтены изменения в промежутке между записью(dump-а) файла
*/ */
try try
...@@ -89,24 +89,22 @@ void NCRestorer_XML::init( const std::string& fname ) ...@@ -89,24 +89,22 @@ void NCRestorer_XML::init( const std::string& fname )
else else
uxml = new UniXML(fname); uxml = new UniXML(fname);
} }
catch(UniSetTypes::NameNotFound& ex) catch( UniSetTypes::NameNotFound& ex )
{ {
ulog.warn() << "(NCRestorer_XML): файл " << fname << " не найден, создаём новый...\n"; uwarn << "(NCRestorer_XML): файл " << fname << " не найден, создаём новый...\n";
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer_XML::dump(IONotifyController* ic, SInfo& inf, void NCRestorer_XML::dump(IONotifyController* ic, SInfo& inf,
const IONotifyController::ConsumerList& lst) const IONotifyController::ConsumerList& lst)
{ {
if( ulog.is_warn() ) uwarn << "NCRestorer_XML::dump NOT SUPPORT!!!!" << endl;
ulog.warn() << "NCRestorer_XML::dump NOT SUPPORT!!!!" << endl;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer_XML::dumpThreshold(IONotifyController* ic, SInfo& inf, void NCRestorer_XML::dumpThreshold(IONotifyController* ic, SInfo& inf,
const IONotifyController::ThresholdExtList& lst) const IONotifyController::ThresholdExtList& lst)
{ {
if( ulog.is_warn() ) uwarn << "NCRestorer_XML::dumpThreshold NOT SUPPORT!!!!" << endl;
ulog.warn() << "NCRestorer_XML::dumpThreshold NOT SUPPORT!!!!" << endl;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController* ic ) void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController* ic )
...@@ -124,8 +122,7 @@ void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController* ...@@ -124,8 +122,7 @@ void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController*
if( !getSensorInfo(xml,it,inf) ) if( !getSensorInfo(xml,it,inf) )
{ {
if( ulog.is_warn() ) uwarn << ic->getName() << "(read_list): не смог получить информацию по датчику " << endl;
ulog.warn() << ic->getName() << "(read_list): не смог получить информацию по датчику " << endl;
continue; continue;
} }
...@@ -149,7 +146,7 @@ void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController* ...@@ -149,7 +146,7 @@ void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController*
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.warn() << "(read_list): " << ex << endl; uwarn << "(read_list): " << ex << endl;
} }
} }
break; break;
...@@ -198,7 +195,7 @@ void NCRestorer_XML::read( IONotifyController* ic, const string& fn ) ...@@ -198,7 +195,7 @@ void NCRestorer_XML::read( IONotifyController* ic, const string& fn )
void NCRestorer_XML::read( IONotifyController* ic, UniXML& xml ) void NCRestorer_XML::read( IONotifyController* ic, UniXML& xml )
{ {
xmlNode* node; xmlNode* node;
if( (&xml) == conf->getConfXML() ) if( (&xml) == conf->getConfXML() )
node = conf->getXMLSensorsSection(); node = conf->getXMLSensorsSection();
else else
...@@ -223,8 +220,7 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens ...@@ -223,8 +220,7 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
string sname( xml.getProp(it,"name")); string sname( xml.getProp(it,"name"));
if( sname.empty() ) if( sname.empty() )
{ {
if( ulog.is_warn() ) uwarn << "(getBaseInfo): не указано имя датчика... пропускаем..." << endl;
ulog.warn() << "(getBaseInfo): не указано имя датчика... пропускаем..." << endl;
return false; return false;
} }
...@@ -239,11 +235,10 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens ...@@ -239,11 +235,10 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
if( sid == UniSetTypes::DefaultObjectId ) if( sid == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname << endl;
ulog.crit() << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname << endl;
return false; return false;
} }
ObjectId snode = conf->getLocalNode(); ObjectId snode = conf->getLocalNode();
string snodename(xml.getProp(it,"node")); string snodename(xml.getProp(it,"node"));
if( !snodename.empty() ) if( !snodename.empty() )
...@@ -251,14 +246,13 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens ...@@ -251,14 +246,13 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
if( snode == UniSetTypes::DefaultObjectId ) if( snode == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла --> " << snodename << endl;
ulog.crit() << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла --> " << snodename << endl;
return false; return false;
} }
si.id = sid; si.id = sid;
si.node = snode; si.node = snode;
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf ) bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf )
...@@ -282,7 +276,7 @@ bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf ) ...@@ -282,7 +276,7 @@ bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf )
inf.type = UniSetTypes::getIOType(xml.getProp(it,"iotype")); inf.type = UniSetTypes::getIOType(xml.getProp(it,"iotype"));
if( inf.type == UniversalIO::UnknownIOType ) if( inf.type == UniversalIO::UnknownIOType )
{ {
ulog.crit() << "(NCRestorer_XML:getSensorInfo): unknown iotype=" << xml.getProp(it,"iotype") ucrit << "(NCRestorer_XML:getSensorInfo): unknown iotype=" << xml.getProp(it,"iotype")
<< " for " << xml.getProp(it,"name") << endl; << " for " << xml.getProp(it,"name") << endl;
return false; return false;
} }
...@@ -317,8 +311,7 @@ bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf ) ...@@ -317,8 +311,7 @@ bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf )
inf.d_si.id = conf->getSensorID(d_txt); inf.d_si.id = conf->getSensorID(d_txt);
if( inf.d_si.id == UniSetTypes::DefaultObjectId ) if( inf.d_si.id == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "(NCRestorer_XML:getSensorInfo): sensor='"
ulog.crit() << "(NCRestorer_XML:getSensorInfo): sensor='"
<< xml.getProp(it,"name") << "' err: " << xml.getProp(it,"name") << "' err: "
<< " Unknown SensorID for depend='" << d_txt << " Unknown SensorID for depend='" << d_txt
<< endl; << endl;
...@@ -349,17 +342,12 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl ...@@ -349,17 +342,12 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
NCRestorer_XML::SInfo inf; NCRestorer_XML::SInfo inf;
if( !getSensorInfo(xml,it.getCurrent(),inf) ) if( !getSensorInfo(xml,it.getCurrent(),inf) )
{ {
ulog.warn() << ic->getName() uwarn << ic->getName()
<< "(read_thresholds): не смог получить информацию по датчику" << endl; << "(read_thresholds): не смог получить информацию по датчику" << endl;
continue; continue;
} }
if( ulog.is_info() ) uinfo << ic->getName() << "(read_thresholds): " << it.getProp("name") << endl;
{
ulog.info() << ic->getName() << "(read_thresholds): "
<< it.getProp("name") << endl;
// conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
}
UniXML_iterator tit(it); UniXML_iterator tit(it);
if( !tit.goChildren() ) if( !tit.goChildren() )
...@@ -371,21 +359,18 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl ...@@ -371,21 +359,18 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
IONotifyController::ThresholdInfoExt ti(0,0,0,0); IONotifyController::ThresholdInfoExt ti(0,0,0,0);
if( !getThresholdInfo(xml,tit,ti) ) if( !getThresholdInfo(xml,tit,ti) )
{ {
ulog.warn() << ic->getName() uwarn << ic->getName()
<< "(read_thresholds): не смог получить информацию о пороге" << "(read_thresholds): не смог получить информацию о пороге"
<< " для датчика " << " для датчика "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl; << conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
continue; continue;
} }
if( ulog.is_info() ) uinfo << "(read_thresholds): \tthreshold low="
{ << ti.lowlimit << " \thi=" << ti.hilimit
ulog.info() << "(read_thresholds): \tthreshold low=" << " \t sid=" << ti.sid
<< ti.lowlimit << " \thi=" << ti.hilimit << " \t invert=" << ti.invert
<< " \t sid=" << ti.sid << endl << flush;
<< " \t invert=" << ti.invert
<< endl << flush;
}
xmlNode* cnode = find_node(xml,tit,"consumers",""); xmlNode* cnode = find_node(xml,tit,"consumers","");
if( cnode ) if( cnode )
...@@ -395,9 +380,9 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl ...@@ -395,9 +380,9 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
{ {
if( !getConsumerList(xml,ask_it,ti.clst) ) if( !getConsumerList(xml,ask_it,ti.clst) )
{ {
ulog.warn() << ic->getName() uwarn << ic->getName()
<< "(read_thresholds): не смог получить список заказчиков" << "(read_thresholds): не смог получить список заказчиков"
<< " для порога " << ti.id << " для порога " << ti.id
<< " датчика " << conf->oind->getNameById(inf.si.id,inf.si.node) << endl; << " датчика " << conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
} }
} }
...@@ -413,7 +398,7 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl ...@@ -413,7 +398,7 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void NCRestorer_XML::read_consumers( UniXML& xml, xmlNode* it, void NCRestorer_XML::read_consumers( UniXML& xml, xmlNode* it,
NCRestorer_XML::SInfo& inf, IONotifyController* ic ) NCRestorer_XML::SInfo& inf, IONotifyController* ic )
{ {
// в новых ask-файлах список выделен <consumers>...</consumers>, // в новых ask-файлах список выделен <consumers>...</consumers>,
...@@ -431,7 +416,7 @@ void NCRestorer_XML::read_consumers( UniXML& xml, xmlNode* it, ...@@ -431,7 +416,7 @@ void NCRestorer_XML::read_consumers( UniXML& xml, xmlNode* it,
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node, bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node,
IONotifyController::ConsumerList& lst ) IONotifyController::ConsumerList& lst )
{ {
UniXML_iterator it(node); UniXML_iterator it(node);
...@@ -453,7 +438,7 @@ bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node, ...@@ -453,7 +438,7 @@ bool NCRestorer_XML::getConsumerList( UniXML& xml,xmlNode* node,
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node, bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
IONotifyController::ThresholdInfoExt& ti ) IONotifyController::ThresholdInfoExt& ti )
{ {
UniXML_iterator uit(node); UniXML_iterator uit(node);
...@@ -464,7 +449,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node, ...@@ -464,7 +449,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
ti.sid = conf->getSensorID(sid_name); ti.sid = conf->getSensorID(sid_name);
if( ti.sid == UniSetTypes::DefaultObjectId ) if( ti.sid == UniSetTypes::DefaultObjectId )
{ {
ulog.crit() << "(NCRestorer_XML:getThresholdInfo): " ucrit << "(NCRestorer_XML:getThresholdInfo): "
<< " Not found ID for " << sid_name << endl; << " Not found ID for " << sid_name << endl;
} }
else else
...@@ -473,7 +458,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node, ...@@ -473,7 +458,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
// Пока что IONotifyController поддерживает работу только с 'DI'. // Пока что IONotifyController поддерживает работу только с 'DI'.
if( iotype != UniversalIO::DI ) if( iotype != UniversalIO::DI )
{ {
ulog.crit() << "(NCRestorer_XML:getThresholdInfo): " ucrit << "(NCRestorer_XML:getThresholdInfo): "
<< " Bad iotype(" << iotype << ") for " << sid_name << ". iotype must be 'DI'!" << endl; << " Bad iotype(" << iotype << ") for " << sid_name << ". iotype must be 'DI'!" << endl;
return false; return false;
} }
...@@ -490,7 +475,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node, ...@@ -490,7 +475,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool NCRestorer_XML::check_thresholds_item( UniXML_iterator& it ) bool NCRestorer_XML::check_thresholds_item( UniXML_iterator& it )
{ {
return UniSetTypes::check_filter(it,t_filterField,t_filterValue); return UniSetTypes::check_filter(it,t_filterField,t_filterValue);
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -159,8 +159,7 @@ Configuration::Configuration( int argc, const char* const* argv, const string& f ...@@ -159,8 +159,7 @@ Configuration::Configuration( int argc, const char* const* argv, const string& f
void Configuration::initConfiguration( int argc, const char* const* argv ) void Configuration::initConfiguration( int argc, const char* const* argv )
{ {
// PassiveTimer pt(UniSetTimer::WaitUpTime); // PassiveTimer pt(UniSetTimer::WaitUpTime);
if( ulog.is_system() ) ulogsys << "*** configure from file: " << fileConfName << endl;
ulog.system() << "*** configure from file: " << fileConfName << endl;
char curdir[FILENAME_MAX]; char curdir[FILENAME_MAX];
getcwd(curdir,FILENAME_MAX); getcwd(curdir,FILENAME_MAX);
...@@ -184,8 +183,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -184,8 +183,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
{ {
if( !unixml.isOpen() ) if( !unixml.isOpen() )
{ {
if( ulog.is_info() ) uinfo << "(Configuration): open from file " << fileConfName << endl;
ulog.info() << "(Configuration): open from file " << fileConfName << endl;
unixml.open(fileConfName); unixml.open(fileConfName);
} }
} }
...@@ -194,7 +192,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -194,7 +192,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
ulog << "(Configuration): FAILED open configuration from " << fileConfName << endl; ulog << "(Configuration): FAILED open configuration from " << fileConfName << endl;
throw; throw;
} }
// default value // default value
heartbeat_msec = 5000; heartbeat_msec = 5000;
...@@ -208,8 +206,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -208,8 +206,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
UniXML_iterator it = unixml.findNode(unixml.getFirstNode(),"ObjectsMap"); UniXML_iterator it = unixml.findNode(unixml.getFirstNode(),"ObjectsMap");
if( it == NULL ) if( it == NULL )
{ {
if( ulog.is_crit() ) ucrit << "(Configuration:init): not found <ObjectsMap> node in " << fileConfName << endl;
ulog.crit()<< "(Configuration:init): not found <ObjectsMap> node in " << fileConfName << endl;
throw SystemError("(Configuration:init): not found <ObjectsMap> node in " + fileConfName ); throw SystemError("(Configuration:init): not found <ObjectsMap> node in " + fileConfName );
} }
...@@ -222,8 +219,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -222,8 +219,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
} }
catch(Exception& ex ) catch(Exception& ex )
{ {
if( ulog.is_crit() ) ucrit << "(Configuration:init): INIT FAILED! from " << fileConfName << endl;
ulog.crit()<< "(Configuration:init): INIT FAILED! from " << fileConfName << endl;
throw; throw;
} }
} }
...@@ -232,9 +228,6 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -232,9 +228,6 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
// Настраиваем отладочные логи // Настраиваем отладочные логи
initDebug(ulog,"UniSetDebug"); initDebug(ulog,"UniSetDebug");
// cerr << "*************** initConfiguration: oind: " << pt.getCurrent() << " msec " << endl;
// pt.reset();
// default init... // default init...
transientIOR = false; transientIOR = false;
localIOR = false; localIOR = false;
...@@ -295,8 +288,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -295,8 +288,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
param << "=corbaname::" << it->host << ":" << it->port; param << "=corbaname::" << it->host << ":" << it->port;
new_argv[i+1] = strdup(param.str().c_str()); new_argv[i+1] = strdup(param.str().c_str());
if( ulog.is_info() ) uinfo << "(Configuration): внесли параметр " << param.str() << endl;
ulog.info() << "(Configuration): внесли параметр " << param.str() << endl;
i+=2; i+=2;
ostringstream uri; ostringstream uri;
...@@ -306,7 +298,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -306,7 +298,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
assert( i < _argc ); assert( i < _argc );
} }
// т..к _argc уже изменился, то и _argv надо обновить // т..к _argc уже изменился, то и _argv надо обновить
// чтобы вызов getArgParam не привел к SIGSEGV // чтобы вызов getArgParam не привел к SIGSEGV
_argv = new_argv; _argv = new_argv;
...@@ -315,7 +307,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -315,7 +307,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
xmlNode* nsnode = getNode("NameService"); xmlNode* nsnode = getNode("NameService");
if( !nsnode ) if( !nsnode )
{ {
ulog.warn() << "(Configuration): не нашли раздела 'NameService' \n"; uwarn << "(Configuration): не нашли раздела 'NameService' \n";
new_argv[i] = ""; new_argv[i] = "";
new_argv[i+1] = ""; new_argv[i+1] = "";
} }
...@@ -323,14 +315,13 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -323,14 +315,13 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
{ {
new_argv[i] = "-ORBInitRef"; new_argv[i] = "-ORBInitRef";
new_argv[i+1] = ""; // сперва инициализиуем пустой строкой (т.к. будет вызываться getArgParam) new_argv[i+1] = ""; // сперва инициализиуем пустой строкой (т.к. будет вызываться getArgParam)
string defPort( getPort( getProp(nsnode,"port") ) ); // здесь вызывается getArgParam! проходящий по _argv string defPort( getPort( getProp(nsnode,"port") ) ); // здесь вызывается getArgParam! проходящий по _argv
ostringstream param; ostringstream param;
param << this << "NameService=corbaname::" << getProp(nsnode,"host") << ":" << defPort; param << this << "NameService=corbaname::" << getProp(nsnode,"host") << ":" << defPort;
new_argv[i+1] = strdup(param.str().c_str()); new_argv[i+1] = strdup(param.str().c_str());
if( ulog.is_info() ) uinfo << "(Configuration): внесли параметр " << param.str() << endl;
ulog.info() << "(Configuration): внесли параметр " << param.str() << endl;
{ {
ostringstream ns_name; ostringstream ns_name;
...@@ -341,7 +332,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -341,7 +332,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
cerr << "**********************!!!! FAILED ADD name=" <<ns_name << " uri=" << uri.str() << endl; cerr << "**********************!!!! FAILED ADD name=" <<ns_name << " uri=" << uri.str() << endl;
} }
} }
_argv = new_argv; _argv = new_argv;
// ------------- CORBA INIT ------------- // ------------- CORBA INIT -------------
// orb init // orb init
...@@ -350,7 +341,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -350,7 +341,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj); PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
CORBA::PolicyList pl; CORBA::PolicyList pl;
if( transientIOR == false ) if( transientIOR == false )
{ {
pl.length(3); pl.length(3);
...@@ -374,12 +365,12 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -374,12 +365,12 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
ulog.crit()<< "Configuration:" << ex << endl; ucrit << "Configuration:" << ex << endl;
throw; throw;
} }
catch(...) catch(...)
{ {
ulog.crit()<< "Configuration: INIT FAILED!!!!"<< endl; ucrit << "Configuration: INIT FAILED!!!!"<< endl;
throw Exception("Configuration: INIT FAILED!!!!"); throw Exception("Configuration: INIT FAILED!!!!");
} }
...@@ -422,23 +413,21 @@ void Configuration::initParameters() ...@@ -422,23 +413,21 @@ void Configuration::initParameters()
xmlNode* root = unixml.findNode( unixml.getFirstNode(),"UniSet" ); xmlNode* root = unixml.findNode( unixml.getFirstNode(),"UniSet" );
if( !root ) if( !root )
{ {
if( ulog.is_crit() ) ucrit << "Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found"<< endl;
ulog.crit()<< "Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found"<< endl;
throw Exception("Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found!"); throw Exception("Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found!");
} }
UniXML_iterator it(root); UniXML_iterator it(root);
if( !it.goChildren() ) if( !it.goChildren() )
{ {
if( ulog.is_crit() ) ucrit << "Configuration: INIT PARAM`s FAILED!!!!"<< endl;
ulog.crit()<< "Configuration: INIT PARAM`s FAILED!!!!"<< endl;
throw Exception("Configuration: INIT PARAM`s FAILED!!!!"); throw Exception("Configuration: INIT PARAM`s FAILED!!!!");
} }
for( ; it.getCurrent(); it.goNext() ) for( ; it.getCurrent(); it.goNext() )
{ {
string name( it.getName() ); string name( it.getName() );
if( name == "LocalNode" ) if( name == "LocalNode" )
{ {
if( localNode == UniSetTypes::DefaultObjectId ) if( localNode == UniSetTypes::DefaultObjectId )
...@@ -457,8 +446,7 @@ void Configuration::initParameters() ...@@ -457,8 +446,7 @@ void Configuration::initParameters()
{ {
ostringstream msg; ostringstream msg;
msg << "Configuration: DBServer '" << secDB << "' not found ServiceID in <services>!"; msg << "Configuration: DBServer '" << secDB << "' not found ServiceID in <services>!";
if( ulog.is_crit() ) ucrit << msg.str() << endl;
ulog.crit()<< msg.str() << endl;
throw Exception(msg.str()); throw Exception(msg.str());
} }
} }
...@@ -536,8 +524,7 @@ void Configuration::setLocalNode( const string& nodename ) ...@@ -536,8 +524,7 @@ void Configuration::setLocalNode( const string& nodename )
{ {
stringstream err; stringstream err;
err << "(Configuration::setLocalNode): Not found node '" << nodename << "'"; err << "(Configuration::setLocalNode): Not found node '" << nodename << "'";
if( ulog.is_crit() ) ucrit << err.str() << endl;
ulog.crit()<< err.str() << endl;
throw Exception(err.str()); throw Exception(err.str());
} }
...@@ -604,8 +591,7 @@ void Configuration::createNodesList() ...@@ -604,8 +591,7 @@ void Configuration::createNodesList()
xmlNode* omapnode = unixml.findNode(unixml.getFirstNode(), "ObjectsMap"); xmlNode* omapnode = unixml.findNode(unixml.getFirstNode(), "ObjectsMap");
if( !omapnode ) if( !omapnode )
{ {
if( ulog.is_crit() ) ucrit << "(Configuration): <ObjectsMap> not found!!!" << endl;
ulog.crit()<< "(Configuration): <ObjectsMap> not found!!!" << endl;
throw Exception("(Configuration): <ObjectsMap> not found!"); throw Exception("(Configuration): <ObjectsMap> not found!");
} }
...@@ -613,8 +599,7 @@ void Configuration::createNodesList() ...@@ -613,8 +599,7 @@ void Configuration::createNodesList()
xmlNode* node = unixml.findNode(omapnode, "nodes"); xmlNode* node = unixml.findNode(omapnode, "nodes");
if(!node) if(!node)
{ {
if( ulog.is_crit() ) ucrit << "(Configuration): <nodes> section not found!"<< endl;
ulog.crit()<< "(Configuration): <nodes> section not found!"<< endl;
throw Exception("(Configiuration): <nodes> section not found"); throw Exception("(Configiuration): <nodes> section not found");
} }
...@@ -630,8 +615,7 @@ void Configuration::createNodesList() ...@@ -630,8 +615,7 @@ void Configuration::createNodesList()
string sname(getProp(it,"name")); string sname(getProp(it,"name"));
if(sname.empty()) if(sname.empty())
{ {
if( ulog.is_crit() ) ucrit << "Configuration(createNodesList): unknown name='' in <nodes> "<< endl;
ulog.crit()<< "Configuration(createNodesList): unknown name='' in <nodes> "<< endl;
throw Exception("Configuration(createNodesList: unknown name='' in <nodes>"); throw Exception("Configuration(createNodesList: unknown name='' in <nodes>");
} }
...@@ -641,15 +625,13 @@ void Configuration::createNodesList() ...@@ -641,15 +625,13 @@ void Configuration::createNodesList()
nodename = oind->mkFullNodeName(nodename,nodename); nodename = oind->mkFullNodeName(nodename,nodename);
NodeInfo ninf; NodeInfo ninf;
// ulog.info() << "Configuration(createNodesList): вносим узел " << nodename << endl;
ninf.id = oind->getIdByName(nodename); ninf.id = oind->getIdByName(nodename);
if( ninf.id == DefaultObjectId ) if( ninf.id == DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "Configuration(createNodesList): Not found ID for node '" << nodename << "'" << endl;
ulog.crit()<< "Configuration(createNodesList): Not found ID for node '" << nodename << "'" << endl;
throw Exception("Configuration(createNodesList): Not found ID for node '"+nodename+"'"); throw Exception("Configuration(createNodesList): Not found ID for node '"+nodename+"'");
} }
ninf.host = getProp(it,"ip").c_str(); ninf.host = getProp(it,"ip").c_str();
string tp(getProp(it,"port")); string tp(getProp(it,"port"));
if( tp.empty() ) if( tp.empty() )
...@@ -658,7 +640,7 @@ void Configuration::createNodesList() ...@@ -658,7 +640,7 @@ void Configuration::createNodesList()
ninf.port = tp.c_str(); ninf.port = tp.c_str();
string tmp(it.getProp("dbserver")); string tmp(it.getProp("dbserver"));
if( tmp.empty() ) if( tmp.empty() )
ninf.dbserver = UniSetTypes::DefaultObjectId; ninf.dbserver = UniSetTypes::DefaultObjectId;
else else
...@@ -667,8 +649,7 @@ void Configuration::createNodesList() ...@@ -667,8 +649,7 @@ void Configuration::createNodesList()
ninf.dbserver = oind->getIdByName(dname); ninf.dbserver = oind->getIdByName(dname);
if( ninf.dbserver == DefaultObjectId ) if( ninf.dbserver == DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "Configuration(createNodesList): Not found ID for DBServer name='" << dname << "'" << endl;
ulog.crit()<< "Configuration(createNodesList): Not found ID for DBServer name='" << dname << "'" << endl;
throw Exception("Configuration(createNodesList: Not found ID for DBServer name='"+dname+"'"); throw Exception("Configuration(createNodesList: Not found ID for DBServer name='"+dname+"'");
} }
} }
...@@ -677,16 +658,13 @@ void Configuration::createNodesList() ...@@ -677,16 +658,13 @@ void Configuration::createNodesList()
localDBServer = ninf.dbserver; localDBServer = ninf.dbserver;
ninf.connected = false; ninf.connected = false;
initNode(ninf, it);
if( ulog.is_info() ) initNode(ninf, it);
ulog.info() << "Configuration(createNodesList): add to list of nodes: node=" << nodename << " id=" << ninf.id << endl; uinfo << "Configuration(createNodesList): add to list of nodes: node=" << nodename << " id=" << ninf.id << endl;
lnodes.push_back(ninf); lnodes.push_back(ninf);
} }
if( ulog.is_info() ) uinfo << "Configuration(createNodesList): size of node list " << lnodes.size() << endl;
ulog.info() << "Configuration(createNodesList): size of node list " << lnodes.size() << endl;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void Configuration::initNode( UniSetTypes::NodeInfo& ninfo, UniXML_iterator& it ) void Configuration::initNode( UniSetTypes::NodeInfo& ninfo, UniXML_iterator& it )
...@@ -748,12 +726,12 @@ xmlNode* Configuration::initDebug( DebugStream& deb, const string& _debname ) ...@@ -748,12 +726,12 @@ xmlNode* Configuration::initDebug( DebugStream& deb, const string& _debname )
if( !debug_file.empty() ) if( !debug_file.empty() )
deb.logFile(debug_file); deb.logFile(debug_file);
} }
// теперь смотрим командную строку // теперь смотрим командную строку
string log_in("--"+debname+"-log-in-file"); string log_in("--"+debname+"-log-in-file");
string add_level("--"+debname+"-add-levels"); string add_level("--"+debname+"-add-levels");
string del_level("--"+debname+"-del-levels"); string del_level("--"+debname+"-del-levels");
// смотрим командную строку // смотрим командную строку
for (int i=1; i < (_argc - 1); i++) for (int i=1; i < (_argc - 1); i++)
{ {
...@@ -782,8 +760,7 @@ void Configuration::initRepSections() ...@@ -782,8 +760,7 @@ void Configuration::initRepSections()
{ {
ostringstream msg; ostringstream msg;
msg << "Configuration(initRepSections): Not found section <RootSection> in " << fileConfName; msg << "Configuration(initRepSections): Not found section <RootSection> in " << fileConfName;
if( ulog.is_crit() ) ucrit << msg.str() << endl;
ulog.crit()<< msg.str() << endl;
throw SystemError(msg.str()); throw SystemError(msg.str());
} }
...@@ -801,8 +778,7 @@ string Configuration::getRepSectionName( const string& sec, xmlNode* secnode ) ...@@ -801,8 +778,7 @@ string Configuration::getRepSectionName( const string& sec, xmlNode* secnode )
{ {
ostringstream msg; ostringstream msg;
msg << "Configuration(initRepSections): Not found section '" << sec << "' in " << fileConfName; msg << "Configuration(initRepSections): Not found section '" << sec << "' in " << fileConfName;
if( ulog.is_crit() ) ucrit << msg.str() << endl;
ulog.crit()<< msg.str() << endl;
throw SystemError(msg.str()); throw SystemError(msg.str());
} }
...@@ -842,8 +818,7 @@ void Configuration::setConfFileName( const string& fn ) ...@@ -842,8 +818,7 @@ void Configuration::setConfFileName( const string& fn )
msg << "\n\n***** CRIT: Unknown configure file." << endl msg << "\n\n***** CRIT: Unknown configure file." << endl
<< " Use --confile filename " << endl << " Use --confile filename " << endl
<< " OR define enviropment variable UNISET_CONFILE" << endl; << " OR define enviropment variable UNISET_CONFILE" << endl;
if( ulog.is_crit() ) ucrit << msg.str();
ulog.crit()<< msg.str();
throw SystemError(msg.str()); throw SystemError(msg.str());
} }
} }
...@@ -874,7 +849,7 @@ ObjectId Configuration::getSensorID( const std::string& name ) ...@@ -874,7 +849,7 @@ ObjectId Configuration::getSensorID( const std::string& name )
{ {
if( name.empty() ) if( name.empty() )
return DefaultObjectId; return DefaultObjectId;
return oind->getIdByName(getSensorsSection()+"/"+name); return oind->getIdByName(getSensorsSection()+"/"+name);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -960,7 +935,7 @@ xmlNode* Configuration::getXMLNodesSection() ...@@ -960,7 +935,7 @@ xmlNode* Configuration::getXMLNodesSection()
{ {
if( xmlNodesSec ) if( xmlNodesSec )
return xmlNodesSec; return xmlNodesSec;
xmlNodesSec = unixml.findNode(unixml.getFirstNode(),"nodes"); xmlNodesSec = unixml.findNode(unixml.getFirstNode(),"nodes");
return xmlNodesSec; return xmlNodesSec;
} }
......
...@@ -50,7 +50,7 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj ) ...@@ -50,7 +50,7 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
{ {
{ // lock { // lock
uniset_rwmutex_rlock lock(lstMutex); uniset_rwmutex_rlock lock(lstMutex);
if( tlst.empty() ) if( tlst.empty() )
{ {
sleepTime = UniSetTimer::WaitUpTime; sleepTime = UniSetTimer::WaitUpTime;
...@@ -69,18 +69,18 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj ) ...@@ -69,18 +69,18 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
return sleepTime; return sleepTime;
} }
} }
{ // lock { // lock
uniset_rwmutex_wrlock lock(lstMutex); uniset_rwmutex_wrlock lock(lstMutex);
sleepTime = UniSetTimer::WaitUpTime; sleepTime = UniSetTimer::WaitUpTime;
for( TimersList::iterator li=tlst.begin();li!=tlst.end();++li) for( TimersList::iterator li=tlst.begin();li!=tlst.end();++li)
{ {
if( li->tmr.checkTime() ) if( li->tmr.checkTime() )
{ {
// помещаем себе в очередь сообщение // помещаем себе в очередь сообщение
TransportMessage tm = TimerMessage(li->id, li->priority, obj->getId()).transport_msg(); TransportMessage tm = TimerMessage(li->id, li->priority, obj->getId()).transport_msg();
obj->push(tm); obj->push(tm);
// Проверка на количество заданных тактов // Проверка на количество заданных тактов
if( !li->curTick ) if( !li->curTick )
{ {
...@@ -102,19 +102,19 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj ) ...@@ -102,19 +102,19 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
// ищем минимальное оставшееся время // ищем минимальное оставшееся время
if( li->curTimeMS < sleepTime || sleepTime == UniSetTimer::WaitUpTime ) if( li->curTimeMS < sleepTime || sleepTime == UniSetTimer::WaitUpTime )
sleepTime = li->curTimeMS; sleepTime = li->curTimeMS;
} }
if( sleepTime < UniSetTimer::MinQuantityTime ) if( sleepTime < UniSetTimer::MinQuantityTime )
sleepTime=UniSetTimer::MinQuantityTime; sleepTime=UniSetTimer::MinQuantityTime;
} // unlock } // unlock
tmLast.reset(); tmLast.reset();
} }
catch(Exception& ex) catch(Exception& ex)
{ {
ulog.crit() << "(checkTimers): " << ex << endl; ucrit << "(checkTimers): " << ex << endl;
} }
return sleepTime; return sleepTime;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
...@@ -125,7 +125,7 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c ...@@ -125,7 +125,7 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
{ {
if( timeMS < UniSetTimer::MinQuantityTime ) if( timeMS < UniSetTimer::MinQuantityTime )
{ {
ulog.crit() << "(LT_askTimer): [мс] попытка заказть таймер со временем срабатыания " ucrit << "(LT_askTimer): [мс] попытка заказть таймер со временем срабатыания "
<< " меньше разрешённого " << UniSetTimer::MinQuantityTime << endl; << " меньше разрешённого " << UniSetTimer::MinQuantityTime << endl;
timeMS = UniSetTimer::MinQuantityTime; timeMS = UniSetTimer::MinQuantityTime;
} }
...@@ -141,11 +141,8 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c ...@@ -141,11 +141,8 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
{ {
li->curTick = ticks; li->curTick = ticks;
li->tmr.setTiming(timeMS); li->tmr.setTiming(timeMS);
if( ulog.is_info() ) uinfo << "(LT_askTimer): заказ на таймер(id="
{
ulog.info() << "(LT_askTimer): заказ на таймер(id="
<< timerid << ") " << timeMS << " [мс] уже есть..." << endl; << timerid << ") " << timeMS << " [мс] уже есть..." << endl;
}
return sleepTime; return sleepTime;
} }
} }
...@@ -156,19 +153,17 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c ...@@ -156,19 +153,17 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
newti.reset(); newti.reset();
} // unlock } // unlock
if( ulog.is_info() ) uinfo << "(LT_askTimer): поступил заказ на таймер(id="<< timerid << ") " << timeMS << " [мс]\n";
ulog.info() << "(LT_askTimer): поступил заказ на таймер(id="<< timerid << ") " << timeMS << " [мс]\n";
} }
else // отказ (при timeMS == 0) else // отказ (при timeMS == 0)
{ {
if( ulog.is_info() ) uinfo << "(LT_askTimer): поступил отказ по таймеру id="<< timerid << endl;
ulog.info() << "(LT_askTimer): поступил отказ по таймеру id="<< timerid << endl;
{ // lock { // lock
uniset_rwmutex_wrlock lock(lstMutex); uniset_rwmutex_wrlock lock(lstMutex);
tlst.remove_if(Timer_eq(timerid)); // STL - способ tlst.remove_if(Timer_eq(timerid)); // STL - способ
} // unlock } // unlock
} }
{ // lock { // lock
uniset_rwmutex_rlock lock(lstMutex); uniset_rwmutex_rlock lock(lstMutex);
......
...@@ -42,7 +42,7 @@ uniset_mutex::uniset_mutex(): ...@@ -42,7 +42,7 @@ uniset_mutex::uniset_mutex():
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
uniset_mutex::uniset_mutex( string name ): uniset_mutex::uniset_mutex( string name ):
cnd(0), cnd(0),
nm(name), nm(name),
locked(0) locked(0)
{ {
...@@ -112,9 +112,9 @@ uniset_mutex_lock::uniset_mutex_lock( uniset_mutex& m, int timeMS ): ...@@ -112,9 +112,9 @@ uniset_mutex_lock::uniset_mutex_lock( uniset_mutex& m, int timeMS ):
mutex->mtx.lock(); mutex->mtx.lock();
if( !mutex->cnd->timedwait(sec, msec) ) if( !mutex->cnd->timedwait(sec, msec) )
{ {
if( !mutex->name().empty() && ulog.is_level9() ) if( !mutex->name().empty() )
{ {
ulog.level9() << "(mutex_lock): вышло заданное время ожидания " ulog9 << "(mutex_lock): вышло заданное время ожидания "
<< timeMS << " msec для " << mutex->name() << endl; << timeMS << " msec для " << mutex->name() << endl;
} }
...@@ -134,7 +134,7 @@ bool uniset_mutex_lock::lock_ok() ...@@ -134,7 +134,7 @@ bool uniset_mutex_lock::lock_ok()
} }
uniset_mutex_lock::~uniset_mutex_lock() uniset_mutex_lock::~uniset_mutex_lock()
{ {
if( mlock ) if( mlock )
{ {
mlock = 0; mlock = 0;
...@@ -181,7 +181,7 @@ const uniset_rwmutex &uniset_rwmutex::operator=( const uniset_rwmutex& r ) ...@@ -181,7 +181,7 @@ const uniset_rwmutex &uniset_rwmutex::operator=( const uniset_rwmutex& r )
nm = s.str(); nm = s.str();
unlock(); unlock();
} }
return *this; return *this;
} }
...@@ -209,7 +209,7 @@ void uniset_rwmutex::wrlock() ...@@ -209,7 +209,7 @@ void uniset_rwmutex::wrlock()
void uniset_rwmutex::rlock() void uniset_rwmutex::rlock()
{ {
MUTEX_DEBUG(cerr << nm << " prepare RLocked.." << endl;) MUTEX_DEBUG(cerr << nm << " prepare RLocked.." << endl;)
while( wr_wait > 0 ) while( wr_wait > 0 )
msleep(2); msleep(2);
......
...@@ -42,6 +42,7 @@ c_filterValue("") ...@@ -42,6 +42,7 @@ c_filterValue("")
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
Restorer_XML::~Restorer_XML() Restorer_XML::~Restorer_XML()
{ {
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void Restorer_XML::setItemFilter( const string& field, const string& val ) void Restorer_XML::setItemFilter( const string& field, const string& val )
...@@ -65,8 +66,7 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it, ...@@ -65,8 +66,7 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
string cname( it.getProp("name")); string cname( it.getProp("name"));
if( cname.empty() ) if( cname.empty() )
{ {
if( ulog.is_warn() ) uwarn << "(Restorer_XML:getConsumerInfo): не указано имя заказчика..." << endl;
ulog.warn() << "(Restorer_XML:getConsumerInfo): не указано имя заказчика..." << endl;
return false; return false;
} }
...@@ -79,19 +79,15 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it, ...@@ -79,19 +79,15 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
cname = conf->getServicesSection()+"/"+cname; cname = conf->getServicesSection()+"/"+cname;
else else
{ {
if( ulog.is_warn() ) uwarn << "(Restorer_XML:getConsumerInfo): неизвестный тип объекта "
{
ulog.warn() << "(Restorer_XML:getConsumerInfo): неизвестный тип объекта "
<< otype << endl; << otype << endl;
}
return false; return false;
} }
cid = conf->oind->getIdByName(cname); cid = conf->oind->getIdByName(cname);
if( cid == UniSetTypes::DefaultObjectId ) if( cid == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР заказчика -->"
ulog.crit() << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР заказчика -->"
<< cname << endl; << cname << endl;
return false; return false;
} }
...@@ -110,17 +106,12 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it, ...@@ -110,17 +106,12 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
if( cnode == UniSetTypes::DefaultObjectId ) if( cnode == UniSetTypes::DefaultObjectId )
{ {
if( ulog.is_crit() ) ucrit << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла -->"
ulog.crit() << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла -->"
<< cnodename << endl; << cnodename << endl;
return false; return false;
} }
if( ulog.is_info() ) uinfo << "(Restorer_XML:getConsumerInfo): " << cname << ":" << cnodename << endl;
{
ulog.info() << "(Restorer_XML:getConsumerInfo): "
<< cname << ":" << cnodename << endl;
}
return true; return true;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -42,18 +42,18 @@ RunLock::~RunLock() ...@@ -42,18 +42,18 @@ RunLock::~RunLock()
bool RunLock::isLocked(const string& name) bool RunLock::isLocked(const string& name)
{ {
FILE *out = fopen( string(name + ".lock" ).c_str(), "r" ); FILE *out = fopen( string(name + ".lock" ).c_str(), "r" );
if( out ) if( out )
{ {
char ptr[10]; char ptr[10];
fscanf( out, "%9s", ptr ); fscanf( out, "%9s", ptr );
DIR *d = opendir( "/proc" ); DIR *d = opendir( "/proc" );
dirent *dir; dirent *dir;
while((dir = readdir(d))) while((dir = readdir(d)))
{ {
if( !strcmp( ptr, dir->d_name ) ) if( !strcmp( ptr, dir->d_name ) )
{ {
// по хорошему здесь надо бы проверять // по хорошему здесь надо бы проверять
// статус на зомби // статус на зомби
/* /*
string path(dir->d_name); string path(dir->d_name);
...@@ -70,20 +70,19 @@ bool RunLock::isLocked(const string& name) ...@@ -70,20 +70,19 @@ bool RunLock::isLocked(const string& name)
break; break;
} }
} }
*/ */
if( ulog.is_info() ) uinfo << "(RunLock): programm " << name << " already run" << endl;
ulog.info() << "(RunLock): programm " << name << " already run" << endl;
fclose(out); fclose(out);
closedir(d); closedir(d);
return true; return true;
} }
} }
fclose(out); fclose(out);
closedir(d); closedir(d);
} }
return false; return false;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -91,7 +90,7 @@ bool RunLock::lock( const string& name ) ...@@ -91,7 +90,7 @@ bool RunLock::lock( const string& name )
{ {
if( !isLocked(name) ) if( !isLocked(name) )
{ {
FILE *out = fopen( string(name + ".lock" ).c_str(), "w+" ); FILE *out = fopen( string(name + ".lock" ).c_str(), "w+" );
if(out) if(out)
{ {
fprintf( out, "%d\n", getpid() ); fprintf( out, "%d\n", getpid() );
...@@ -99,14 +98,14 @@ bool RunLock::lock( const string& name ) ...@@ -99,14 +98,14 @@ bool RunLock::lock( const string& name )
return true; return true;
} }
} }
return false; return false;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
bool RunLock::unlock(const string& name) bool RunLock::unlock(const string& name)
{ {
string fname(name + ".lock"); string fname(name + ".lock");
FILE *out = fopen( fname.c_str(), "r" ); FILE *out = fopen( fname.c_str(), "r" );
if( out ) if( out )
{ {
fclose(out); fclose(out);
......
...@@ -60,7 +60,6 @@ UniXML::UniXML(): ...@@ -60,7 +60,6 @@ UniXML::UniXML():
UniXML::~UniXML() UniXML::~UniXML()
{ {
//ulog.< "UniXML destr" << endl;
close(); close();
} }
......
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