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()
conf->oind->printMap(cout);
cout << "==========================================================================\n";
}
catch(Exception& ex)
catch( Exception& ex )
{
ulog.crit() << " configuration init FAILED!!! \n";
ucrit << " configuration init failed: " << ex << endl;
return 1;
}
return 0;
......
......@@ -381,7 +381,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK );
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;
}
......@@ -393,7 +393,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
int ret = ::read(fd,&buf,sizeof(buf));
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);
return ModbusRTU::erOperationFailed;
}
......@@ -407,7 +407,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
struct stat fs;
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);
return ModbusRTU::erOperationFailed;
}
......@@ -422,7 +422,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
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;
}
......
......@@ -376,7 +376,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
int fd = open(fname.c_str(), O_RDONLY | O_NONBLOCK );
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;
}
......@@ -388,7 +388,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
int ret = ::read(fd,&buf,sizeof(buf));
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);
return ModbusRTU::erOperationFailed;
}
......@@ -402,7 +402,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
struct stat fs;
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);
return ModbusRTU::erOperationFailed;
}
......@@ -417,7 +417,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
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;
}
......
......@@ -89,19 +89,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
}
catch(CORBA::SystemException&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
}
if( !active )
......@@ -124,7 +121,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
if( _sm->id == <xsl:value-of select="../../@name"/> )
{
<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>
......@@ -146,8 +143,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
break;
}
if( !activated &amp;&amp; ulog.is_crit() )
ulog.crit() &lt;&lt; myname
if( !activated )
ucrit &lt;&lt; myname
&lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl;
for( ;; )
......@@ -165,18 +162,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
}
catch(SystemError&amp; err)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
}
msleep(askPause);
}
......@@ -191,8 +185,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="../../@name"/> )
{
if( ulog.is_level2() )
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog2 &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="setdata"/>
return;
......@@ -224,16 +217,14 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
</xsl:if>
</xsl:if>
</xsl:for-each>
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl;
return 0;
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
}
......@@ -299,8 +290,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -335,8 +325,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -351,8 +340,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -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"/> )
</xsl:if>
{
// приходится искуственно использовать третий параметр,
// приходится искуственно использовать третий параметр,
// что-бы компилятор выбрал
// правильный(для аналоговых) конструктор у SensorMessage
IOController_i::CalibrateInfo _ci;
......
......@@ -94,19 +94,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
}
catch(CORBA::SystemException&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
}
if( !active )
......@@ -157,8 +154,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="../../@name"/> )
{
if( ulog.is_level2() )
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog2 &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;
return;
}
......@@ -180,8 +176,7 @@ long <xsl:value-of select="$CLASSNAME"/>_SK::getValue( UniSetTypes::ObjectId _si
</xsl:if>
</xsl:for-each>
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl;
return 0;
......@@ -232,8 +227,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -268,8 +262,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -284,8 +277,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
......
......@@ -88,19 +88,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
}
catch(CORBA::SystemException&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
}
if( !active )
......@@ -116,8 +113,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId _si
<xsl:if test="normalize-space(@vartype)='out'">
if( _sid == <xsl:value-of select="@name"/> )
{
if( ulog.is_level2() )
ulog.level2() &lt;&lt; "(setState): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; _val &lt;&lt; endl;
ulog2 &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="setdata"/>
return;
......@@ -163,7 +159,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
if( _sm->id == <xsl:value-of select="@name"/> )
{
<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>
......@@ -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"/>;
}
</xsl:for-each>
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl;
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getValue): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
......@@ -214,8 +208,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
break;
}
if( !activated &amp;&amp; ulog.is_crit() )
ulog.crit() &lt;&lt; myname
if( !activated )
ucrit &lt;&lt; myname
&lt;&lt; "(preAskSensors): ************* don`t activated?! ************" &lt;&lt; endl;
for( ;; )
......@@ -232,18 +226,15 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preAskSensors( UniversalIO::UIOComm
}
catch(SystemError&amp; err)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; err &lt;&lt; endl;
}
catch(Exception&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): " &lt;&lt; ex &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(preAskSensors): catch(...)" &lt;&lt; endl;
}
msleep(askPause);
}
......@@ -275,8 +266,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( UniSetTypes::Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
}
......@@ -293,8 +283,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( UniSetTypes::Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
}
......@@ -312,8 +301,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId _code
}
catch( UniSetTypes::Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
}
......
......@@ -93,19 +93,16 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): " &lt;&lt; ex &lt;&lt; endl;
}
catch(CORBA::SystemException&amp; ex)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
ucrit &lt;&lt; myname &lt;&lt; "(execute): СORBA::SystemException: "
&lt;&lt; ex.NP_minorString() &lt;&lt; endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(execute): catch ..." &lt;&lt; endl;
}
if( !active )
......@@ -121,8 +118,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setValue( UniSetTypes::ObjectId sid
<xsl:if test="normalize-space(@vartype)='out'">
if( sid == <xsl:value-of select="@name"/> )
{
if( ulog.is_level2() )
ulog.level2() &lt;&lt; "(setValue): <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = " &lt;&lt; val &lt;&lt; endl;
ulog2 &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;
return;
}
......@@ -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"/>;
</xsl:for-each>
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
ucrit &lt;&lt; myname &lt;&lt; "(getValue): Обращение к неизвестному датчику sid="
&lt;&lt; _sid &lt;&lt; endl;
return 0;
}
......@@ -214,8 +209,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(getdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -232,8 +226,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -251,8 +244,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setdata): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......@@ -269,8 +261,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setMsg( UniSetTypes::ObjectId code,
}
catch( Exception&amp; ex )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; myname &lt;&lt; "(setmsg): " &lt;&lt; ex &lt;&lt; endl;
ucrit &lt;&lt; myname &lt;&lt; "(setmsg): " &lt;&lt; ex &lt;&lt; endl;
throw;
}
</xsl:template>
......
......@@ -90,7 +90,7 @@
</xsl:when>
<xsl:when test="$GENTYPE='CHECK'">
<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:when>
......@@ -101,8 +101,7 @@
<xsl:when test="$GENTYPE='A'">
if( _code == mid_<xsl:value-of select="../../@name"/> )
{
if( ulog.is_level8() )
ulog.level8() &lt;&lt; "<xsl:value-of select="../../@name"/>" &lt;&lt; endl;
ulog8 &lt;&lt; "<xsl:value-of select="../../@name"/>" &lt;&lt; endl;
m_<xsl:value-of select="../../@name"/> = _state;
try
{
......@@ -126,8 +125,7 @@
}
catch( UniSetTypes::Exception&amp; ex )
{
if( ulog.is_level1() )
ulog.level1() &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
ulog1 &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
}
}
</xsl:when>
......@@ -165,8 +163,22 @@
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream dlog;
void init_dlog(DebugStream&amp; dlog);
DebugStream mylog;
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 name="COMMON-HEAD-PROTECTED">
......@@ -226,7 +238,7 @@
int activateTimeout; /*!&lt; время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!&lt; время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!&lt; пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
</xsl:template>
......@@ -238,7 +250,7 @@
// ------------------------------------------------------------------------------------------
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 )
......@@ -272,9 +284,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::Voi
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 )
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): WatchDog" &lt;&lt; endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
if( ulog.is_warn() )
ulog.warn() &lt;&lt; myname &lt;&lt; "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl;
uwarn &lt;&lt; myname &lt;&lt; "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" &lt;&lt; endl;
break;
}
case SystemMessage::StartUp:
......@@ -313,12 +324,12 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
case SystemMessage::LogRotate:
{
// переоткрываем логи
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl;
string fname( ulog.getLogFile() );
mylog &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl;
string fname( mylog.getLogFile() );
if( !fname.empty() )
{
ulog.logFile(fname.c_str());
ulog &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** ulog LOG ROTATE *****************" &lt;&lt; endl;
mylog.logFile(fname.c_str());
mylog &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** mylog LOG ROTATE *****************" &lt;&lt; endl;
}
}
break;
......@@ -375,12 +386,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
if( _testID == DefaultObjectId )
return;
if( ulog.is_info() )
{
ulog.info() &lt;&lt; myname &lt;&lt; "(waitSM): waiting SM ready "
uinfo &lt;&lt; myname &lt;&lt; "(waitSM): waiting SM ready "
&lt;&lt; wait_msec &lt;&lt; " msec"
&lt;&lt; " testID=" &lt;&lt; _testID &lt;&lt; endl;
}
if( !ui.waitReady(_testID,wait_msec) )
{
......@@ -389,8 +397,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
&lt;&lt; "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
&lt;&lt; wait_msec &lt;&lt; " мсек";
if( ulog.is_crit() )
ulog.crit() &lt;&lt; err.str() &lt;&lt; endl;
ucrit &lt;&lt; err.str() &lt;&lt; endl;
terminate();
abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
......@@ -407,8 +414,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
&lt;&lt; "(waitSM): Не дождались готовности(work) SharedMemory к работе в течение "
&lt;&lt; wait_msec &lt;&lt; " мсек";
if( ulog.is_crit() )
ulog.crit() &lt;&lt; err.str() &lt;&lt; endl;
ucrit &lt;&lt; err.str() &lt;&lt; endl;
terminate();
abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
......@@ -534,7 +540,7 @@ askPause(2000),
</xsl:for-each>
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!!!") );
}
// -----------------------------------------------------------------------------
......@@ -545,7 +551,7 @@ static const std::string init3_str( const std::string&amp; s1, const std::string
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
......@@ -611,9 +617,9 @@ end_private(false)
<xsl:if test="normalize-space(@no_check_id)!='1'">
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"/>") );
</xsl:if>
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{
<xsl:if test="normalize-space(@no_check_id)!='1'">
......@@ -631,7 +637,7 @@ end_private(false)
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)"/>") );
}
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
......@@ -710,16 +716,14 @@ end_private(false)
<xsl:if test="normalize-space(@min)!=''">
if( <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/> )
{
if( ulog.is_warn() )
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;
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;
<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 test="normalize-space(@max)!=''">
if( <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/> )
{
if( ulog.is_warn() )
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;
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;
<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>
......@@ -777,29 +781,18 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
{
if( _code == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; getName()
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
ucrit &lt;&lt; getName()
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; endl;
return false;
}
if( ulog.is_level1() )
{
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;
}
ulog1 &lt;&lt; getName() &lt;&lt; "(alarm): " &lt;&lt; ( _state ? "SEND " : "RESET " ) &lt;&lt; endl;
<xsl:for-each select="//msgmap/item">
if( _code == <xsl:value-of select="@name"/> )
{
if( ulog.is_level1() )
ulog.level1() &lt;&lt; "<xsl:value-of select="@name"/>" &lt;&lt; endl;
{
ulog1 &lt;&lt; "<xsl:value-of select="@name"/>" &lt;&lt; endl;
try
{
m_<xsl:value-of select="@name"/> = _state;
......@@ -814,8 +807,7 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
}
</xsl:for-each>
if( ulog.is_level1() )
ulog.level1() &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
ulog1 &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
return false;
}
// -----------------------------------------------------------------------------
......@@ -834,8 +826,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::resetMsg()
}
catch( UniSetTypes::Exception&amp; ex )
{
if( ulog.is_level1() )
ulog.level1() &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
ulog1 &lt;&lt; getName() &lt;&lt; ex &lt;&lt; endl;
}
}
</xsl:for-each>
......@@ -893,7 +884,7 @@ confnode(0),
activated(false),
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!!!") );
}
// -----------------------------------------------------------------------------
......@@ -1055,22 +1046,13 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
{
if( _code == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() &lt;&lt; getName()
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
ucrit &lt;&lt; getName()
&lt;&lt; "(alarm): попытка послать сообщение с DefaultObjectId"
&lt;&lt; endl;
return false;
}
if( ulog.is_level1() )
{
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; ")";
}
ulog1 &lt;&lt; getName() &lt;&lt; "(alarm): (" &lt;&lt; _code &lt;&lt; ")" &lt;&lt; ( _state ? "SEND" : "RESET" ) &lt;&lt; endl;
<xsl:for-each select="//sensors/item">
<xsl:call-template name="setmsg">
......@@ -1078,22 +1060,21 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::alarm( UniSetTypes::ObjectId _code,
</xsl:call-template>
</xsl:for-each>
if( ulog.is_level8() )
ulog.level8() &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
ulog8 &lt;&lt; " not found MessgeOID?!!" &lt;&lt; endl;
return false;
}
// -----------------------------------------------------------------------------
</xsl:template>
<xsl:template name="check_changes">
<xsl:param name="onlymsg"></xsl:param>
<xsl:param name="onlymsg"></xsl:param>
<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"/> )
</xsl:if>
{
<xsl:if test="normalize-space($onlymsg)=''">
</xsl:if>
// приходится искуственно использовать третий параметр,
// приходится искуственно использовать третий параметр,
// что-бы компилятор выбрал
// правильный(для аналоговых) конструктор у SensorMessage
IOController_i::CalibrateInfo _ci;
......
......@@ -42,7 +42,7 @@
#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"/>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:
<xsl:if test="normalize-space($BASECLASS)!=''">public <xsl:value-of select="normalize-space($BASECLASS)"/>,</xsl:if>
......
......@@ -31,7 +31,7 @@
// -----------------------------------------------------------------------------
#include &lt;sstream&gt;
#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:value-of select="$CLASSNAME"/>.h"
// -----------------------------------------------------------------------------
......@@ -53,10 +53,6 @@ int main( int argc,char* argv[] )
string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" );
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 объекта
ObjectId ID(DefaultObjectId);
......@@ -73,8 +69,12 @@ int main( int argc,char* argv[] )
}
<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));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -33,7 +33,7 @@
// -----------------------------------------------------------------------------
#include &lt;sstream&gt;
#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:value-of select="$CLASSNAME"/>.h"
// -----------------------------------------------------------------------------
......@@ -55,10 +55,6 @@ int main( int argc, const char** argv )
string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" );
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:value-of select="$CLASSNAME"/> obj;
......@@ -79,9 +75,14 @@ int main( int argc, const char** argv )
}
}
<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>
ObjectsActivator act;
UniSetActivator act;
act.addObject(static_cast&lt;class UniSetObject*&gt;(&amp;obj));
SystemMessage sm(SystemMessage::StartUp);
......
......@@ -31,10 +31,10 @@ int main( int argc, const char **argv )
SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() );
ulog.ebug::ANY) << "\n\n\n";
ulog.ebug::ANY] << "(Skel::main): -------------- Skel START -------------------------\n\n";
dlog(Debug::ANY) << "\n\n\n";
dlog[Debug::ANY] << "(Skel::main): -------------- Skel START -------------------------\n\n";
ulog << "\n\n\n";
ulog << "(Skel::main): -------------- Skel START -------------------------\n\n";
dlog << "\n\n\n";
dlog << "(Skel::main): -------------- Skel START -------------------------\n\n";
act.run(false);
}
catch(SystemError& err)
......
......@@ -356,6 +356,7 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
- ObjectsActitvator --> UniSetActivator
- remove deprecated property: "sensebility"
- 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
- add RRDServer
......
......@@ -152,20 +152,17 @@ void DBServer_MySQL::parse( UniSetTypes::ConfirmMessage* cem )
if( !writeToBase(data.str()) )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): db error: "<< db->error() << endl;
ucrit << myname << "(update_confirm): db error: "<< db->error() << endl;
db->freeResult();
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): " << ex << endl;
ucrit << myname << "(update_confirm): " << ex << endl;
}
catch( ... )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): catch..." << endl;
ucrit << myname << "(update_confirm): catch..." << endl;
}
}
//--------------------------------------------------------------------------------------------
......@@ -188,8 +185,7 @@ bool DBServer_MySQL::writeToBase( const string& query )
qbuf.pop();
if( ulog.is_crit() )
ulog.crit() << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
ucrit << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
<< ") overflow! lost query: " << qlost << endl;
}
return false;
......@@ -231,11 +227,9 @@ void DBServer_MySQL::flushBuffer()
string err(db->error());
if( err.empty() )
db->freeResult();
else if( ulog.is_crit() )
{
ulog.crit() << myname << "(writeToBase): error: " << err <<
else
ucrit << myname << "(writeToBase): error: " << err <<
" lost query: " << qbuf.front() << endl;
}
qbuf.pop();
}
......@@ -269,20 +263,17 @@ void DBServer_MySQL::parse( UniSetTypes::SensorMessage *si )
if( !writeToBase(data.str()) )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(insert) sensor msg error: "<< db->error() << endl;
ucrit << myname << "(insert) sensor msg error: "<< db->error() << endl;
db->freeResult();
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(insert_main_history): " << ex << endl;
ucrit << myname << "(insert_main_history): " << ex << endl;
}
catch( ... )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(insert_main_history): catch ..." << endl;
ucrit << myname << "(insert_main_history): catch ..." << endl;
}
}
//--------------------------------------------------------------------------------------------
......@@ -346,8 +337,7 @@ void DBServer_MySQL::init_dbserver()
if( !db->connect(dbnode, user, password, dbname) )
{
// ostringstream err;
if( ulog.is_crit() )
ulog.crit() << myname
ucrit << myname
<< "(init): DB connection error: "
<< db->error() << endl;
// throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) );
......@@ -372,8 +362,7 @@ void DBServer_MySQL::createTables( DBInterface *db )
UniXML_iterator it( conf->getNode("Tables") );
if(!it)
{
if( ulog.is_crit() )
ulog.crit() << myname << ": section <Tables> not found.."<< endl;
ucrit << myname << ": section <Tables> not found.."<< endl;
throw Exception();
}
......@@ -385,8 +374,8 @@ void DBServer_MySQL::createTables( DBInterface *db )
ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl;
ostringstream query;
query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")";
if( !db->query(query.str()) && ulog.is_crit() )
ulog.crit() << myname << "(createTables): error: \t\t" << db->error() << endl;
if( !db->query(query.str()) )
ucrit << myname << "(createTables): error: \t\t" << db->error() << endl;
}
}
}
......@@ -399,8 +388,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
{
if( !db->ping() )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): DB lost connection.." << endl;
uwarn << myname << "(timerInfo): DB lost connection.." << endl;
connect_ok = false;
askTimer(DBServer_MySQL::PingTimer,0);
askTimer(DBServer_MySQL::ReconnectTimer,ReconnectTime);
......@@ -427,8 +415,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
askTimer(DBServer_MySQL::PingTimer,PingTime);
}
connect_ok = false;
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): DB no connection.." << endl;
uwarn << myname << "(timerInfo): DB no connection.." << endl;
}
else
init_dbserver();
......@@ -436,8 +423,7 @@ void DBServer_MySQL::timerInfo( UniSetTypes::TimerMessage* tm )
break;
default:
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
uwarn << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
break;
}
}
......
......@@ -148,19 +148,16 @@ void DBServer_SQLite::parse( UniSetTypes::ConfirmMessage* cem )
if( !writeToBase(data.str()) )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): db error: "<< db->error() << endl;
ucrit << myname << "(update_confirm): db error: "<< db->error() << endl;
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): " << ex << endl;
ucrit << myname << "(update_confirm): " << ex << endl;
}
catch( ... )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(update_confirm): catch..." << endl;
ucrit << myname << "(update_confirm): catch..." << endl;
}
}
//--------------------------------------------------------------------------------------------
......@@ -183,8 +180,7 @@ bool DBServer_SQLite::writeToBase( const string& query )
qbuf.pop();
if( ulog.is_crit() )
ulog.crit() << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
ucrit << myname << "(writeToBase): DB not connected! buffer(" << qbufSize
<< ") overflow! lost query: " << qlost << endl;
}
return false;
......@@ -207,9 +203,9 @@ void DBServer_SQLite::flushBuffer()
// Сперва пробуем очистить всё что накопилось в очереди до этого...
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;
}
qbuf.pop();
......@@ -244,17 +240,16 @@ void DBServer_SQLite::parse( UniSetTypes::SensorMessage *si )
if( !writeToBase(data.str()) )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(insert) sensor msg error: "<< db->error() << endl;
ucrit << myname << "(insert) sensor msg error: "<< db->error() << endl;
}
}
catch( Exception& ex )
{
ulog.crit() << myname << "(insert_main_history): " << ex << endl;
ucrit << myname << "(insert_main_history): " << ex << endl;
}
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()
if( !db->connect(dbfile,false) )
{
// ostringstream err;
if( ulog.is_crit() )
ulog.crit() << myname
ucrit << myname
<< "(init): DB connection error: "
<< db->error() << endl;
// throw Exception( string(myname+"(init): не смогли создать соединение с БД "+db->error()) );
......@@ -337,8 +331,7 @@ void DBServer_SQLite::createTables( SQLiteInterface *db )
UniXML_iterator it( conf->getNode("Tables") );
if(!it)
{
if( ulog.is_crit() )
ulog.crit() << myname << ": section <Tables> not found.."<< endl;
ucrit << myname << ": section <Tables> not found.."<< endl;
throw Exception();
}
......@@ -350,8 +343,8 @@ void DBServer_SQLite::createTables( SQLiteInterface *db )
ulog[DBLogInfoLevel] << myname << "(createTables): create " << it.getName() << endl;
ostringstream query;
query << "CREATE TABLE " << conf->getProp(it,"name") << "(" << conf->getProp(it,"create") << ")";
if( !db->query(query.str()) && ulog.is_crit() )
ulog.crit() << myname << "(createTables): error: \t\t" << db->error() << endl;
if( !db->query(query.str()) )
ucrit << myname << "(createTables): error: \t\t" << db->error() << endl;
}
}
}
......@@ -364,8 +357,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
{
if( !db->ping() )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): DB lost connection.." << endl;
uwarn << myname << "(timerInfo): DB lost connection.." << endl;
connect_ok = false;
askTimer(DBServer_SQLite::PingTimer,0);
askTimer(DBServer_SQLite::ReconnectTimer,ReconnectTime);
......@@ -392,8 +384,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
askTimer(DBServer_SQLite::PingTimer,PingTime);
}
connect_ok = false;
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): DB no connection.." << endl;
uwarn << myname << "(timerInfo): DB no connection.." << endl;
}
else
init_dbserver();
......@@ -401,8 +392,7 @@ void DBServer_SQLite::timerInfo( UniSetTypes::TimerMessage* tm )
break;
default:
if( ulog.is_warn() )
ulog.warn() << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
uwarn << myname << "(timerInfo): Unknown TimerID=" << tm->id << endl;
break;
}
}
......
#include <sstream>
#include <sstream>
#include "ORepHelpers.h"
#include "UniSetTypes.h"
#include "Extensions.h"
......@@ -11,13 +11,13 @@ using namespace UniSetExtensions;
std::ostream& operator<<( std::ostream& os, IOControl::IOInfo& inf )
{
os << "(" << inf.si.id << ")" << conf->oind->getMapName(inf.si.id)
<< " card=" << inf.ncard << " channel=" << inf.channel << " subdev=" << inf.subdev
<< " aref=" << inf.aref << " range=" << inf.range
<< " card=" << inf.ncard << " channel=" << inf.channel << " subdev=" << inf.subdev
<< " aref=" << inf.aref << " range=" << inf.range
<< " default=" << inf.defval << " safety=" << inf.safety;
if( inf.cal.minRaw!=inf.cal.maxRaw )
os << inf.cal;
return os;
}
// -----------------------------------------------------------------------------
......@@ -59,7 +59,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
maxCardNum = conf->getArgInt("--"+prefix+"-max-cardnum","10");
cards.resize(maxCardNum+1);
dlog.info() << myname << "(init): numcards=" << numcards << endl;
dinfo << myname << "(init): numcards=" << numcards << endl;
UniXML_iterator it(cnode);
......@@ -84,8 +84,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{
if( cards[i] == NULL )
{
if( dlog.is_level3() ) dlog.level3() << myname << "(init): Card N" << i
<< " DISABLED! dev='"
dlog3 << myname << "(init): Card N" << i
<< " DISABLED! dev='"
<< iodev << "'" << endl;
}
}
......@@ -93,7 +93,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{
noCards = false;
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 )
......@@ -103,7 +103,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
stringstream t1;
t1 << s1.str() << "-subdev" << s << "-type";
string stype = conf->getArgParam(t1.str());
string stype( conf->getArgParam(t1.str()) );
if( !stype.empty() )
{
ComediInterface::SubdevType st = ComediInterface::str2type(stype.c_str());
......@@ -116,9 +116,8 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
if( !stype.empty() )
{
if( dlog.is_info() )
dlog.info() << myname
<< "(init): card" << i
dinfo << myname
<< "(init): card" << i
<< " subdev" << s << " set type " << stype << endl;
cards[i]->configureSubdev(s-1,st);
......@@ -128,8 +127,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
}
}
if( dlog.is_info() )
dlog.info() << myname << "(init): result numcards=" << cards.size() << endl;
dinfo << myname << "(init): result numcards=" << cards.size() << endl;
polltime = conf->getArgInt("--"+prefix+"-polltime",it.getProp("polltime"));
if( !polltime )
......@@ -150,13 +148,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{
ostringstream err;
err << myname << ": Unkown ID for " << testlamp;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
if( dlog.is_info() )
dlog.info() << myname << "(init): testLamp_S='" << testlamp << "'" << endl;
dinfo << myname << "(init): testLamp_S='" << testlamp << "'" << endl;
}
string tmode = conf->getArgParam("--"+prefix+"-test-mode",it.getProp("testmode_as"));
......@@ -167,13 +163,11 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{
ostringstream err;
err << myname << ": Unknown ID for " << tmode;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
if( dlog.is_info() )
dlog.info() << myname << "(init): testMode_as='" << testmode << "'" << endl;
dinfo << myname << "(init): testMode_as='" << testmode << "'" << endl;
}
shm = new SMInterface(icID,&ui,myid,ic);
......@@ -182,8 +176,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
s_field = conf->getArgParam("--"+prefix+"-s-filter-field");
s_fvalue = conf->getArgParam("--"+prefix+"-s-filter-value");
if( dlog.is_info() )
dlog.info() << myname << "(init): read s_field='" << s_field
dinfo << myname << "(init): read s_field='" << s_field
<< "' s_fvalue='" << s_fvalue << "'" << endl;
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,
if( sidTestSMReady == DefaultObjectId )
{
sidTestSMReady = conf->getSensorID("TestMode_S");
if( dlog.is_warn() )
dlog.warn() << myname
dwarn << myname
<< "(init): Unknown ID for sm-ready-test-sid (--" << prefix << "-sm-ready-test-sid)."
<< " Use 'TestMode_S'" << endl;
}
else if( dlog.is_info() )
dlog.info() << myname << "(init): test-sid: " << sm_ready_sid << endl;
else
dinfo << myname << "(init): test-sid: " << sm_ready_sid << endl;
// -----------------------
......@@ -225,8 +217,7 @@ IOControl::IOControl( UniSetTypes::ObjectId id, UniSetTypes::ObjectId icID,
{
ostringstream err;
err << myname << ": Not found ID for 'HeartBeat' " << heart;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
......@@ -251,7 +242,7 @@ IOControl::~IOControl()
{
// здесь бы ещё пройтись по списку с сделать delete для
// всех cdiagram созданных через new
//
//
for( unsigned int i=0; i<cards.size(); i++ )
delete cards[i];
......@@ -267,7 +258,7 @@ void IOControl::execute()
waitSM(); // необходимо дождаться, чтобы нормально инициализировать итераторы
PassiveTimer pt(UniSetTimer::WaitUpTime);
if( shm->isLocalwork() )
{
maxItem = 0;
......@@ -285,10 +276,9 @@ void IOControl::execute()
readconf_ok = true; // т.к. waitSM() уже был...
}
maxHalf = maxItem / 2;
if( dlog.is_info() )
dlog.info() << myname << "(init): iomap size = " << iomap.size() << endl;
dinfo << myname << "(init): iomap size = " << iomap.size() << endl;
cerr << myname << "(iomap size): " << iomap.size() << endl;
......@@ -305,7 +295,7 @@ void IOControl::execute()
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
{
cout << myname << "(execute): wait activate..." << endl;
msleep(300);
if( activated )
......@@ -315,8 +305,8 @@ void IOControl::execute()
}
}
if( !activated && dlog.is_crit() )
dlog.crit() << myname << "(execute): ************* don`t activate?! ************" << endl;
if( !activated )
dcrit << myname << "(execute): ************* don`t activate?! ************" << endl;
try
{
......@@ -330,12 +320,12 @@ void IOControl::execute()
}
}
catch(...){}
while( !term )
{
try
{
if( !noCards )
{
check_testmode();
......@@ -383,27 +373,24 @@ void IOControl::execute()
}
catch( Exception& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(execute): " << ex << endl;
dlog3 << myname << "(execute): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.is_level3() )
dlog.level3() << myname << "(execute): CORBA::SystemException: "
dlog3 << myname << "(execute): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.is_level3() )
dlog.level3() << myname << "(execute): catch ..." << endl;
dlog3 << myname << "(execute): catch ..." << endl;
}
if( term )
break;
msleep( polltime );
}
term = false;
}
// --------------------------------------------------------------------------------
......@@ -432,8 +419,8 @@ void IOControl::iopoll()
IOBase::processingThreshold((IOBase*)&(*it),shm,force);
ioread( (IOInfo*)&(*it) );
// на середине
// на середине
// опять опросим приоритетные
if( !prior && i>maxHalf )
{
......@@ -445,18 +432,18 @@ void IOControl::iopoll()
IOBase::processingThreshold((IOBase*)&(iomap[it->index]),shm,force);
}
}
prior = true;
}
}
// Опрос приоритетной очереди
for( PIOMap::iterator it=pmap.begin(); it!=pmap.end(); ++it )
{
if( it->priority > 2 )
{
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 )
if( it->si.id == DefaultObjectId )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll): sid=DefaultObjectId?!" << endl;
dlog3 << myname << "(iopoll): sid=DefaultObjectId?!" << endl;
return;
}
......@@ -507,32 +493,18 @@ void IOControl::ioread( IOInfo* it )
{
int val = card->getAnalogChannel(it->subdev,it->channel, it->range, it->aref);
if( dlog.is_level3() )
{
dlog.level3() << myname << "(iopoll): read AI "
<< " sid=" << it->si.id
<< " subdev=" << it->subdev
dlog3 << myname << "(iopoll): read AI "
<< " sid=" << it->si.id
<< " subdev=" << it->subdev
<< " chan=" << it->channel
<< " val=" << val
<< endl;
}
IOBase::processingAsAI( ib, val, shm, force );
}
else if( it->stype == UniversalIO::DI )
{
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 );
// немного оптимизации
......@@ -558,7 +530,7 @@ void IOControl::ioread( IOInfo* it )
{
case lmpOFF:
{
if( force_out && (prev_val == lmpBLINK
if( force_out && (prev_val == lmpBLINK
|| prev_val == lmpBLINK2
|| prev_val == lmpBLINK3) )
{
......@@ -571,10 +543,10 @@ void IOControl::ioread( IOInfo* it )
card->setDigitalChannel(it->subdev,it->channel,0);
}
break;
case lmpON:
{
if( force_out && (prev_val == lmpBLINK
if( force_out && (prev_val == lmpBLINK
|| prev_val == lmpBLINK2
|| prev_val == lmpBLINK3) )
{
......@@ -626,7 +598,7 @@ void IOControl::ioread( IOInfo* it )
}
}
break;
default:
return;
}
......@@ -641,34 +613,28 @@ void IOControl::ioread( IOInfo* it )
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(iopoll):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(iopoll):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll): (BadRange)..." << endl;
dlog3 << myname << "(iopoll): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll): " << ex << endl;
dlog3 << myname << "(iopoll): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll): СORBA::SystemException: "
dlog3 << myname << "(iopoll): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.is_level3() )
dlog.level3() << myname << "(iopoll): catch ..." << endl;
dlog3 << myname << "(iopoll): catch ..." << endl;
}
}
......@@ -688,8 +654,7 @@ void IOControl::readConfiguration()
UniXML_iterator it(root);
if( !it.goChildren() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(readConfiguration): section <sensors> empty?!!\n";
dwarn << myname << "(readConfiguration): section <sensors> empty?!!\n";
return;
}
......@@ -706,7 +671,7 @@ bool IOControl::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
{
if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initIOItem(it);
return true;
}
// ------------------------------------------------------------------------------------------
......@@ -720,16 +685,15 @@ bool IOControl::initIOItem( UniXML_iterator& it )
if( c.empty() || inf.ncard < 0 || inf.ncard >= (int)cards.size() )
{
if( dlog.is_level3() )
dlog.level3() << myname
<< "(initIOItem): Unknown or bad card number ("
<< inf.ncard << ") for " << it.getProp("name")
dlog3 << myname
<< "(initIOItem): Unknown or bad card number ("
<< inf.ncard << ") for " << it.getProp("name")
<< " set default=" << defCardNum << endl;
inf.ncard = defCardNum;
}
inf.subdev = it.getIntProp("subdev");
if( inf.subdev < 0 )
inf.subdev = DefaultSubdev;
......@@ -749,12 +713,11 @@ bool IOControl::initIOItem( UniXML_iterator& it )
else
inf.subdev = DefaultSubdev;
}
inf.channel = it.getIntProp("channel");
if( inf.channel < 0 || inf.channel > 32 )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(readItem): Unknown channel: " << inf.channel
dwarn << myname << "(readItem): Unknown channel: " << inf.channel
<< " for " << it.getProp("name") << endl;
return false;
}
......@@ -774,9 +737,8 @@ bool IOControl::initIOItem( UniXML_iterator& it )
inf.range = it.getIntProp("range");
if( inf.range < 0 || inf.range > 3 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readItem): Unknown 'range': " << inf.range
<< " for " << it.getProp("name")
dcrit << myname << "(readItem): Unknown 'range': " << inf.range
<< " for " << it.getProp("name")
<< " Must be range=[0..3]" << endl;
return false;
}
......@@ -784,16 +746,14 @@ bool IOControl::initIOItem( UniXML_iterator& it )
inf.aref = it.getIntProp("aref");
if( inf.aref < 0 || inf.aref > 3 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readItem): Unknown 'aref': " << inf.aref
dcrit << myname << "(readItem): Unknown 'aref': " << inf.aref
<< " for " << it.getProp("name")
<< ". Must be aref=[0..3]" << endl;
return false;
}
}
if( dlog.is_level3() )
dlog.level3() << myname << "(readItem): add: " << inf.stype << " " << inf << endl;
dlog3 << myname << "(readItem): add: " << inf.stype << " " << inf << endl;
// если вектор уже заполнен
// то увеличиваем его на 10 элементов (с запасом)
......@@ -807,12 +767,11 @@ bool IOControl::initIOItem( UniXML_iterator& it )
{
IOPriority p(prior,maxItem);
pmap.push_back(p);
if( dlog.is_level3() )
dlog.level3() << myname << "(readItem): add to priority list: "
<< it.getProp("name")
dlog3 << myname << "(readItem): add to priority list: "
<< it.getProp("name")
<< " priority=" << prior << endl;
}
iomap[maxItem++] = inf;
return true;
}
......@@ -820,7 +779,7 @@ bool IOControl::initIOItem( UniXML_iterator& it )
bool IOControl::activateObject()
{
// блокирование обработки Startup
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
......@@ -860,20 +819,18 @@ void IOControl::sigterm( int signo )
bool set = it->invert ? !((bool)it->safety) : (bool)it->safety;
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);
}
}
catch( Exception& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(sigterm): " << ex << endl;
dlog3 << myname << "(sigterm): " << ex << endl;
}
catch(...){}
}
while( term ){}
}
// -----------------------------------------------------------------------------
......@@ -904,8 +861,7 @@ void IOControl::initOutputs()
}
catch( Exception& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(initOutput): " << ex << endl;
dlog3 << myname << "(initOutput): " << ex << endl;
}
}
}
......@@ -926,7 +882,7 @@ void IOControl::initIOCard()
continue;
try
{
{
// конфигурировать необходимо только дискретные входы/выходы
// или "лампочки" (т.к. они фиктивные аналоговые датчики)
if( it->lamp )
......@@ -946,11 +902,10 @@ void IOControl::initIOCard()
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initIOCard): sid=" << it->si.id << " " << ex << endl;
dcrit << myname << "(initIOCard): sid=" << it->si.id << " " << ex << endl;
}
}
}
}
// -----------------------------------------------------------------------------
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 )
{
IOInfo* io(*it);
if( io->subdev==DefaultSubdev || io->channel==DefaultChannel )
continue;
......@@ -974,11 +929,10 @@ void IOControl::blink( BlinkList& lst, bool& bstate )
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(blink): " << ex << endl;
dcrit << myname << "(blink): " << ex << endl;
}
}
bstate ^= true;
}
// -----------------------------------------------------------------------------
......@@ -990,7 +944,7 @@ void IOControl::addBlink( IOInfo* io, BlinkList& lst )
if( (*it) == io )
return;
}
lst.push_back(io);
}
// -----------------------------------------------------------------------------
......@@ -1018,9 +972,9 @@ void IOControl::check_testmode()
if( prev_testmode == testmode )
return;
prev_testmode = testmode;
// если режим "выключено всё"
// то гасим все выходы
if( testmode == tmOffPoll )
......@@ -1052,15 +1006,14 @@ void IOControl::check_testmode()
bool set = it->invert ? !((bool)it->safety) : (bool)it->safety;
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);
}
}
catch( Exception& ex )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(sigterm): " << ex << endl;
dlog3 << myname << "(sigterm): " << ex << endl;
}
catch(...){}
}
......@@ -1069,12 +1022,11 @@ void IOControl::check_testmode()
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(check_testmode): " << ex << endl;
dcrit << myname << "(check_testmode): " << ex << endl;
}
catch(...)
{
dcrit << myname << "(check_testmode): catch ..." << endl;
}
}
// -----------------------------------------------------------------------------
......@@ -1087,14 +1039,14 @@ void IOControl::check_testlamp()
{
if( force_out )
isTestLamp = shm->localGetValue( itTestLamp, testLamp_S );
if( !trTestLamp.change(isTestLamp) )
return; // если состояние не менялось, то продолжаем работу...
if( isTestLamp )
blink_state = true; // первый такт всегда зажигаем...
// cout << myname << "(check_test_lamp): ************* test lamp "
// cout << myname << "(check_test_lamp): ************* test lamp "
// << isTestLamp << " *************" << endl;
// проходим по списку и формируем список мигающих выходов...
......@@ -1102,7 +1054,7 @@ void IOControl::check_testlamp()
{
if( !it->lamp || it->no_testlamp )
continue;
if( it->stype == UniversalIO::AO )
{
if( isTestLamp )
......@@ -1135,12 +1087,11 @@ void IOControl::check_testlamp()
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(check_testlamp): " << ex << endl;
dcrit << myname << "(check_testlamp): " << ex << endl;
}
catch(...)
{
dcrit << myname << "(check_testlamp): catch ..." << endl;
}
}
......@@ -1159,15 +1110,14 @@ IOControl* IOControl::init_iocontrol( int argc, const char* const* argv,
ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
cerr << "(iocontrol): Unknown ID for " << name
cerr << "(iocontrol): Unknown ID for " << name
<< "' Not found in <objects>" << endl;
return 0;
}
int numcards = conf->getArgPInt("--"+prefix+"-numcards",1);
if( dlog.is_info() )
dlog.info() << "(iocontrol): name = " << name << "(" << ID << ")" << endl;
dinfo << "(iocontrol): name = " << name << "(" << ID << ")" << endl;
return new IOControl(ID,icID,ic,numcards,prefix);
}
// -----------------------------------------------------------------------------
......@@ -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-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком." << 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-out - Обновлять выходы принудительно (не по заказу)" << endl;
cout << "--prefix-skip-init-output - Не инициализировать 'выходы' при старте" << endl;
......@@ -1233,12 +1183,11 @@ void IOControl::processingMessage( UniSetTypes::VoidMessage* msg )
default:
break;
}
}
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): " << ex << endl;
dcrit << myname << "(processingMessage): " << ex << endl;
}
}
// -----------------------------------------------------------------------------
......@@ -1250,16 +1199,15 @@ void IOControl::sysCommand( SystemMessage* sm )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
if( dlog.is_info() )
dlog.info() << myname << "(sysCommand): wait activate..." << endl;
{
dinfo << myname << "(sysCommand): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated && dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
if( !activated )
dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
askSensors(UniversalIO::UIONotify);
break;
......@@ -1273,7 +1221,7 @@ void IOControl::sysCommand( SystemMessage* sm )
case SystemMessage::WatchDog:
{
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
// Если идёт локальная работа
// Если идёт локальная работа
// (т.е. IOControl запущен в одном процессе с SharedMemory2)
// то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM
// при заказе датчиков, а если SM вылетит, то вместе с этим процессом(IOControl)
......@@ -1293,7 +1241,7 @@ void IOControl::sysCommand( SystemMessage* sm )
}
}
catch(...){}
}
}
break;
case SystemMessage::LogRotate:
......@@ -1328,16 +1276,15 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
return;
waitSM();
if( sidTestSMReady!=DefaultObjectId &&
if( sidTestSMReady!=DefaultObjectId &&
!shm->waitSMworking(sidTestSMReady ,activateTimeout,50) )
{
ostringstream err;
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
......@@ -1345,15 +1292,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
PassiveTimer ptAct(activateTimeout);
while( !readconf_ok && !ptAct.checkTime() )
{
if( dlog.is_info() )
dlog.info() << myname << "(askSensors): wait read configuration..." << endl;
dinfo << myname << "(askSensors): wait read configuration..." << endl;
msleep(50);
if( readconf_ok )
break;
}
if( !readconf_ok && dlog.is_crit() )
dlog.crit() << myname << "(askSensors): ************* don`t read configuration?! ************" << endl;
if( !readconf_ok )
dcrit << myname << "(askSensors): ************* don`t read configuration?! ************" << endl;
try
{
......@@ -1362,8 +1308,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(askSensors): " << ex << endl;
dcrit << myname << "(askSensors): " << ex << endl;
}
try
......@@ -1373,8 +1318,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(askSensors): " << ex << endl;
dcrit << myname << "(askSensors): " << ex << endl;
}
for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it )
......@@ -1396,8 +1340,7 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
}
catch( Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(askSensors): " << ex << endl;
dcrit << myname << "(askSensors): " << ex << endl;
}
}
}
......@@ -1405,19 +1348,14 @@ void IOControl::askSensors( UniversalIO::UIOCommand cmd )
// -----------------------------------------------------------------------------
void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
{
if( dlog.is_level1() )
{
dlog.level1() << myname << "(sensorInfo): sm->id=" << sm->id
dlog1 << myname << "(sensorInfo): sm->id=" << sm->id
<< " val=" << sm->value << endl;
}
if( force_out )
return;
if( sm->id == testLamp_S )
{
if( dlog.is_info() )
dlog.info() << myname << "(sensorInfo): test_lamp=" << sm->value << endl;
dinfo << myname << "(sensorInfo): test_lamp=" << sm->value << endl;
isTestLamp = (bool)sm->value;
}
else if( sm->id == testMode_as )
......@@ -1430,12 +1368,9 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
{
if( it->si.id == sm->id )
{
if( dlog.is_info() )
{
dlog.info() << myname << "(sensorInfo): sid=" << sm->id
dinfo << myname << "(sensorInfo): sid=" << sm->id
<< " value=" << sm->value
<< endl;
}
if( it->stype == UniversalIO::AO )
{
......@@ -1457,7 +1392,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
delBlink(&(*it),lstBlink2);
delBlink(&(*it),lstBlink3);
break;
case lmpON:
delBlink(&(*it),lstBlink);
delBlink(&(*it),lstBlink2);
......@@ -1496,7 +1431,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
// (так комфортнее выглядит для оператора)
if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel )
break;
ComediInterface* card = cards.getCard(it->ncard);
if( card != NULL )
......@@ -1516,7 +1451,7 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
// (так комфортнее выглядит для оператора)
if( it->ignore || it->subdev==DefaultSubdev || it->channel==DefaultChannel )
break;
ComediInterface* card = cards.getCard(it->ncard);
if( card != NULL )
......@@ -1532,17 +1467,14 @@ void IOControl::sensorInfo( UniSetTypes::SensorMessage* sm )
}
else if( it->stype == UniversalIO::DO )
{
if( dlog.is_level1() )
{
dlog.level1() << myname << "(sensorInfo): DO: sm->id=" << sm->id
dlog1 << myname << "(sensorInfo): DO: sm->id=" << sm->id
<< " val=" << sm->value << endl;
}
uniset_rwmutex_wrlock lock(it->val_lock);
it->value = sm->value ? 1:0;
}
break;
}
}
}
// -----------------------------------------------------------------------------
......@@ -1559,8 +1491,7 @@ void IOControl::waitSM()
err << myname << "(execute): did not wait for the ready 'SharedMemory'. Timeout "
<< smReadyTimeout << " msec";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -1570,16 +1501,14 @@ void IOControl::buildCardsList()
xmlNode* nnode = conf->getXMLNodesSection();
if( !nnode )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildCardsList): <nodes> not found?!" << endl;
dwarn << myname << "(buildCardsList): <nodes> not found?!" << endl;
return;
}
UniXML* xml = conf->getConfXML();
if( !xml )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildCardsList): xml=NULL?!" << endl;
dwarn << myname << "(buildCardsList): xml=NULL?!" << endl;
return;
}
......@@ -1597,27 +1526,24 @@ void IOControl::buildCardsList()
if( !mynode )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildCardsList): node='" << conf->getLocalNodeName() << "' not found.." << endl;
dwarn << myname << "(buildCardsList): node='" << conf->getLocalNodeName() << "' not found.." << endl;
return;
}
//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","");
if( !cnode )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildCardsList): Not found <iocards> for node=" << conf->getLocalNodeName() << "(" << conf->getLocalNode() << ")" << endl;
dwarn << myname << "(buildCardsList): Not found <iocards> for node=" << conf->getLocalNodeName() << "(" << conf->getLocalNode() << ")" << endl;
return;
}
UniXML_iterator it(cnode);
if( !it.goChildren() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildCardsList): <iocards> empty.." << endl;
dwarn << myname << "(buildCardsList): <iocards> empty.." << endl;
return;
}
......@@ -1630,29 +1556,26 @@ void IOControl::buildCardsList()
for( ; it.getCurrent(); it.goNext() )
{
std::string cname(it.getProp("name"));
int cardnum = it.getIntProp("card");
if( cardnum <=0 )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(init): Unknown card number?! card=" << it.getIntProp("card") << "(" << cname << ")" << endl;
dlog3 << myname << "(init): Unknown card number?! card=" << it.getIntProp("card") << "(" << cname << ")" << endl;
continue;
}
if( cardnum > maxCardNum )
{
if( dlog.is_level3() )
dlog.level3() << myname << "(init): BAD card number card='" << it.getIntProp("card") << "'(" << cname << "). Must be < " << maxCardNum << endl;
dlog3 << myname << "(init): BAD card number card='" << it.getIntProp("card") << "'(" << cname << "). Must be < " << maxCardNum << endl;
continue;
}
if( it.getIntProp("ignore") )
{
cards[cardnum] = NULL;
if( dlog.is_level3() )
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! ignore=1" << endl;
continue;
}
......@@ -1660,11 +1583,10 @@ void IOControl::buildCardsList()
stringstream s;
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;
if( dlog.is_level3() )
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! (" << s.str() << ")" << endl;
continue;
}
......@@ -1674,15 +1596,13 @@ void IOControl::buildCardsList()
if( iodev.empty() || iodev == "/dev/null" )
{
cards[cardnum] = NULL;
if( dlog.is_level3() )
dlog.level3() << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! iodev='"
dlog3 << myname << "(init): card=" << it.getProp("card") << "(" << cname << ")"
<< " DISABLED! iodev='"
<< iodev << "'" << endl;
continue;
}
if( dlog.is_level3() )
dlog.level3() << myname << "(init): ADD card=" << it.getProp("card") << "(" << cname << ")" << " dev=" << iodev << endl;
dlog3 << myname << "(init): ADD card=" << it.getProp("card") << "(" << cname << ")" << " dev=" << iodev << endl;
try
{
......@@ -1691,8 +1611,7 @@ void IOControl::buildCardsList()
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(buildCardsList): " << ex << endl;
dcrit << myname << "(buildCardsList): " << ex << endl;
throw;
}
......@@ -1710,18 +1629,17 @@ void IOControl::buildCardsList()
int k = 4;
if( cname == "UNIO48" )
k = 2;
// инициализация subdev-ов
for( int i=1; i<=k; i++ )
{
ostringstream s;
s << "subdev" << i;
string subdev_name( it.getProp(s.str()) );
if( subdev_name.empty() )
{
if( dlog.is_info() )
dlog.info() << myname << "(buidCardList): empty subdev. ignore... (" << s.str() << ")" << endl;
dinfo << myname << "(buidCardList): empty subdev. ignore... (" << s.str() << ")" << endl;
continue;
}
......@@ -1737,15 +1655,13 @@ void IOControl::buildCardsList()
if( st == ComediInterface::GRAYHILL )
{
// для Grayhill конфигурирование не требуется
if( dlog.is_info() )
dlog.info() << myname << "(buildCardsList): card=" << it.getProp("card")
dinfo << myname << "(buildCardsList): card=" << it.getProp("card")
<< "(" << cname << ")"
<< " init subdev" << i << " 'GRAYHILL'" << endl;
continue;
}
if( dlog.is_info() )
dlog.info() << myname << "(buildCardsList): card=" << it.getProp("card")
dinfo << myname << "(buildCardsList): card=" << it.getProp("card")
<< "(" << cname << ")"
<< " init subdev" << i << " " << it.getProp(s.str()) << endl;
cards[cardnum]->configureSubdev(i-1,st);
......
......@@ -48,7 +48,7 @@ int main(int argc, const char **argv)
IOControl* ic = IOControl::init_iocontrol(argc,argv,shmID);
if( !ic )
{
dlog.crit() << "(iocontrol): init не прошёл..." << endl;
dcrit << "(iocontrol): init не прошёл..." << endl;
return 1;
}
......@@ -69,15 +69,15 @@ int main(int argc, const char **argv)
}
catch(SystemError& err)
{
dlog.crit() << "(iocontrol): " << err << endl;
dcrit << "(iocontrol): " << err << endl;
}
catch(Exception& ex)
{
dlog.crit() << "(iocontrol): " << ex << endl;
dcrit << "(iocontrol): " << ex << endl;
}
catch(...)
{
dlog.crit() << "(iocontrol): catch(...)" << endl;
dcrit << "(iocontrol): catch(...)" << endl;
}
return 1;
......
......@@ -35,15 +35,15 @@ void LProcessor::execute( const string& lfile )
}
catch( LogicException& ex )
{
dlog.crit() << logname << "(execute): " << ex << endl;
dcrit << logname << "(execute): " << ex << endl;
}
catch( Exception& ex )
{
dlog.crit() << logname << "(execute): " << ex << endl;
dcrit << logname << "(execute): " << ex << endl;
}
catch(...)
{
dlog.crit() << logname << "(execute): catch...\n";
dcrit << logname << "(execute): catch...\n";
}
msleep(sleepTime);
}
......@@ -54,12 +54,12 @@ void LProcessor::step()
getInputs();
processing();
setOuts();
}
}
// -------------------------------------------------------------------------
void LProcessor::build( const string& lfile )
{
sch.read(lfile);
// составляем карту внешних входов
// считая, что в поле name записано название датчика
for( Schema::EXTiterator it=sch.extBegin(); it!=sch.extEnd(); ++it )
......@@ -67,7 +67,7 @@ void LProcessor::build( const string& lfile )
UniSetTypes::ObjectId sid = conf->getSensorID(it->name);
if( sid == DefaultObjectId )
{
dlog.crit() << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ДАТЧИКА: " << it->name << endl;
dcrit << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ДАТЧИКА: " << it->name << endl;
continue;
}
......@@ -78,18 +78,18 @@ void LProcessor::build( const string& lfile )
ei.iotype = conf->getIOType(sid);
if( ei.iotype == UniversalIO::UnknownIOType )
{
dlog.crit() << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl;
continue;
}
dcrit << "Unkown iotype for sid=" << sid << "(" << it->name << ")" << endl;
continue;
}
extInputs.push_front(ei);
}
for( Schema::OUTiterator it=sch.outBegin(); it!=sch.outEnd(); ++it )
{
UniSetTypes::ObjectId sid = conf->getSensorID(it->name);
if( sid == DefaultObjectId )
{
dlog.crit() << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ВЫХОДА: " << it->name << endl;
dcrit << "НЕ НАЙДЕН ИДЕНТИФИКАТОР ВЫХОДА: " << it->name << endl;
continue;
}
......@@ -99,13 +99,13 @@ void LProcessor::build( const string& lfile )
ei.iotype = conf->getIOType(sid);
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;
}
extOuts.push_front(ei);
}
}
// -------------------------------------------------------------------------
/*!
......@@ -147,11 +147,11 @@ void LProcessor::setOuts()
}
catch( Exception& ex )
{
dlog.crit() << "(LProcessor::setOuts): " << ex << endl;
dcrit << "(LProcessor::setOuts): " << ex << endl;
}
catch(...)
{
dlog.crit() << "(LProcessor::setOuts): catch...\n";
dcrit << "(LProcessor::setOuts): catch...\n";
}
}
}
......
......@@ -24,8 +24,7 @@ PassiveLProcessor::PassiveLProcessor( std::string lfile, UniSetTypes::ObjectId o
{
ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
......@@ -52,8 +51,7 @@ void PassiveLProcessor::step()
}
catch(Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
dcrit << myname << "(step): (hb) " << ex << std::endl;
}
if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
......@@ -65,8 +63,7 @@ void PassiveLProcessor::step()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
dcrit << myname << "(step): (hb) " << ex << std::endl;
}
}
......@@ -86,8 +83,7 @@ void PassiveLProcessor::askSensors( UniversalIO::UIOCommand cmd )
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(askSensors): " << ex << endl;
dcrit << myname << "(askSensors): " << ex << endl;
throw SystemError(myname +"(askSensors): do not ask sensors" );
}
}
......@@ -115,8 +111,7 @@ void PassiveLProcessor::sysCommand( UniSetTypes::SystemMessage *sm )
{
if( !shm->waitSMready(smReadyTimeout) )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(ERR): SM not ready. Terminated... " << endl;
dcrit << myname << "(ERR): SM not ready. Terminated... " << endl;
raise(SIGTERM);
return;
}
......@@ -202,11 +197,11 @@ void PassiveLProcessor::setOuts()
}
catch( Exception& ex )
{
dlog.crit() << myname << "(setOuts): " << ex << endl;
dcrit << myname << "(setOuts): " << ex << endl;
}
catch(...)
{
dlog.crit() << myname << "(setOuts): catch...\n";
dcrit << myname << "(setOuts): catch...\n";
}
}
}
......@@ -221,11 +216,11 @@ void PassiveLProcessor::sigterm( int signo )
}
catch( Exception& ex )
{
dlog.crit() << myname << "(sigterm): " << ex << endl;
dcrit << myname << "(sigterm): " << ex << endl;
}
catch(...)
{
dlog.crit() << myname << "(sigterm): catch...\n";
dcrit << myname << "(sigterm): catch...\n";
}
}
}
......@@ -263,7 +258,7 @@ void PassiveLProcessor::processingMessage( UniSetTypes::VoidMessage* msg )
}
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
// -------------------------------------------------------------------------
Element* Schema::manage( Element* el )
{
if( dlog.is_info() )
dlog.info() << "Schema: manage new element id=" << el->getId()
dinfo << "Schema: manage new element id=" << el->getId()
<< " type=" << el->getType()
<< " inputs=" << el->inCount() << endl;
......
......@@ -23,8 +23,8 @@ void TAND::setIn( int num, bool state )
{
if( it->state == state )
return; // вход не менялся можно вообще прервать проверку
it->state = state;
it->state = state;
break;
}
}
......@@ -47,8 +47,7 @@ void TAND::setIn( int num, bool state )
if( !brk )
myout = true;
if( dlog.is_info() )
dlog.info() << this << ": myout " << myout << endl;
dinfo << this << ": myout " << myout << endl;
if( prev != myout )
Element::setChildOut();
......
......@@ -30,8 +30,7 @@ void TDelay::setIn( int num, bool state )
{
pt.setTiming(0); // reset timer
myout = false;
if( dlog.is_info() )
dlog.info() << this << ": set " << myout << endl;
dinfo << this << ": set " << myout << endl;
if( prev != myout )
Element::setChildOut();
return;
......@@ -44,8 +43,7 @@ void TDelay::setIn( int num, bool state )
{
pt.setTiming(0); // reset timer
myout = true;
if( dlog.is_info() )
dlog.info() << this << ": set " << myout << endl;
dinfo << this << ": set " << myout << endl;
if( prev != myout )
Element::setChildOut();
return;
......@@ -54,8 +52,7 @@ void TDelay::setIn( int num, bool state )
// засекаем, если ещё не установлен таймер
if( !myout && !prev ) // т.е. !myout && prev != myout
{
if( dlog.is_info() )
dlog.info() << this << ": set timer " << delay << " [msec]" << endl;
dinfo << this << ": set timer " << delay << " [msec]" << endl;
pt.setTiming(delay);
}
}
......@@ -66,15 +63,14 @@ void TDelay::tick()
{
myout = true;
pt.setTiming(0); // reset timer
if( dlog.is_info() )
dlog.info() << getType() << "(" << myid << "): TIMER!!!! myout=" << myout << endl;
dinfo << getType() << "(" << myid << "): TIMER!!!! myout=" << myout << endl;
Element::setChildOut();
}
}
// -------------------------------------------------------------------------
bool TDelay::getOut()
{
return myout;
return myout;
}
// -------------------------------------------------------------------------
void TDelay::setDelay( int timeMS )
......
......@@ -22,9 +22,6 @@ void TNOT::setIn( int num, bool state )
bool prev = myout;
myout = !state;
if( dlog.is_info() )
dlog.info() << this << ": myout " << myout << endl;
if( prev != myout )
Element::setChildOut();
}
......
......@@ -29,15 +29,15 @@ TOR::~TOR()
void TOR::setIn( int num, bool state )
{
// cout << getType() << "(" << myid << "): input " << num << " set " << state << endl;
for( InputList::iterator it=ins.begin(); it!=ins.end(); ++it )
{
if( it->num == num )
{
if( it->state == state )
return; // вход не менялся можно вообще прервать проверку
it->state = state;
it->state = state;
break;
}
}
......@@ -60,8 +60,7 @@ void TOR::setIn( int num, bool state )
if( !brk )
myout = false;
if( dlog.is_info() )
dlog.info() << this << ": myout " << myout << endl;
dinfo << this << ": myout " << myout << endl;
if( prev != myout )
Element::setChildOut();
}
......
......@@ -29,7 +29,7 @@ int main(int argc, const char **argv)
string schema = conf->getArgParam("--schema");
if( schema.empty() )
{
dlog.crit() << "schema-file not defined. Use --schema" << endl;
dcrit << "schema-file not defined. Use --schema" << endl;
return 1;
}
......
......@@ -52,9 +52,8 @@ pollActivated(false)
// определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field");
s_fvalue = conf->getArgParam("--" + prefix + "-filter-value");
if( dlog.is_info() )
dlog.info() << myname << "(init): read fileter-field='" << s_field
<< "' filter-value='" << s_fvalue << "'" << endl;
dinfo << myname << "(init): read fileter-field='" << s_field
<< "' filter-value='" << s_fvalue << "'" << endl;
stat_time = conf->getArgPInt("--" + prefix + "-statistic-sec",it.getProp("statistic_sec"),0);
if( stat_time > 0 )
......@@ -76,7 +75,7 @@ pollActivated(false)
noQueryOptimization = conf->getArgInt("--" + prefix + "-no-query-optimization",it.getProp("no_query_optimization"));
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);
......@@ -97,8 +96,7 @@ pollActivated(false)
{
ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
......@@ -118,13 +116,12 @@ pollActivated(false)
{
ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
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"));
if( !emode.empty() )
......@@ -134,8 +131,7 @@ pollActivated(false)
{
ostringstream err;
err << myname << ": ID not found ('ExchangeMode') for " << emode;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -200,8 +196,7 @@ void MBExchange::waitSMReady()
{
ostringstream err;
err << myname << "(waitSMReady): failed waiting SharedMemory " << ready_timeout << " msec";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -222,8 +217,7 @@ void MBExchange::step()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
dcrit << myname << "(step): (hb) " << ex << std::endl;
}
}
}
......@@ -243,8 +237,7 @@ void MBExchange::setProcActive( bool st )
// -----------------------------------------------------------------------------
void MBExchange::sigterm( int signo )
{
if( dlog.is_warn() )
dlog.warn() << myname << ": ********* SIGTERM(" << signo << ") ********" << endl;
dwarn << myname << ": ********* SIGTERM(" << signo << ") ********" << endl;
setProcActive(false);
UniSetObject_LT::sigterm(signo);
}
......@@ -263,8 +256,7 @@ void MBExchange::readConfiguration()
UniXML_iterator it(root);
if( !it.goChildren() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
dcrit << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
return;
}
......@@ -273,7 +265,7 @@ void MBExchange::readConfiguration()
if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initItem(it);
}
// readconf_ok = true;
}
// ------------------------------------------------------------------------------------------
......@@ -326,32 +318,28 @@ bool MBExchange::checkUpdateSM( bool wrFunc, long mdev )
if( wrFunc )
return true; // данные для посылки, должны обновляться всегда (чтобы быть актуальными)
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
<< " skip... mode='emSkipExchange' " << endl;
dlog3 << "(checkUpdateSM):"
<< " skip... mode='emSkipExchange' " << endl;
return false;
}
if( wrFunc && (exchangeMode == emReadOnly || mdev == emReadOnly) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
dlog3 << "(checkUpdateSM):"
<< " skip... mode='emReadOnly' " << endl;
return false;
}
if( !wrFunc && (exchangeMode == emWriteOnly || mdev == emWriteOnly) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
dlog3 << "(checkUpdateSM):"
<< " skip... mode='emWriteOnly' " << endl;
return false;
}
if( wrFunc && (exchangeMode == emSkipSaveToSM || mdev == emSkipSaveToSM) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << "(checkUpdateSM):"
dlog3 << "(checkUpdateSM):"
<< " skip... mode='emSkipSaveToSM' " << endl;
return false;
}
......@@ -363,16 +351,13 @@ bool MBExchange::checkPoll( bool wrFunc )
{
if( exchangeMode == emWriteOnly && !wrFunc )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(checkPoll): skip.. mode='emWriteOnly'" << endl;
dlog3 << myname << "(checkPoll): skip.. mode='emWriteOnly'" << endl;
return false;
}
if( exchangeMode == emReadOnly && wrFunc )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(checkPoll): skip.. poll mode='emReadOnly'" << endl;
dlog3 << myname << "(checkPoll): skip.. poll mode='emReadOnly'" << endl;
return false;
}
......@@ -461,12 +446,12 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m )
if( noQueryOptimization )
return;
dlog.info() << myname << "(rtuQueryOptimization): optimization..." << endl;
dinfo << myname << "(rtuQueryOptimization): optimization..." << endl;
for( MBExchange::RTUDeviceMap::iterator it1=m.begin(); it1!=m.end(); ++it1 )
{
RTUDevice* d(it1->second);
// Вообще в map они уже лежат в нужном порядке, т.е. функция genRegID() гарантирует
// что регистры идущие подряд с одниковой функцией чтения/записи получат подряд идущие ID.
// так что оптимтизация это просто нахождение мест где id идут не подряд...
......@@ -498,19 +483,17 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& m )
// check correct function...
if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnWriteOutputSingleRegister )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(rtuQueryOptimization): "
dwarn << myname << "(rtuQueryOptimization): "
<< " optimization change func=" << ModbusRTU::fnWriteOutputSingleRegister
<< " <--> func=" << ModbusRTU::fnWriteOutputRegisters
<< " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
<< " mbreg=" << ModbusRTU::dat2str(beg->second->mbreg);
beg->second->mbfunc = ModbusRTU::fnWriteOutputRegisters;
}
else if( beg->second->q_count>1 && beg->second->mbfunc==ModbusRTU::fnForceSingleCoil )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(rtuQueryOptimization): "
dwarn << myname << "(rtuQueryOptimization): "
<< " optimization change func=" << ModbusRTU::fnForceSingleCoil
<< " <--> func=" << ModbusRTU::fnForceMultipleCoils
<< " for mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
......@@ -550,12 +533,9 @@ void MBExchange::firstInitRegisters()
catch( ModbusRTU::mbException& ex )
{
allInitOK = false;
if( dlog.debugging(Debug::LEVEL3) )
{
dlog[Debug::LEVEL3] << myname << "(preInitRead): FAILED ask addr=" << ModbusRTU::addr2str(it->dev->mbaddr)
dlog3 << myname << "(preInitRead): FAILED ask addr=" << ModbusRTU::addr2str(it->dev->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->mbreg)
<< " err: " << ex << endl;
}
if( !it->dev->ask_every_reg )
break;
......@@ -571,9 +551,9 @@ bool MBExchange::preInitRead( InitList::iterator& p )
RTUDevice* dev = p->dev;
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)
<< " mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " mbfunc=" << p->mbfunc
......@@ -582,7 +562,7 @@ bool MBExchange::preInitRead( InitList::iterator& p )
if( q_count > ModbusRTU::MAXDATALEN )
{
dlog[Debug::LEVEL3] << myname << "(preInitRead): count(" << q_count
dlog3 << myname << "(preInitRead): count(" << q_count
<< ") > MAXDATALEN(" << ModbusRTU::MAXDATALEN
<< " ..ignore..."
<< endl;
......@@ -685,8 +665,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
return true;
}
if( dlog.is_crit() )
dlog.crit() << myname << "(initSMValue): IGNORE item: rnum=" << p->rnum
dcrit << myname << "(initSMValue): IGNORE item: rnum=" << p->rnum
<< " > 1 ?!! for id=" << p->si.id << endl;
return false;
......@@ -719,8 +698,7 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
{
if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initSMValue): IGNORE item: sid=" << ModbusRTU::dat2str(p->si.id)
dcrit << myname << "(initSMValue): IGNORE item: sid=" << ModbusRTU::dat2str(p->si.id)
<< " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl;
return false;
}
......@@ -754,34 +732,28 @@ bool MBExchange::initSMValue( ModbusRTU::ModbusData* data, int count, RSProperty
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(initSMValue):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(initSMValue):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue): (BadRange)..." << endl;
dlog3 << myname << "(initSMValue): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue): " << ex << endl;
dlog3 << myname << "(initSMValue): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue): CORBA::SystemException: "
dlog3 << myname << "(initSMValue): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(initSMValue): catch ..." << endl;
dlog3 << myname << "(initSMValue): catch ..." << endl;
}
return false;
......@@ -793,8 +765,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( dev->mode == emSkipExchange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(pollRTU): SKIP EXCHANGE (mode=emSkipExchange) "
dlog3 << myname << "(pollRTU): SKIP EXCHANGE (mode=emSkipExchange) "
<< " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr)
<< endl;
return true;
......@@ -802,7 +773,7 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( dlog.debugging(Debug::LEVEL3) )
{
dlog[Debug::LEVEL3] << myname << "(pollRTU): poll "
dlog3 << myname << "(pollRTU): poll "
<< " mbaddr=" << ModbusRTU::addr2str(dev->mbaddr)
<< " mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " mbfunc=" << p->mbfunc
......@@ -811,14 +782,13 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
<< " sm_initOK=" << p->sm_initOK
<< " mbval=" << p->mbval
<< endl;
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
<< " ..ignore..."
<< endl;
}
}
......@@ -827,12 +797,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if( p->q_count == 0 )
{
if( dlog.is_info() )
dlog.info() << myname << "(pollRTU): q_count=0 for mbreg=" << ModbusRTU::dat2str(p->mbreg)
dinfo << myname << "(pollRTU): q_count=0 for mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE register..." << endl;
return false;
}
switch( p->mbfunc )
{
case ModbusRTU::fnReadInputRegisters:
......@@ -880,21 +849,19 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
it--;
}
break;
case ModbusRTU::fnWriteOutputSingleRegister:
{
if( p->q_count != 1 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dcrit << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE WRITE SINGLE REGISTER (0x06) q_count=" << p->q_count << " ..." << endl;
return false;
}
if( !p->sm_initOK )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " slist=" << (*p)
<< " IGNORE...(sm_initOK=false)" << endl;
return true;
......@@ -917,20 +884,11 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
// и его просто надо пропустить..
if( p->q_num > 1 )
return true;
// смещаем итератор, если данный запрос содержит много регистров
// 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)
dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl;
return true;
}
}
ModbusRTU::WriteOutputMessage msg(dev->mbaddr,p->mbreg);
for( int i=0; i<p->q_count; i++,it++ )
......@@ -945,20 +903,17 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{
if( p->q_count != 1 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dcrit << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE FORCE SINGLE COIL (0x05) q_count=" << p->q_count << " ..." << endl;
return false;
}
if( !p->sm_initOK )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl;
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);
}
break;
......@@ -967,32 +922,29 @@ bool MBExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{
if( !p->sm_initOK )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dlog3 << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE...(sm_initOK=false)" << endl;
return true;
}
}
ModbusRTU::ForceCoilsMessage msg(dev->mbaddr,p->mbreg);
for( int i=0; i<p->q_count; i++,it++ )
msg.addBit( (it->second->mbval ? true : false) );
it--;
// cerr << "*********** (write multiple): " << msg << endl;
ModbusRTU::ForceCoilsRetMessage ret = mb->write0F(msg);
}
break;
default:
{
if( dlog.is_warn() )
dlog.warn() << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
dwarn << myname << "(pollRTU): mbreg=" << ModbusRTU::dat2str(p->mbreg)
<< " IGNORE mfunc=" << (int)p->mbfunc << " ..." << endl;
return false;
}
break;
}
return true;
}
// -----------------------------------------------------------------------------
......@@ -1011,34 +963,28 @@ void MBExchange::updateSM()
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): (BadRange)..." << endl;
dlog3 << myname << "(updateSM): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): " << ex << endl;
dlog3 << myname << "(updateSM): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): CORBA::SystemException: "
dlog3 << myname << "(updateSM): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): check modeSensor..catch ..." << endl;
dlog3 << myname << "(updateSM): check modeSensor..catch ..." << endl;
}
}
......@@ -1060,36 +1006,30 @@ void MBExchange::updateSM()
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(updateSM):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(updateSM):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): (BadRange)..." << endl;
dlog3 << myname << "(updateSM): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): " << ex << endl;
dlog3 << myname << "(updateSM): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): CORBA::SystemException: "
dlog3 << myname << "(updateSM): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateSM): catch ..." << endl;
dlog3 << myname << "(updateSM): catch ..." << endl;
}
if( it==d->regmap.end() )
break;
}
......@@ -1123,8 +1063,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
if( save && !r->mb_initOK )
return;
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << "updateP: sid=" << p->si.id
dlog3 << "updateP: sid=" << p->si.id
<< " mbval=" << r->mbval
<< " vtype=" << p->vType
<< " rnum=" << p->rnum
......@@ -1192,8 +1131,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
return;
}
if( dlog.is_crit() )
dlog.crit() << myname << "(updateRSProperty): IGNORE item: rnum=" << p->rnum
dcrit << myname << "(updateRSProperty): IGNORE item: rnum=" << p->rnum
<< " > 1 ?!! for id=" << p->si.id << endl;
return;
}
......@@ -1263,8 +1201,7 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
{
if( p->nbyte <= 0 || p->nbyte > VTypes::Byte::bsize )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(updateRSProperty): IGNORE item: reg=" << ModbusRTU::dat2str(r->mbreg)
dcrit << myname << "(updateRSProperty): IGNORE item: reg=" << ModbusRTU::dat2str(r->mbreg)
<< " vtype=" << p->vType << " but nbyte=" << p->nbyte << endl;
return;
}
......@@ -1387,10 +1324,10 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::U2::wsize()];
for( int k=0; k<VTypes::U2::wsize(); k++, i++ )
data[k] = i->second->mbval;
VTypes::U2 u2(data,VTypes::U2::wsize());
delete[] data;
IOBase::processingAsAI( p, (unsigned int)u2, shm, force );
}
}
......@@ -1399,34 +1336,28 @@ void MBExchange::updateRSProperty( RSProperty* p, bool write_only )
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(updateRSProperty):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(updateRSProperty):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): (BadRange)..." << endl;
dlog3 << myname << "(updateRSProperty): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): " << ex << endl;
dlog3 << myname << "(updateRSProperty): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): CORBA::SystemException: "
dlog3 << myname << "(updateRSProperty): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRSProperty): catch ..." << endl;
dlog3 << myname << "(updateRSProperty): catch ..." << endl;
}
// Если SM стала (или была) недоступна
......@@ -1492,21 +1423,20 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::T3::wsize()];
for( int k=0; k<MTR::T3::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::T3 t(data,MTR::T3::wsize());
delete[] data;
IOBase::processingAsAI( &(*it), (long)t, shm, force );
}
continue;
}
if( r->mtrType == MTR::mtT4 )
{
if( save )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(updateMTR): write (T4) reg(" << dat2str(r->mbreg) << ") to MTR NOT YET!!!" << endl;
}
{
dwarn << myname << "(updateMTR): write (T4) reg(" << dat2str(r->mbreg) << ") to MTR NOT YET!!!" << endl;
}
else
{
MTR::T4 t(r->mbval);
......@@ -1514,7 +1444,7 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
}
continue;
}
if( r->mtrType == MTR::mtT5 )
{
RegMap::iterator i(rit);
......@@ -1629,10 +1559,10 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[MTR::F1::wsize()];
for( int k=0; k<MTR::F1::wsize(); k++, i++ )
data[k] = i->second->mbval;
MTR::F1 t(data,MTR::F1::wsize());
delete[] data;
IOBase::processingFasAI( &(*it), (float)t, shm, force );
}
continue;
......@@ -1640,34 +1570,28 @@ void MBExchange::updateMTR( RegMap::iterator& rit )
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(updateMTR):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(updateMTR):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR): (BadRange)..." << endl;
dlog3 << myname << "(updateMTR): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR): " << ex << endl;
dlog3 << myname << "(updateMTR): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR): CORBA::SystemException: "
dlog3 << myname << "(updateMTR): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateMTR): catch ..." << endl;
dlog3 << myname << "(updateMTR): catch ..." << endl;
}
}
}
......@@ -1687,39 +1611,34 @@ void MBExchange::updateRTU188( RegMap::iterator& rit )
// не реализованы
if( isWriteFunction(r->mbfunc) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188): write reg(" << dat2str(r->mbreg) << ") to RTU188 NOT YET!!!" << endl;
dlog3 << myname << "(updateRTU188): write reg(" << dat2str(r->mbreg) << ") to RTU188 NOT YET!!!" << endl;
return;
}
if( exchangeMode == emSkipExchange || r->dev->mode == emSkipExchange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
dlog3 << myname << "(updateRTU188):"
<< " skip... mode=emSkipExchange " << endl;
return;
}
if( save && (exchangeMode == emReadOnly || r->dev->mode == emReadOnly) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
dlog3 << myname << "(updateRTU188):"
<< " skip... mode=emReadOnly " << endl;
return;
}
if( !save && ( exchangeMode == emWriteOnly || r->dev->mode == emWriteOnly) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188):"
dlog3 << myname << "(updateRTU188):"
<< " skip... mode=emWriteOnly " << endl;
return;
}
if( save && ( exchangeMode == emSkipSaveToSM || r->dev->mode == emSkipSaveToSM) )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRT188):"
dlog3 << myname << "(updateRT188):"
<< " skip... mode=emSkipSaveToSM " << endl;
return;
}
......@@ -1741,34 +1660,28 @@ void MBExchange::updateRTU188( RegMap::iterator& rit )
}
catch(IOController_i::NameNotFound &ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188):(NameNotFound) " << ex.err << endl;
dlog3 << myname << "(updateRTU188):(NameNotFound) " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188):(IOBadParam) " << ex.err << endl;
dlog3 << myname << "(updateRTU188):(IOBadParam) " << ex.err << endl;
}
catch(IONotifyController_i::BadRange )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188): (BadRange)..." << endl;
dlog3 << myname << "(updateRTU188): (BadRange)..." << endl;
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188): " << ex << endl;
dlog3 << myname << "(updateRTU188): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188): CORBA::SystemException: "
dlog3 << myname << "(updateRTU188): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(updateRTU188): catch ..." << endl;
dlog3 << myname << "(updateRTU188): catch ..." << endl;
}
}
}
......@@ -1782,16 +1695,14 @@ MBExchange::RTUDevice* MBExchange::addDev( RTUDeviceMap& mp, ModbusRTU::ModbusAd
DeviceType dtype = getDeviceType(xmlit.getProp(prop_prefix + "mbtype"));
if( it->second->dtype != dtype )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(addDev): OTHER mbtype=" << dtype << " for " << xmlit.getProp("name")
dcrit << myname << "(addDev): OTHER mbtype=" << dtype << " for " << xmlit.getProp("name")
<< ". Already used devtype=" << it->second->dtype
<< " for mbaddr=" << ModbusRTU::addr2str(it->second->mbaddr)
<< endl;
return 0;
}
if( dlog.is_info() )
dlog.info() << myname << "(addDev): device for addr=" << ModbusRTU::addr2str(a)
dcrit << myname << "(addDev): device for addr=" << ModbusRTU::addr2str(a)
<< " already added. Ignore device params for " << xmlit.getProp("name") << " ..." << endl;
return it->second;
}
......@@ -1818,26 +1729,23 @@ MBExchange::RegInfo* MBExchange::addReg( RegMap& mp, RegID id, ModbusRTU::Modbus
{
if( !it->second->dev )
{
dlog.crit() << myname << "(addReg): for " << xmlit.getProp("name")
dcrit << myname << "(addReg): for " << xmlit.getProp("name")
<< " dev=0!!!! " << endl;
return 0;
}
if( it->second->dev->dtype != dev->dtype )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(addReg): OTHER mbtype=" << dev->dtype << " for " << xmlit.getProp("name")
dcrit << myname << "(addReg): OTHER mbtype=" << dev->dtype << " for " << xmlit.getProp("name")
<< ". Already used devtype=" << it->second->dev->dtype << " for " << it->second->dev << endl;
return 0;
}
if( dlog.is_info() )
{
dlog.info() << myname << "(addReg): reg=" << ModbusRTU::dat2str(r)
dinfo << myname << "(addReg): reg=" << ModbusRTU::dat2str(r)
<< "(id=" << id << ")"
<< " already added for " << (*it->second)
<< " Ignore register params for " << xmlit.getProp("name") << " ..." << endl;
}
it->second->rit = it;
return it->second;
......@@ -1904,8 +1812,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.stype = UniSetTypes::getIOType(stype);
if( p.stype == UniversalIO::UnknownIOType )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(IOBase::readItem): неизвестный iotype=: "
dcrit << myname << "(IOBase::readItem): неизвестный iotype=: "
<< stype << " for " << it.getProp("name") << endl;
return false;
}
......@@ -1917,8 +1824,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.nbit = UniSetTypes::uni_atoi(sbit.c_str());
if( p.nbit < 0 || p.nbit >= ModbusRTU::BitsPerData )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRSProperty): BAD nbit=" << p.nbit
dcrit << myname << "(initRSProperty): BAD nbit=" << p.nbit
<< ". (0 >= nbit < " << ModbusRTU::BitsPerData <<")." << endl;
return false;
}
......@@ -1928,8 +1834,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
( p.stype == UniversalIO::AI ||
p.stype == UniversalIO::AO ) )
{
if( dlog.is_warn() )
dlog.warn() << "(initRSProperty): (ignore) uncorrect param`s nbit>1 (" << p.nbit << ")"
dwarn << "(initRSProperty): (ignore) uncorrect param`s nbit>1 (" << p.nbit << ")"
<< " but iotype=" << p.stype << " for " << it.getProp("name") << endl;
}
......@@ -1939,8 +1844,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
p.nbyte = UniSetTypes::uni_atoi(sbyte.c_str());
if( p.nbyte < 0 || p.nbyte > VTypes::Byte::bsize )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRSProperty): BAD nbyte=" << p.nbyte
dwarn << myname << "(initRSProperty): BAD nbyte=" << p.nbyte
<< ". (0 >= nbyte < " << VTypes::Byte::bsize << ")." << endl;
return false;
}
......@@ -1957,8 +1861,7 @@ bool MBExchange::initRSProperty( RSProperty& p, UniXML_iterator& it )
VTypes::VType v(VTypes::str2type(vt));
if( v == VTypes::vtUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRSProperty): Unknown tcp_vtype='" << vt << "' for "
dcrit << myname << "(initRSProperty): Unknown tcp_vtype='" << vt << "' for "
<< it.getProp("name")
<< endl;
......@@ -2004,12 +1907,11 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
}
else
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRegInfo): Unknown mbtype='" << dev->dtype
dcrit << myname << "(initRegInfo): Unknown mbtype='" << dev->dtype
<< "' for " << it.getProp("name") << endl;
return false;
}
if( mbregFromID )
{
if( it.getProp("id").empty() )
......@@ -2022,8 +1924,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
string sr = it.getProp(prop_prefix + "mbreg");
if( sr.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
return false;
}
r->mbreg = ModbusRTU::str2mbData(sr);
......@@ -2036,8 +1937,7 @@ bool MBExchange::initRegInfo( RegInfo* r, UniXML_iterator& it, MBExchange::RTUD
r->mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(f.c_str());
if( r->mbfunc == ModbusRTU::fnUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRegInfo): Unknown mbfunc ='" << f
dcrit << myname << "(initRegInfo): Unknown mbfunc ='" << f
<< "' for " << it.getProp("name") << endl;
return false;
}
......@@ -2052,8 +1952,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
if( d->dtype == dtUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRTUDevice): Unknown tcp_mbtype=" << it.getProp(prop_prefix + "mbtype")
dcrit << myname << "(initRTUDevice): Unknown tcp_mbtype=" << it.getProp(prop_prefix + "mbtype")
<< ". Use: rtu "
<< " for " << it.getProp("name") << endl;
return false;
......@@ -2062,8 +1961,7 @@ bool MBExchange::initRTUDevice( RTUDevice* d, UniXML_iterator& it )
string addr = it.getProp(prop_prefix + "mbaddr");
if( addr.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initRTUDevice): Unknown mbaddr for " << it.getProp("name") << endl;
dcrit << myname << "(initRTUDevice): Unknown mbaddr for " << it.getProp("name") << endl;
return false;
}
......@@ -2087,8 +1985,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
string addr(it.getProp(prop_prefix + "mbaddr"));
if( addr.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown mbaddr(" << prop_prefix << "mbaddr)='" << addr << "' for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): Unknown mbaddr(" << prop_prefix << "mbaddr)='" << addr << "' for " << it.getProp("name") << endl;
return false;
}
......@@ -2097,8 +1994,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
RTUDevice* dev = addDev(rmap,mbaddr,it);
if( !dev )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): " << it.getProp("name") << " CAN`T ADD for polling!" << endl;
dcrit << myname << "(initItem): " << it.getProp("name") << " CAN`T ADD for polling!" << endl;
return false;
}
......@@ -2110,8 +2006,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
RegInfo r_tmp;
if( !initRTU188item(it, &r_tmp) )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): init RTU188 failed for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): init RTU188 failed for " << it.getProp("name") << endl;
return false;
}
......@@ -2126,9 +2021,8 @@ bool MBExchange::initItem( UniXML_iterator& it )
{
string reg = it.getProp(prop_prefix + "mbreg");
if( reg.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): unknown mbreg(" << prop_prefix << ") for " << it.getProp("name") << endl;
{
dcrit << myname << "(initItem): unknown mbreg(" << prop_prefix << ") for " << it.getProp("name") << endl;
return false;
}
mbreg = ModbusRTU::str2mbData(reg);
......@@ -2148,12 +2042,11 @@ bool MBExchange::initItem( UniXML_iterator& it )
p.rnum = MTR::wsize(ri->mtrType);
if( p.rnum <= 0 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): unknown word size for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): unknown word size for " << it.getProp("name") << endl;
return false;
}
}
if( !ri )
return false;
......@@ -2173,22 +2066,20 @@ bool MBExchange::initItem( UniXML_iterator& it )
{
if( p.nbit<0 && ri->slst.size() > 1 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): FAILED! Sharing SAVE (not bit saving) to "
dcrit << myname << "(initItem): FAILED! Sharing SAVE (not bit saving) to "
<< " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg)
<< " for " << it.getProp("name") << endl;
abort(); // ABORT PROGRAM!!!!
return false;
}
if( p.nbit >= 0 && ri->slst.size() == 1 )
{
PList::iterator it2 = ri->slst.begin();
if( it2->nbit < 0 )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): FAILED! Sharing SAVE (mbreg="
dcrit << myname << "(initItem): FAILED! Sharing SAVE (mbreg="
<< ModbusRTU::dat2str(ri->mbreg) << " already used)!"
<< " IGNORE --> " << it.getProp("name") << endl;
abort(); // ABORT PROGRAM!!!!
......@@ -2237,8 +2128,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
if( ri->mbfunc != ModbusRTU::fnWriteOutputRegisters &&
ri->mbfunc != ModbusRTU::fnForceMultipleCoils )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Bad write function ='" << ModbusRTU::fnWriteOutputSingleRegister
dcrit << myname << "(initItem): Bad write function ='" << ModbusRTU::fnWriteOutputSingleRegister
<< "' for vtype='" << p1->vType << "'"
<< " tcp_mbreg=" << ModbusRTU::dat2str(ri->mbreg)
<< " for " << it.getProp("name") << endl;
......@@ -2271,8 +2161,7 @@ bool MBExchange::initItem( UniXML_iterator& it )
ii.mbfunc = (ModbusRTU::SlaveFunctionCode)UniSetTypes::uni_atoi(s_mbfunc);
if( ii.mbfunc == ModbusRTU::fnUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown tcp_init_mbfunc ='" << s_mbfunc
dcrit << myname << "(initItem): Unknown tcp_init_mbfunc ='" << s_mbfunc
<< "' for " << it.getProp("name") << endl;
return false;
}
......@@ -2316,8 +2205,7 @@ bool MBExchange::initMTRitem( UniXML_iterator& it, RegInfo* p )
p->mtrType = MTR::str2type(it.getProp(prop_prefix + "mtrtype"));
if( p->mtrType == MTR::mtUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readMTRItem): Unknown mtrtype '"
dcrit << myname << "(readMTRItem): Unknown mtrtype '"
<< it.getProp(prop_prefix + "mtrtype")
<< "' for " << it.getProp("name") << endl;
......@@ -2334,32 +2222,28 @@ bool MBExchange::initRTU188item( UniXML_iterator& it, RegInfo* p )
if( jack.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack='' "
dcrit << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack='' "
<< " for " << it.getProp("name") << endl;
return false;
}
p->rtuJack = RTUStorage::s2j(jack);
if( p->rtuJack == RTUStorage::nUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack=" << jack
dcrit << myname << "(readRTU188Item): Unknown " << prop_prefix << "jack=" << jack
<< " for " << it.getProp("name") << endl;
return false;
}
if( chan.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readRTU188Item): Unknown channel='' "
dcrit << myname << "(readRTU188Item): Unknown channel='' "
<< " for " << it.getProp("name") << endl;
return false;
}
p->rtuChan = UniSetTypes::uni_atoi(chan);
if( dlog.debugging(Debug::LEVEL2) )
dlog[Debug::LEVEL2] << myname << "(readRTU188Item): add jack='" << jack << "'"
dlog2 << myname << "(readRTU188Item): add jack='" << jack << "'"
<< " channel='" << p->rtuChan << "'" << endl;
return true;
......@@ -2427,11 +2311,11 @@ void MBExchange::initDeviceList()
initDeviceInfo(rmap,a,it1);
}
}
else if( dlog.is_warn() )
dlog.warn() << myname << "(init): <DeviceList> empty section..." << endl;
else
dwarn << myname << "(init): <DeviceList> empty section..." << endl;
}
else if( dlog.is_warn() )
dlog.warn() << myname << "(init): <DeviceList> not found..." << endl;
else
dwarn << myname << "(init): <DeviceList> not found..." << endl;
}
// -----------------------------------------------------------------------------
bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXML_iterator& it )
......@@ -2439,15 +2323,13 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
RTUDeviceMap::iterator d = m.find(a);
if( d == m.end() )
{
if( dlog.is_warn() )
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;
}
d->second->ask_every_reg = it.getIntProp("ask_every_reg");
if( dlog.is_info() )
dlog.info() << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a)
dinfo << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a)
<< " ask_every_reg=" << d->second->ask_every_reg << endl;
string s(it.getProp("respondSensor"));
......@@ -2456,8 +2338,7 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
d->second->resp_id = conf->getSensorID(s);
if( d->second->resp_id == DefaultObjectId )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initDeviceInfo): not found ID for respondSensor=" << s << endl;
dinfo << myname << "(initDeviceInfo): not found ID for respondSensor=" << s << endl;
return false;
}
}
......@@ -2468,22 +2349,19 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
d->second->mode_id = conf->getSensorID(mod);
if( d->second->mode_id == DefaultObjectId )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initDeviceInfo): not found ID for modeSensor=" << mod << endl;
dcrit << myname << "(initDeviceInfo): not found ID for modeSensor=" << mod << endl;
return false;
}
UniversalIO::IOType m_iotype = conf->getIOType(d->second->mode_id);
if( m_iotype != UniversalIO::AI )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initDeviceInfo): modeSensor='" << mod << "' must be 'AI'" << endl;
dcrit << myname << "(initDeviceInfo): modeSensor='" << mod << "' must be 'AI'" << endl;
return false;
}
}
if( dlog.is_info() )
dlog.info() << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
dinfo << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
int tout = it.getPIntProp("timeout",5000);
d->second->resp_ptTimeout.setTiming(tout);
d->second->resp_invert = it.getIntProp("invert");
......@@ -2541,19 +2419,16 @@ void MBExchange::processingMessage(UniSetTypes::VoidMessage *msg)
}
catch( SystemError& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
dcrit << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex);
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
dcrit << myname << "(processingMessage): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): catch ...\n";
dcrit << myname << "(processingMessage): catch ...\n";
}
}
// -----------------------------------------------------------------------------
......@@ -2565,18 +2440,16 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm )
{
if( rmap.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): ************* ITEM MAP EMPTY! terminated... *************" << endl;
dcrit << myname << "(sysCommand): ************* ITEM MAP EMPTY! terminated... *************" << endl;
raise(SIGTERM);
return;
}
if( dlog.is_info() )
dlog.info() << myname << "(sysCommand): device map size= " << rmap.size() << endl;
dinfo << myname << "(sysCommand): device map size= " << rmap.size() << endl;
if( !shm->isLocalwork() )
initDeviceList();
waitSMReady();
// подождать пока пройдёт инициализация датчиков
......@@ -2590,10 +2463,9 @@ void MBExchange::sysCommand( UniSetTypes::SystemMessage *sm )
if( activated )
break;
}
if( !activated && dlog.debugging(Debug::CRIT) )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
if( !activated )
dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
{
UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
askSensors(UniversalIO::UIONotify);
......@@ -2672,7 +2544,7 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек";
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
......@@ -2684,13 +2556,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
}
catch( UniSetTypes::Exception& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
dwarn << myname << "(askSensors): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): 'sidExchangeMode' catch..." << std::endl;
dwarn << myname << "(askSensors): 'sidExchangeMode' catch..." << std::endl;
}
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
......@@ -2704,13 +2574,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
}
catch( UniSetTypes::Exception& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
dwarn << myname << "(askSensors): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): (mode_id=" << d->mode_id << ").. catch..." << std::endl;
dwarn << myname << "(askSensors): (mode_id=" << d->mode_id << ").. catch..." << std::endl;
}
if( force_out )
......@@ -2729,13 +2597,11 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
}
catch( UniSetTypes::Exception& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
dwarn << myname << "(askSensors): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): id=" << i->si.id << " catch..." << std::endl;
dwarn << myname << "(askSensors): id=" << i->si.id << " catch..." << std::endl;
}
}
}
......@@ -2747,8 +2613,7 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
if( sm->id == sidExchangeMode )
{
exchangeMode = sm->value;
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(sensorInfo): exchange MODE=" << sm->value << std::endl;
dlog3 << myname << "(sensorInfo): exchange MODE=" << sm->value << std::endl;
//return; // этот датчик может встречаться и в списке обмена.. поэтому делать return нельзя.
}
......@@ -2771,13 +2636,10 @@ void MBExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
{
if( sm->id == i->si.id && sm->node == i->si.node )
{
if( dlog.is_info() )
{
dlog.info() << myname<< "(sensorInfo): si.id=" << sm->id
dinfo << myname<< "(sensorInfo): si.id=" << sm->id
<< " reg=" << ModbusRTU::dat2str(i->reg->mbreg)
<< " val=" << sm->value
<< " mb_initOK=" << i->reg->mb_initOK << endl;
}
if( !i->reg->mb_initOK )
continue;
......@@ -2846,8 +2708,7 @@ void MBExchange::poll()
if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange )
continue;
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->regmap.size() << endl;
d->resp_real = false;
......@@ -2855,7 +2716,7 @@ void MBExchange::poll()
{
if( !checkProcActive() )
return;
try
{
if( d->dtype==MBExchange::dtRTU || d->dtype==MBExchange::dtMTR )
......@@ -2868,14 +2729,10 @@ void MBExchange::poll()
{
// if( d->resp_real )
// {
if( dlog.debugging(Debug::LEVEL3) )
{
dlog[Debug::LEVEL3] << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->second->mbreg)
<< " for sensors: "; print_plist(dlog(Debug::LEVEL3),it->second->slst);
dlog(Debug::LEVEL3) << " err: " << ex << endl;
}
// }
<< " for sensors: "; print_plist(dlog(Debug::LEVEL3),it->second->slst)
<< endl << " err: " << ex << endl;
// d->resp_real = false;
if( ex.err == ModbusRTU::erTimeOut && !d->ask_every_reg )
......@@ -2939,8 +2796,7 @@ void MBExchange::poll()
if( allNotRespond && ptReopen.checkTime() )
{
uniset_mutex_lock l(pollMutex, 300);
if( dlog.is_warn() )
dlog.warn() << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
dwarn << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
mb = initMB(true);
ptReopen.reset();
......@@ -2994,15 +2850,12 @@ void MBExchange::updateRespondSensors()
if( chanTimeout )
it1->second->resp_real = false;
if( dlog.debugging(Debug::LEVEL4) )
{
dlog[Debug::LEVEL4] << myname << ": check respond addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog4 << myname << ": check respond addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " respond_id=" << d->resp_id
<< " real=" << d->resp_real
<< " state=" << d->resp_state
<< endl;
}
if( d->checkRespond() && d->resp_id != DefaultObjectId )
{
......@@ -3013,8 +2866,7 @@ void MBExchange::updateRespondSensors()
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(step): (respond) " << ex << std::endl;
dcrit << myname << "(step): (respond) " << ex << std::endl;
}
}
}
......@@ -3040,13 +2892,11 @@ void MBExchange::execute()
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(execute): " << ex << std::endl;
dcrit << myname << "(execute): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(execute): catch ..." << endl;
dcrit << myname << "(execute): catch ..." << endl;
}
msleep(polltime);
......
......@@ -38,7 +38,7 @@ pollThread(0)
prop_prefix = "";
}
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl;
dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode);
......@@ -55,7 +55,7 @@ pollThread(0)
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() )
{
......@@ -103,19 +103,17 @@ ModbusClient* MBTCPMaster::initMB( bool reopen )
mbtcp->setTimeout(recv_timeout);
mbtcp->setSleepPause(sleepPause_usec);
mbtcp->setAfterSendPause(aftersend_pause);
if( dlog.is_info() )
dlog.info() << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
if( dlog.debugging(Debug::LEVEL9) )
dinfo << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
if( dlog.is_level9() )
mbtcp->setLog(dlog);
}
catch( ModbusRTU::mbException& ex )
{
if( dlog.is_warn() )
dlog.warn() << "(init): " << ex << endl;
dwarn << "(init): " << ex << endl;
}
catch(...)
{
......@@ -182,23 +180,20 @@ MBTCPMaster* MBTCPMaster::init_mbmaster( int argc, const char* const* argv,
string name = conf->getArgParam("--" + prefix + "-name","MBTCPMaster1");
if( name.empty() )
{
if( dlog.debugging(Debug::CRIT) )
dlog.crit() << "(MBTCPMaster): Не задан name'" << endl;
dcrit << "(MBTCPMaster): Не задан name'" << endl;
return 0;
}
ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
if( dlog.debugging(Debug::CRIT) )
dlog.crit() << "(MBTCPMaster): идентификатор '" << name
dcrit << "(MBTCPMaster): идентификатор '" << name
<< "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl;
return 0;
}
if( dlog.is_info() )
dlog.info() << "(MBTCPMaster): name = " << name << "(" << ID << ")" << endl;
dinfo << "(MBTCPMaster): name = " << name << "(" << ID << ")" << endl;
return new MBTCPMaster(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -40,8 +40,7 @@ checkThread(0)
prop_prefix = "";
}
if( dlog.is_info() )
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl;
dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode);
......@@ -53,8 +52,7 @@ checkThread(0)
{
ostringstream err;
err << myname << "(init): not found <GateList>";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
......@@ -62,8 +60,7 @@ checkThread(0)
{
ostringstream err;
err << myname << "(init): empty <GateList> ?!";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
......@@ -75,8 +72,7 @@ checkThread(0)
{
ostringstream err;
err << myname << "(init): ip='' in <GateList>";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
......@@ -85,8 +81,7 @@ checkThread(0)
{
ostringstream err;
err << myname << "(init): ERROR: port=''" << sinf.port << " for ip='" << sinf.ip << "' in <GateList>";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
......@@ -97,8 +92,7 @@ checkThread(0)
{
ostringstream err;
err << myname << "(init): ERROR: Unknown SensorID for '" << it1.getProp("respond") << "' in <GateList>";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
}
......@@ -117,21 +111,19 @@ checkThread(0)
n << sinf.ip << ":" << sinf.port;
sinf.myname = n.str();
if( dlog.debugging(Debug::LEVEL9) )
if( dlog.is_level9() )
sinf.mbtcp->setLog(dlog);
mblist.push_back(sinf);
if( dlog.is_info() )
dlog.info() << myname << "(init): add slave channel " << sinf.myname << endl;
dinfo << myname << "(init): add slave channel " << sinf.myname << endl;
}
if( mblist.empty() )
{
ostringstream err;
err << myname << "(init): empty <GateList>!";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
......@@ -234,8 +226,7 @@ bool MBTCPMultiMaster::MBSlaveInfo::init()
{
// ost::Thread::setException(ost::Thread::throwException);
if( dlog.is_info() )
dlog.info() << myname << "(init): connect..." << endl;
dinfo << myname << "(init): connect..." << endl;
mbtcp->connect(ip,port);
mbtcp->setForceDisconnect(force_disconnect);
......@@ -248,22 +239,20 @@ bool MBTCPMultiMaster::MBSlaveInfo::init()
mbtcp->setSleepPause(sleepPause_usec);
mbtcp->setAfterSendPause(aftersend_pause);
if( mbtcp->isConnection() && dlog.is_info() )
dlog.info() << "(init): " << myname << " connect OK" << endl;
if( mbtcp->isConnection() )
dinfo << "(init): " << myname << " connect OK" << endl;
initOK = true;
}
return mbtcp->isConnection();
}
catch( ModbusRTU::mbException& ex )
{
if( dlog.is_warn() )
dlog.warn() << "(init): " << ex << endl;
dwarn << "(init): " << ex << endl;
}
catch(...)
{
if( dlog.is_warn() )
dlog.warn() << "(init): " << myname << " catch ..." << endl;
dwarn << "(init): " << myname << " catch ..." << endl;
}
initOK = false;
......@@ -318,8 +307,7 @@ void MBTCPMultiMaster::check_thread()
try
{
bool r = it->check();
if( dlog.is_info() )
dlog.info() << myname << "(check): " << it->myname << " " << ( r ? "OK" : "FAIL" ) << endl;
dinfo << myname << "(check): " << it->myname << " " << ( r ? "OK" : "FAIL" ) << endl;
try
{
......@@ -331,8 +319,7 @@ void MBTCPMultiMaster::check_thread()
}
catch( Exception& ex )
{
if( dlog.debugging(Debug::CRIT) )
dlog.crit() << myname << "(check): (respond) " << ex << std::endl;
dcrit << myname << "(check): (respond) " << ex << std::endl;
}
catch(...){}
......@@ -382,20 +369,20 @@ MBTCPMultiMaster* MBTCPMultiMaster::init_mbmaster( int argc, const char* const*
string name = conf->getArgParam("--" + prefix + "-name","MBTCPMultiMaster1");
if( name.empty() )
{
dlog.crit() << "(MBTCPMultiMaster): Не задан name'" << endl;
dcrit << "(MBTCPMultiMaster): Не задан name'" << endl;
return 0;
}
ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
dlog.crit() << "(MBTCPMultiMaster): идентификатор '" << name
dcrit << "(MBTCPMultiMaster): идентификатор '" << name
<< "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl;
return 0;
}
dlog.info() << "(MBTCPMultiMaster): name = " << name << "(" << ID << ")" << endl;
dinfo << "(MBTCPMultiMaster): name = " << name << "(" << ID << ")" << endl;
return new MBTCPMultiMaster(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -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,"");
if( !v.empty() && v[0] != '-' )
prop_prefix = v;
......@@ -38,7 +38,7 @@ rs_pre_clean(false)
prop_prefix = "";
}
dlog.info() << myname << "(init): prop_prefix=" << prop_prefix << endl;
dinfo << myname << "(init): prop_prefix=" << prop_prefix << endl;
UniXML_iterator it(cnode);
......@@ -108,7 +108,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
{
if( !reopen )
return mbrtu;
delete mbrtu;
mbrtu = 0;
mb = 0;
......@@ -130,7 +130,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
mbrtu->setSleepPause(sleepPause_usec);
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 )
{
......@@ -138,7 +138,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
delete mbrtu;
mbrtu = 0;
dlog.warn() << myname << "(init): " << ex << endl;
dwarn << myname << "(init): " << ex << endl;
}
catch(...)
{
......@@ -146,7 +146,7 @@ ModbusClient* RTUExchange::initMB( bool reopen )
delete mbrtu;
mbrtu = 0;
dlog.info() << myname << "(init): catch...." << endl;
dinfo << myname << "(init): catch...." << endl;
}
mb = mbrtu;
......@@ -204,14 +204,14 @@ void RTUExchange::poll()
bool allNotRespond = true;
ComPort::Speed s = mbrtu->getSpeed();
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
{
RTUDevice* d(it1->second);
if( d->mode_id != DefaultObjectId && d->mode == emSkipExchange )
continue;
if( d->speed != s )
{
s = d->speed;
......@@ -223,12 +223,9 @@ void RTUExchange::poll()
if( !d->rtu )
continue;
if( dlog.debugging(Debug::LEVEL3) )
{
dlog[Debug::LEVEL3] << myname << "(pollRTU188): poll RTU188 "
dlog3 << myname << "(pollRTU188): poll RTU188 "
<< " mbaddr=" << ModbusRTU::addr2str(d->mbaddr)
<< endl;
}
try
{
......@@ -239,22 +236,18 @@ void RTUExchange::poll()
d->resp_real = true;
}
catch( ModbusRTU::mbException& ex )
{
{
if( d->resp_real )
{
if( dlog.debugging(Debug::LEVEL3) )
{
dlog.crit() << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " -> " << ex << endl;
}
d->resp_real = false;
}
}
}
else
else
{
if( dlog.debugging(Debug::LEVEL3) )
dlog[Debug::LEVEL3] << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->regmap.size() << endl;
d->resp_real = false;
......@@ -271,16 +264,14 @@ void RTUExchange::poll()
}
}
catch( ModbusRTU::mbException& ex )
{
{
// if( d->resp_real )
// {
if( dlog.debugging(Debug::LEVEL3) )
{
dlog[Debug::LEVEL3] << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
dlog3 << myname << "(poll): FAILED ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " reg=" << ModbusRTU::dat2str(it->second->mbreg)
<< " for sensors: "; print_plist(dlog(Debug::LEVEL3), it->second->slst);
dlog(Debug::LEVEL3) << " err: " << ex << endl;
}
// d->resp_real = false;
// }
}
......@@ -299,7 +290,7 @@ void RTUExchange::poll()
// update SharedMemory...
updateSM();
// check thresholds
for( MBExchange::RTUDeviceMap::iterator it1=rmap.begin(); it1!=rmap.end(); ++it1 )
{
......@@ -311,15 +302,14 @@ void RTUExchange::poll()
IOBase::processingThreshold( &(*i),shm,force);
}
}
if( trReopen.hi(allNotRespond) )
ptReopen.reset();
if( allNotRespond && ptReopen.checkTime() )
{
uniset_mutex_lock l(pollMutex, 300);
if( dlog.is_warn() )
dlog.warn() << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
dwarn << myname << ": REOPEN timeout..(" << ptReopen.getInterval() << ")" << endl;
mb = initMB(true);
ptReopen.reset();
......@@ -347,7 +337,7 @@ RTUExchange* RTUExchange::init_rtuexchange( int argc, const char* const* argv, U
return 0;
}
dlog.info() << "(rtuexchange): name = " << name << "(" << ID << ")" << endl;
dinfo << "(rtuexchange): name = " << name << "(" << ID << ")" << endl;
return new RTUExchange(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -355,14 +345,14 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
{
if( !MBExchange::initDeviceInfo(m,a,it) )
return false;
RTUDeviceMap::iterator d = m.find(a);
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;
}
string s = it.getProp("speed");
if( !s.empty() )
{
......@@ -370,7 +360,7 @@ bool RTUExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniX
if( d->second->speed == ComPort::ComSpeed0 )
{
d->second->speed = defSpeed;
dlog.crit() << myname << "(initDeviceInfo): Unknown speed=" << s <<
dcrit << myname << "(initDeviceInfo): Unknown speed=" << s <<
" for addr=" << ModbusRTU::addr2str(a) << endl;
return false;
}
......
......@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
MBTCPMaster* mb = MBTCPMaster::init_mbmaster(argc,argv,shmID);
if( !mb )
{
dlog.crit() << "(mbmaster): init MBTCPMaster failed." << endl;
dcrit << "(mbmaster): init MBTCPMaster failed." << endl;
return 1;
}
......@@ -75,11 +75,11 @@ int main( int argc, const char** argv )
}
catch( Exception& ex )
{
dlog.crit() << "(mbtcpmaster): " << ex << std::endl;
dcrit << "(mbtcpmaster): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(mbtcpmaster): catch ..." << std::endl;
dcrit << "(mbtcpmaster): catch ..." << std::endl;
}
while( waitpid(-1, 0, 0) > 0 );
......
......@@ -55,7 +55,7 @@ int main( int argc, const char** argv )
MBTCPMultiMaster* mb = MBTCPMultiMaster::init_mbmaster(argc,argv,shmID);
if( !mb )
{
dlog.crit() << "(mbmaster): init MBTCPMaster failed." << endl;
dcrit << "(mbmaster): init MBTCPMaster failed." << endl;
return 1;
}
......@@ -77,11 +77,11 @@ int main( int argc, const char** argv )
}
catch( Exception& ex )
{
dlog.crit() << "(mbtcpmultimaster): " << ex << std::endl;
dcrit << "(mbtcpmultimaster): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(mbtcpmultimaster): catch ..." << std::endl;
dcrit << "(mbtcpmultimaster): catch ..." << std::endl;
}
while( waitpid(-1, 0, 0) > 0 );
......
......@@ -53,7 +53,7 @@ int main( int argc, char** argv )
RTUExchange* rs = RTUExchange::init_rtuexchange(argc,argv,shmID,0,"rs");
if( !rs )
{
dlog.crit() << "(rtuexchange): init не прошёл..." << endl;
dcrit << "(rtuexchange): init не прошёл..." << endl;
return 1;
}
......@@ -75,11 +75,11 @@ int main( int argc, char** argv )
}
catch( Exception& ex )
{
dlog.crit() << "(rtuexchange): " << ex << std::endl;
dcrit << "(rtuexchange): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(rtuexchange): catch ..." << std::endl;
dcrit << "(rtuexchange): catch ..." << std::endl;
}
while( waitpid(-1, 0, 0) > 0 );
......
......@@ -46,7 +46,7 @@ prefix(prefix)
// определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field");
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;
force = conf->getArgInt("--" + prefix + "-force",it.getProp("force"));
......@@ -61,13 +61,13 @@ prefix(prefix)
addr = ModbusRTU::str2mbAddr(saddr);
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_invert = conf->getArgInt("--" + prefix + "-respond-invert",it.getProp("respond_invert"));
string stype = conf->getArgParam("--" + prefix + "-type",it.getProp("type"));
if( stype == "RTU" )
{
// ---------- init RS ----------
......@@ -92,7 +92,7 @@ prefix(prefix)
mbslot = rs;
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;
}
else if( stype == "TCP" )
......@@ -100,19 +100,17 @@ prefix(prefix)
string iaddr = conf->getArgParam("--" + prefix + "-inet-addr",it.getProp("iaddr"));
if( iaddr.empty() )
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);
if( dlog.is_info() )
dlog.info() << myname << "(init): type=TCP myaddr=" << ModbusRTU::addr2str(addr)
dinfo << myname << "(init): type=TCP myaddr=" << ModbusRTU::addr2str(addr)
<< " inet=" << iaddr << " port=" << port << endl;
ost::InetAddress ia(iaddr.c_str());
mbslot = new ModbusTCPServerSlot(ia,port);
thr = new ThreadCreator<MBSlave>(this,&MBSlave::execute_tcp);
if( dlog.is_info() )
dlog.info() << myname << "(init): init TCP connection ok. " << " inet=" << iaddr << " port=" << port << endl;
dinfo << myname << "(init): init TCP connection ok. " << " inet=" << iaddr << " port=" << port << endl;
}
else
throw UniSetTypes::SystemError(myname+"(MBSlave): Unknown slave type. Use: --mbs-type [RTU|TCP]");
......@@ -130,8 +128,8 @@ prefix(prefix)
if( findArgParam("--" + prefix + "-allow-setdatetime",conf->getArgc(),conf->getArgv())!=-1 )
mbslot->connectSetDateTime( sigc::mem_fun(this, &MBSlave::setDateTime) );
mbslot->connectDiagnostics( sigc::mem_fun(this, &MBSlave::diagnostics) );
mbslot->connectFileTransfer( sigc::mem_fun(this, &MBSlave::fileTransfer) );
mbslot->connectDiagnostics( sigc::mem_fun(this, &MBSlave::diagnostics) );
mbslot->connectFileTransfer( sigc::mem_fun(this, &MBSlave::fileTransfer) );
// mbslot->connectJournalCommand( sigc::mem_fun(this, &MBSlave::journalCommand) );
// mbslot->connectRemoteService( sigc::mem_fun(this, &MBSlave::remoteService) );
......@@ -142,8 +140,7 @@ prefix(prefix)
if( shm->isLocalwork() )
{
readConfiguration();
if( dlog.is_info() )
dlog.info() << myname << "(init): iomap size = " << iomap.size() << endl;
dinfo << myname << "(init): iomap size = " << iomap.size() << endl;
}
else
{
......@@ -161,7 +158,7 @@ prefix(prefix)
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
......@@ -181,18 +178,14 @@ prefix(prefix)
{
ostringstream err;
err << myname << ": test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
askcount_id = conf->getSensorID(conf->getArgParam("--" + prefix + "-askcount-id",it.getProp("askcount_id")));
if( dlog.is_info() )
{
dlog.info() << myname << ": init askcount_id=" << askcount_id << endl;
dlog.info() << myname << ": init test_id=" << test_id << endl;
}
dinfo << myname << ": init askcount_id=" << askcount_id << endl;
dinfo << myname << ": init test_id=" << test_id << endl;
wait_msec = getHeartBeatTime() - 100;
if( wait_msec < 500 )
......@@ -203,8 +196,7 @@ prefix(prefix)
timeout_t msec = conf->getArgPInt("--" + prefix + "-timeout",it.getProp("timeout"), 3000);
ptTimeout.setTiming(msec);
if( dlog.is_info() )
dlog.info() << myname << "(init): rs-timeout=" << msec << " msec" << endl;
dinfo << myname << "(init): rs-timeout=" << msec << " msec" << endl;
// build file list...
xmlNode* fnode = 0;
......@@ -222,15 +214,13 @@ prefix(prefix)
std::string nm = fit.getProp("name");
if( nm.empty() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(build file list): ignore empty name... " << endl;
dwarn << myname << "(build file list): ignore empty name... " << endl;
continue;
}
int id = fit.getIntProp("id");
if( id == 0 )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(build file list): FAILED ID for " << nm << "... ignore..." << endl;
dwarn << myname << "(build file list): FAILED ID for " << nm << "... ignore..." << endl;
continue;
}
......@@ -245,20 +235,19 @@ prefix(prefix)
nm = dir + nm;
}
if( dlog.is_info() )
dlog.info() << myname << "(init): add to filelist: "
dinfo << myname << "(init): add to filelist: "
<< "id=" << id
<< " file=" << nm
<< " file=" << nm
<< endl;
flist[id] = nm;
}
}
else if( dlog.is_info() )
dlog.info() << myname << "(init): <filelist> empty..." << endl;
else
dinfo << myname << "(init): <filelist> empty..." << endl;
}
else if( dlog.is_info() )
dlog.info() << myname << "(init): <filelist> not found..." << endl;
else
dinfo << myname << "(init): <filelist> not found..." << endl;
// Формирование "карты" ответов на запрос 0x2B(43)/0x0E(14)
......@@ -290,8 +279,7 @@ prefix(prefix)
{
if( dit.getProp("id").empty() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(init): read <MEI>. Unknown <device id=''>. Ignore.." << endl;
dwarn << myname << "(init): read <MEI>. Unknown <device id=''>. Ignore.." << endl;
continue;
}
......@@ -300,18 +288,16 @@ prefix(prefix)
UniXML_iterator oit(dit);
if( oit.goChildren() )
{
if( dlog.is_info() )
dlog.info() << myname << "(init): MEI: read dev='" << devID << "'" << endl;
dwarn << myname << "(init): MEI: read dev='" << devID << "'" << endl;
MEIObjIDMap meiomap;
// Object ID list..
for( ;oit.getCurrent(); oit.goNext() )
{
if( dit.getProp("id").empty() )
{
if( dlog.is_warn() )
dlog.warn() << myname
dwarn << myname
<< "(init): read <MEI>. Unknown <object id='' (for device id='"
<< devID << "'). Ignore.."
<< devID << "'). Ignore.."
<< endl;
continue;
......@@ -321,9 +307,7 @@ prefix(prefix)
UniXML_iterator sit(oit);
if( sit.goChildren() )
{
if( dlog.is_info() )
dlog.info() << myname << "(init): MEI: read obj='" << objID << "'" << endl;
dinfo << myname << "(init): MEI: read obj='" << objID << "'" << endl;
MEIValMap meivmap;
// request (string) list..
for( ;sit.getCurrent(); sit.goNext() )
......@@ -331,14 +315,13 @@ prefix(prefix)
int vid = objID;
if( sit.getProp("id").empty() )
{
if( dlog.is_warn() )
dlog.info() << myname << "(init): MEI: dev='" << devID
dwarn << myname << "(init): MEI: dev='" << devID
<< "' obj='" << objID << "'"
<< ". Unknown id='' for value='" << sit.getProp("value") << "'"
<< ". Unknown id='' for value='" << sit.getProp("value") << "'"
<< ". Set objID='" << objID << "'"
<< endl;
}
else
else
vid = sit.getIntProp("id");
meivmap[vid] = sit.getProp("value");
......@@ -355,11 +338,11 @@ prefix(prefix)
}
}
if( !meidev.empty() && dlog.is_info() )
dlog.info() << myname << "(init): <MEI> init ok." << endl;
if( !meidev.empty() )
dinfo << myname << "(init): <MEI> init ok." << endl;
}
else if( dlog.is_info() )
dlog.info() << myname << "(init): <MEI> empty..." << endl;
else
dinfo << myname << "(init): <MEI> empty..." << endl;
}
// -----------------------------------------------------------------------------
......@@ -383,8 +366,7 @@ void MBSlave::waitSMReady()
{
ostringstream err;
err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -392,7 +374,7 @@ void MBSlave::waitSMReady()
void MBSlave::execute_rtu()
{
ModbusRTUSlaveSlot* rscomm = dynamic_cast<ModbusRTUSlaveSlot*>(mbslot);
while(1)
{
try
......@@ -401,7 +383,7 @@ void MBSlave::execute_rtu()
if( res!=ModbusRTU::erTimeOut )
ptTimeout.reset();
// собираем статистику обмена
if( prev!=ModbusRTU::erTimeOut )
{
......@@ -409,12 +391,12 @@ void MBSlave::execute_rtu()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError )
errmap[res]++;
prev = res;
}
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut && dlog.is_warn() )
dlog.warn() << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl;
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dwarn << myname << "(execute_rtu): " << ModbusRTU::mbErr2Str(res) << endl;
if( !activated )
continue;
......@@ -428,9 +410,8 @@ void MBSlave::execute_rtu()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname
<< "(execute_rtu): (hb) " << ex << std::endl;
dcrit << myname
<< "(execute_rtu): (hb) " << ex << std::endl;
}
}
......@@ -446,8 +427,7 @@ void MBSlave::execute_rtu()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(execute_rtu): (respond) " << ex << std::endl;
dcrit << myname << "(execute_rtu): (respond) " << ex << std::endl;
}
}
......@@ -459,11 +439,10 @@ void MBSlave::execute_rtu()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(execute_rtu): (askCount) " << ex << std::endl;
dcrit << myname << "(execute_rtu): (askCount) " << ex << std::endl;
}
}
for( IOMap::iterator it=iomap.begin(); it!=iomap.end(); ++it )
IOBase::processingThreshold(&it->second,shm,force);
}
......@@ -483,7 +462,7 @@ void MBSlave::execute_tcp()
if( res!=ModbusRTU::erTimeOut )
ptTimeout.reset();
// собираем статистику обмена
if( prev!=ModbusRTU::erTimeOut )
{
......@@ -491,12 +470,12 @@ void MBSlave::execute_tcp()
askCount = askCount>=numeric_limits<long>::max() ? 0 : askCount+1;
if( res!=ModbusRTU::erNoError )
errmap[res]++;
prev = res;
}
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut && dlog.is_warn() )
dlog.warn() << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl;
if( res!=ModbusRTU::erNoError && res!=ModbusRTU::erTimeOut )
dwarn << myname << "(execute_tcp): " << ModbusRTU::mbErr2Str(res) << endl;
if( !activated )
continue;
......@@ -510,8 +489,7 @@ void MBSlave::execute_tcp()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(execute_tcp): (hb) " << ex << std::endl;
dcrit << myname << "(execute_tcp): (hb) " << ex << std::endl;
}
}
......@@ -526,9 +504,8 @@ void MBSlave::execute_tcp()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname
<< "(execute_rtu): (respond) " << ex << std::endl;
dcrit << myname
<< "(execute_rtu): (respond) " << ex << std::endl;
}
}
......@@ -540,9 +517,8 @@ void MBSlave::execute_tcp()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname
<< "(execute_rtu): (askCount) " << ex << std::endl;
dcrit << myname
<< "(execute_rtu): (askCount) " << ex << std::endl;
}
}
......@@ -580,20 +556,17 @@ void MBSlave::processingMessage(UniSetTypes::VoidMessage *msg)
}
catch( SystemError& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
dcrit << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex);
raise(SIGTERM);
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
dcrit << myname << "(processingMessage): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): catch ...\n";
dcrit << myname << "(processingMessage): catch ...\n";
}
}
// -----------------------------------------------------------------------------
......@@ -605,10 +578,9 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
{
if( iomap.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): iomap EMPTY! terminated..." << endl;
dcrit << myname << "(sysCommand): iomap EMPTY! terminated..." << endl;
raise(SIGTERM);
return;
return;
}
waitSMReady();
......@@ -618,16 +590,16 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
msleep(initPause);
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
{
cout << myname << "(sysCommand): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated && dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
else
if( !activated )
dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
else
{
UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
askSensors(UniversalIO::UIONotify);
......@@ -640,11 +612,11 @@ void MBSlave::sysCommand(UniSetTypes::SystemMessage *sm)
case SystemMessage::Finish:
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::WatchDog:
{
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
// Если идёт локальная работа
// Если идёт локальная работа
// (т.е. MBSlave запущен в одном процессе с SharedMemory2)
// то обрабатывать WatchDog не надо, т.к. мы и так ждём готовности SM
// при заказе датчиков, а если SM вылетит, то вместе с этим процессом(MBSlave)
......@@ -685,11 +657,11 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
if( !shm->waitSMworking(test_id,activateTimeout,50) )
{
ostringstream err;
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек";
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
......@@ -707,8 +679,7 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
}
catch( UniSetTypes::Exception& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(askSensors): " << ex << std::endl;
dwarn << myname << "(askSensors): " << ex << std::endl;
}
catch(...){}
}
......@@ -747,17 +718,15 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm )
{
p = &it->second;
if( p->si.id == sm->id )
p->value = sm->value;
p->value = sm->value;
}
if( dlog.is_crit() )
{
// вообще этого не может случиться
// потому-что корректность проверяется при загрузке
if( i != sz && dlog.is_crit() )
dlog.crit() << myname << "(sensorInfo): update failed for sid=" << sm->id
// вообще этого не может случиться
// потому-что корректность проверяется при загрузке
if( i != sz )
dcrit << myname << "(sensorInfo): update failed for sid=" << sm->id
<< " (i=" << i << " sz=" << sz << ")" << endl;
}
return;
}
}
......@@ -765,7 +734,7 @@ void MBSlave::sensorInfo( UniSetTypes::SensorMessage* sm )
// ------------------------------------------------------------------------------------------
bool MBSlave::activateObject()
{
// блокирование обработки Starsp
// блокирование обработки Starsp
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
......@@ -789,7 +758,7 @@ void MBSlave::sigterm( int signo )
mbslot->sigterm(signo);
}
catch(...){}
UniSetObject_LT::sigterm(signo);
}
// ------------------------------------------------------------------------------------------
......@@ -807,8 +776,7 @@ void MBSlave::readConfiguration()
UniXML_iterator it(root);
if( !it.goChildren() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
dcrit << myname << "(readConfiguration): раздел <sensors> не содержит секций ?!!\n";
return;
}
......@@ -817,7 +785,7 @@ void MBSlave::readConfiguration()
if( UniSetTypes::check_filter(it,s_field,s_fvalue) )
initItem(it);
}
// readconf_ok = true;
}
// ------------------------------------------------------------------------------------------
......@@ -843,14 +811,13 @@ bool MBSlave::initItem( UniXML_iterator& it )
string r = it.getProp("mbreg");
if( r.empty() )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): Unknown 'mbreg' for " << it.getProp("name") << endl;
return false;
}
p.mbreg = ModbusRTU::str2mbData(r);
}
string stype( it.getProp("mb_iotype") );
if( stype.empty() )
stype = it.getProp("iotype");
......@@ -858,8 +825,7 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.stype = UniSetTypes::getIOType(stype);
if( p.stype == UniversalIO::UnknownIOType )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown 'iotype' or 'mb_iotype' for " << it.getProp("name") << endl;
dcrit << myname << "(initItem): Unknown 'iotype' or 'mb_iotype' for " << it.getProp("name") << endl;
return false;
}
......@@ -876,19 +842,16 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.vtype = VTypes::vtUnknown;
p.wnum = 0;
iomap[p.mbreg] = p;
if( dlog.is_info() )
dlog.info() << myname << "(initItem): add " << p << endl;
dinfo << myname << "(initItem): add " << p << endl;
}
else
{
VTypes::VType v(VTypes::str2type(vt));
if( v == VTypes::vtUnknown )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(initItem): Unknown rtuVType=" << vt << " for "
<< it.getProp("name")
<< endl;
dcrit << myname << "(initItem): Unknown rtuVType=" << vt << " for "
<< it.getProp("name")
<< endl;
return false;
}
......@@ -899,8 +862,7 @@ bool MBSlave::initItem( UniXML_iterator& it )
p.mbreg += i;
p.wnum+= i;
iomap[p.mbreg] = p;
if( dlog.is_info() )
dlog.info() << myname << "(initItem): add " << p << endl;
dinfo << myname << "(initItem): add " << p << endl;
}
}
......@@ -959,14 +921,13 @@ MBSlave* MBSlave::init_mbslave( int argc, const char* const* argv, UniSetTypes::
ObjectId ID = conf->getObjectID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
cerr << "(mbslave): идентификатор '" << name
cerr << "(mbslave): идентификатор '" << name
<< "' не найден в конф. файле!"
<< " в секции " << conf->getObjectsSection() << endl;
return 0;
}
if( dlog.is_info() )
dlog.info() << "(mbslave): name = " << name << "(" << ID << ")" << endl;
dinfo << "(mbslave): name = " << name << "(" << ID << ")" << endl;
return new MBSlave(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -983,16 +944,15 @@ std::ostream& operator<<( std::ostream& os, MBSlave::IOProperty& p )
{
os << p.cal
<< " cdiagram=" << ( p.cdiagram ? "yes" : "no" );
}
}
return os;
}
// -----------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& query,
ModbusRTU::ReadOutputRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(readOutputRegisters): " << query << endl;
dinfo << myname << "(readOutputRegisters): " << query << endl;
if( query.count <= 1 )
{
......@@ -1012,7 +972,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
for( int i=0; i<query.count; i++ )
reply.addData( buf[i] );
}
return ret;
}
......@@ -1020,21 +980,19 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
ModbusRTU::mbErrCode MBSlave::writeOutputRegisters( ModbusRTU::WriteOutputMessage& query,
ModbusRTU::WriteOutputRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(writeOutputRegisters): " << query << endl;
dinfo << myname << "(writeOutputRegisters): " << query << endl;
// Формирование ответа:
ModbusRTU::mbErrCode ret = much_real_write(query.start,query.data,query.quant);
if( ret == ModbusRTU::erNoError )
reply.set(query.start,query.quant);
reply.set(query.start,query.quant);
return ret;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleOutputMessage& query,
ModbusRTU::WriteSingleOutputRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(writeOutputSingleRegisters): " << query << endl;
dinfo << myname << "(writeOutputSingleRegisters): " << query << endl;
ModbusRTU::mbErrCode ret = real_write(query.start,query.data);
if( ret == ModbusRTU::erNoError )
......@@ -1045,11 +1003,10 @@ ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleO
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData* dat,
int count )
{ if( dlog.is_info() )
{
dlog.info() << myname << "(much_real_write): read mbID="
{
dinfo << myname << "(much_real_write): read mbID="
<< ModbusRTU::dat2str(reg) << " count=" << count << endl;
}
int i=0;
IOMap::iterator it = iomap.end();
......@@ -1074,19 +1031,16 @@ ModbusRTU::mbErrCode MBSlave::much_real_write( ModbusRTU::ModbusData reg, Modbus
it++;
}
}
return ModbusRTU::erNoError;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::real_write( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData mbval )
{
if( dlog.is_info() )
{
dlog.info() << myname << "(write): save mbID="
<< ModbusRTU::dat2str(reg)
dinfo << myname << "(write): save mbID="
<< ModbusRTU::dat2str(reg)
<< " data=" << ModbusRTU::dat2str(mbval)
<< "(" << (int)mbval << ")" << endl;
}
IOMap::iterator it = iomap.find(reg);
return real_write_it(it,mbval);
......@@ -1128,7 +1082,7 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
long val = (signed short)(mbval);
IOBase::processingAsAI( p, val, shm, force );
}
/*
/*
else if( p->vtype == VTypes::vtByte )
{
VTypes::Byte b(r->mbval);
......@@ -1141,10 +1095,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F2::wsize()];
for( int k=0; k<VTypes::F2::wsize(); k++, i++ )
data[k] = i->second->mbval;
VTypes::F2 f(data,VTypes::F2::wsize());
delete[] data;
IOBase::processingFasAI( p, (float)f, shm, force );
}
else if( p->vtype == VTypes::vtF4 )
......@@ -1154,10 +1108,10 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
ModbusRTU::ModbusData* data = new ModbusRTU::ModbusData[VTypes::F4::wsize()];
for( int k=0; k<VTypes::F4::wsize(); k++, i++ )
data[k] = i->second->mbval;
VTypes::F4 f(data,VTypes::F4::wsize());
delete[] data;
IOBase::processingFasAI( p, (float)f, shm, force );
}
*/
......@@ -1180,31 +1134,29 @@ ModbusRTU::mbErrCode MBSlave::real_write_it( IOMap::iterator& it, ModbusRTU::Mod
}
catch( UniSetTypes::NameNotFound& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(write): " << ex << endl;
dwarn << myname << "(write): " << ex << endl;
return ModbusRTU::erBadDataAddress;
}
catch( UniSetTypes::OutOfRange& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(write): " << ex << endl;
dwarn << myname << "(write): " << ex << endl;
return ModbusRTU::erBadDataValue;
}
catch( Exception& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(write): " << ex << endl;
if( pingOK )
dcrit << myname << "(write): " << ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(write): СORBA::SystemException: "
if( pingOK )
dcrit << myname << "(write): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(write) catch ..." << endl;
if( pingOK )
dcrit << myname << "(write) catch ..." << endl;
}
pingOK = false;
......@@ -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,
int count )
{
if( dlog.is_info() )
{
dlog.info() << myname << "(much_real_read): read mbID="
dinfo << myname << "(much_real_read): read mbID="
<< ModbusRTU::dat2str(reg) << " count=" << count << endl;
}
IOMap::iterator it = iomap.end();
int i=0;
......@@ -1236,7 +1185,7 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR
if( it == iomap.end() )
return ModbusRTU::erBadDataAddress;
ModbusRTU::ModbusData val=0;
for( ; (it!=iomap.end()) && (i<count); i++,reg++ )
{
......@@ -1256,18 +1205,15 @@ ModbusRTU::mbErrCode MBSlave::much_real_read( ModbusRTU::ModbusData reg, ModbusR
{
for( ; i<count; i++ )
dat[i] = 0;
}
}
return ModbusRTU::erNoError;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::real_read( ModbusRTU::ModbusData reg, ModbusRTU::ModbusData& val )
{
if( dlog.is_info() )
{
dlog.info() << myname << "(real_read): read mbID="
dinfo << myname << "(real_read): read mbID="
<< ModbusRTU::dat2str(reg) << endl;
}
IOMap::iterator it = iomap.find(reg);
return real_read_it(it,val);
......@@ -1280,19 +1226,16 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
try
{
if( dlog.is_info() )
{
dlog.info() << myname << "(real_read_it): read mbID="
dinfo << myname << "(real_read_it): read mbID="
<< ModbusRTU::dat2str(it->first) << endl;
}
IOProperty* p(&it->second);
val = 0;
if( p->amode == MBSlave::amWO )
return ModbusRTU::erBadDataAddress;
if( p->stype == UniversalIO::DI ||
if( p->stype == UniversalIO::DI ||
p->stype == UniversalIO::DO )
{
val = IOBase::processingAsDO(p,shm,force) ? 1 : 0;
......@@ -1303,7 +1246,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
if( p->vtype == VTypes::vtUnknown )
{
val = IOBase::processingAsAO(p,shm,force);
}
}
if( p->vtype == VTypes::vtF2 )
{
float f = IOBase::processingFasAO(p,shm,force);
......@@ -1355,31 +1298,29 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
}
catch( UniSetTypes::NameNotFound& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(real_read_it): " << ex << endl;
dwarn << myname << "(real_read_it): " << ex << endl;
return ModbusRTU::erBadDataAddress;
}
catch( UniSetTypes::OutOfRange& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(real_read_it): " << ex << endl;
dwarn << myname << "(real_read_it): " << ex << endl;
return ModbusRTU::erBadDataValue;
}
catch( Exception& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(real_read_it): " << ex << endl;
if( pingOK )
dcrit << myname << "(real_read_it): " << ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(real_read_it): CORBA::SystemException: "
if( pingOK )
dcrit << myname << "(real_read_it): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(real_read_it) catch ..." << endl;
if( pingOK )
dcrit << myname << "(real_read_it) catch ..." << endl;
}
pingOK = false;
......@@ -1389,8 +1330,7 @@ ModbusRTU::mbErrCode MBSlave::real_read_it( IOMap::iterator& it, ModbusRTU::Modb
mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(readInputRegisters): " << query << endl;
dinfo << myname << "(readInputRegisters): " << query << endl;
if( query.count <= 1 )
{
......@@ -1400,7 +1340,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess
reply.addData(d);
else
reply.addData(0);
return ret;
}
......@@ -1411,7 +1351,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess
for( int i=0; i<query.count; i++ )
reply.addData( buf[i] );
}
return ret;
}
// -------------------------------------------------------------------------
......@@ -1426,13 +1366,12 @@ ModbusRTU::mbErrCode MBSlave::remoteService( ModbusRTU::RemoteServiceMessage& qu
{
// cerr << "(remoteService): " << query << endl;
return ModbusRTU::erOperationFailed;
}
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& query,
ModbusRTU::FileTransferRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(fileTransfer): " << query << endl;
dinfo << myname << "(fileTransfer): " << query << endl;
FileList::iterator it = flist.find(query.numfile);
if( it == flist.end() )
......@@ -1440,7 +1379,7 @@ ModbusRTU::mbErrCode MBSlave::fileTransfer( ModbusRTU::FileTransferMessage& quer
std::string fname(it->second);
return ModbusServer::replyFileTransfer( fname,query,reply,&dlog );
}
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
ReadCoilRetMessage& reply )
......@@ -1452,8 +1391,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
ReadInputStatusRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(readInputStatus): " << query << endl;
dinfo << myname << "(readInputStatus): " << query << endl;
try
{
......@@ -1466,7 +1404,7 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
reply.setBit(0,0,d);
else
reply.setBit(0,0,0);
pingOK = true;
return ret;
}
......@@ -1488,36 +1426,34 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
}
catch( UniSetTypes::NameNotFound& ex )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(readInputStatus): " << ex << endl;
dwarn << myname << "(readInputStatus): " << ex << endl;
return ModbusRTU::erBadDataAddress;
}
catch( Exception& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(readInputStatus): " << ex << endl;
if( pingOK )
dcrit << myname << "(readInputStatus): " << ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(readInputStatus): СORBA::SystemException: "
if( pingOK )
dcrit << myname << "(readInputStatus): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( pingOK && dlog.is_crit() )
dlog.crit() << myname << "(readInputStatus): catch ..." << endl;
if( pingOK )
dcrit << myname << "(readInputStatus): catch ..." << endl;
}
pingOK = false;
return ModbusRTU::erTimeOut;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query,
ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query,
ModbusRTU::ForceCoilsRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(forceMultipleCoils): " << query << endl;
dinfo << myname << "(forceMultipleCoils): " << query << endl;
ModbusRTU::mbErrCode ret = ModbusRTU::erNoError;
int nbit = 0;
......@@ -1526,24 +1462,23 @@ ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage&
ModbusRTU::DataBits b(query.data[i]);
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) );
//if( ret == ModbusRTU::erNoError )
}
}
//if( ret == ModbusRTU::erNoError )
if( nbit == query.quant )
reply.set(query.start,query.quant);
return ret;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage& query,
ModbusRTU::ForceSingleCoilRetMessage& reply )
{
if( dlog.is_info() )
dlog.info() << myname << "(forceSingleCoil): " << query << endl;
dinfo << myname << "(forceSingleCoil): " << query << endl;
ModbusRTU::mbErrCode ret = real_write(query.start, (query.cmd() ? 1 : 0) );
if( ret == ModbusRTU::erNoError )
......@@ -1552,7 +1487,7 @@ ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage
return ret;
}
// -------------------------------------------------------------------------
ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
ModbusRTU::DiagnosticRetMessage& reply )
{
if( query.subf == ModbusRTU::subEcho )
......@@ -1560,14 +1495,14 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
reply = query;
return ModbusRTU::erNoError;
}
if( query.subf == ModbusRTU::dgBusErrCount )
{
reply = query;
reply.data[0] = errmap[ModbusRTU::erBadCheckSum];
return ModbusRTU::erNoError;
}
if( query.subf == ModbusRTU::dgMsgSlaveCount || query.subf == ModbusRTU::dgBusMsgCount )
{
reply = query;
......@@ -1590,16 +1525,15 @@ ModbusRTU::mbErrCode MBSlave::diagnostics( ModbusRTU::DiagnosticMessage& query,
// другие счётчики пока не сбрасываем..
reply = query;
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 )
{
if( dlog.is_info() )
dlog.info() << "(read4314): " << query << endl;
dinfo << "(read4314): " << query << endl;
// if( query.devID <= rdevMinNum || query.devID >= rdevMaxNum )
// return erOperationFailed;
......@@ -1611,12 +1545,12 @@ ModbusRTU::mbErrCode MBSlave::read4314( ModbusRTU::MEIMessageRDI& query,
MEIObjIDMap::iterator oit = dit->second.find(query.objID);
if( oit == dit->second.end() )
return ModbusRTU::erBadDataAddress;
reply.mf = 0xFF;
reply.conformity = query.devID;
for( MEIValMap::iterator i=oit->second.begin(); i!=oit->second.end(); i++ )
reply.addData( i->first, i->second );
return erNoError;
}
// -------------------------------------------------------------------------
......@@ -60,7 +60,7 @@ int main(int argc, const char **argv)
MBSlave* s = MBSlave::init_mbslave(argc,argv,shmID);
if( !s )
{
dlog.crit() << "(mbslave): init не прошёл..." << endl;
dcrit << "(mbslave): init не прошёл..." << endl;
return 1;
}
......@@ -80,19 +80,19 @@ int main(int argc, const char **argv)
}
catch( SystemError& err )
{
dlog.crit() << "(mbslave): " << err << endl;
dcrit << "(mbslave): " << err << endl;
}
catch( Exception& ex )
{
dlog.crit() << "(mbslave): " << ex << endl;
dcrit << "(mbslave): " << ex << endl;
}
catch( std::exception& e )
{
dlog.crit() << "(mbslave): " << e.what() << endl;
dcrit << "(mbslave): " << e.what() << endl;
}
catch(...)
{
dlog.crit() << "(mbslave): catch(...)" << endl;
dcrit << "(mbslave): catch(...)" << endl;
}
while( waitpid(-1, 0, 0) > 0 );
......
......@@ -17,7 +17,7 @@ UObject_SK(objId,cnode),
shm( new SMInterface(shmId,&ui,objId,ic) ),
prefix(prefix)
{
dlog = log;
mylog = log;
UniXML::iterator it(cnode);
UniXML::iterator it1(cnode);
......@@ -25,8 +25,7 @@ prefix(prefix)
{
ostringstream err;
err << myname << "(init): empty rrd list...";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str() << endl;
mylog << err.str() << endl;
throw NameNotFound(err.str());
}
......@@ -58,8 +57,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
int lastup = it.getPIntProp("lastup",0);
bool overwrite = it.getPIntProp("overwrite",0);
if( RRDServer::dlog.is_info() )
RRDServer::dlog.info() << myname << "(init): add rrd: file='" << fname
myinfo << myname << "(init): add rrd: file='" << fname
<< " " << ff << "='" << fv
<< "' create='" << cf << "'"
<< " step=" << rrdstep
......@@ -72,7 +70,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): rrd='" << fname << "' Unknown RRA list";
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -83,8 +81,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): rrd='" << fname << "' Unkown RRA item.. <item rra='...'";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -95,8 +92,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Not found RRA items...";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str() << endl;
mycrit << err.str() << endl;
throw SystemError(err.str());
}
......@@ -108,8 +104,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Not found section <sensors>";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -118,8 +113,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): section <sensors> empty?!";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -138,8 +132,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Unknown create parameters ('" << cf << "')";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -153,8 +146,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Unknown SensorID for '" << dsname << "'";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str();
mycrit << err.str();
throw SystemError(err.str());
}
......@@ -166,8 +158,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Not found RRD items...";
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str() << endl;
mycrit << err.str() << endl;
throw SystemError(err.str());
}
......@@ -187,8 +178,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
// Собственно создаём RRD
if( !overwrite && file_exist(fname) )
{
if( RRDServer::dlog.is_info() )
RRDServer::dlog.info() << myname << "(init): ignore create file='" << fname
myinfo << myname << "(init): ignore create file='" << fname
<< "'. File exist... overwrite=0." << endl;
}
else
......@@ -198,8 +188,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream err;
err << myname << "(init): Can`t create RRD ('" << fname << "'): err: " << string(rrd_get_error());
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str() << endl;
mycrit << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -215,11 +204,11 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
}
/* catch( Exception& ex )
{
RRDServer::dlog.crit() << myname << "(init) " << ex << std::endl;
mycrit << myname << "(init) " << ex << std::endl;
}
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,
string name = conf->getArgParam("--" + prefix + "-name","RRDServer");
if( name.empty() )
{
UniSetExtensions::dlog.crit() << "(RRDServer): Unknown name. Usage: --" << prefix << "-name" << endl;
dcrit << "(RRDServer): Unknown name. Usage: --" << prefix << "-name" << endl;
return 0;
}
ObjectId ID = conf->getObjectID(name);
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;
return 0;
}
......@@ -256,12 +245,11 @@ RRDServer* RRDServer::init_rrdstorage( int argc, const char* const* argv,
xmlNode* cnode = conf->getNode(confname);
if( !cnode )
{
UniSetExtensions::dlog.crit() << "(RRDServer): " << name << "(init): Not found <" + confname + ">" << endl;
dcrit << "(RRDServer): " << name << "(init): Not found <" + confname + ">" << endl;
return 0;
}
if( UniSetExtensions::dlog.is_info() )
UniSetExtensions::dlog.info() << "(RRDServer): name = " << name << "(" << ID << ")" << endl;
dinfo << "(RRDServer): name = " << name << "(" << ID << ")" << endl;
return new RRDServer(ID,cnode,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -279,8 +267,7 @@ void RRDServer::askSensors( UniversalIO::UIOCommand cmd )
}
catch( std::exception& ex )
{
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << myname << "(askSensors): " << ex.what() << endl;
mycrit << myname << "(askSensors): " << ex.what() << endl;
}
}
}
......@@ -299,8 +286,7 @@ void RRDServer::sysCommand( UniSetTypes::SystemMessage* sm )
}
catch( std::exception& ex )
{
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << myname << "(askTimer): " << ex.what() << endl;
mycrit << myname << "(askTimer): " << ex.what() << endl;
}
}
}
......@@ -330,8 +316,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm )
for( DSMap::iterator s=it->dsmap.begin(); s!=it->dsmap.end(); ++s )
v << ":" << s->second.value;
if( RRDServer::dlog.is_info() )
RRDServer::dlog.info() << myname << "(update): '" << it->filename << "' " << v.str() << endl;
myinfo << myname << "(update): '" << it->filename << "' " << v.str() << endl;
rrd_clear_error();
const char* argv = v.str().c_str();
......@@ -339,8 +324,7 @@ void RRDServer::timerInfo( UniSetTypes::TimerMessage* tm )
{
ostringstream err;
err << myname << "(update): Can`t update RRD ('" << it->filename << "'): err: " << string(rrd_get_error());
if( RRDServer::dlog.is_crit() )
RRDServer::dlog.crit() << err.str() << endl;
mycrit << err.str() << endl;
}
break;
......
......@@ -54,7 +54,7 @@ int main( int argc, const char** argv )
RRDServer* db = RRDServer::init_rrdstorage(argc,argv,shmID);
if( !db )
{
dlog.crit() << "(rrdstorage): init не прошёл..." << endl;
dcrit << "(rrdstorage): init не прошёл..." << endl;
return 1;
}
......@@ -73,11 +73,11 @@ int main( int argc, const char** argv )
}
catch( UniSetTypes::Exception& ex )
{
dlog.crit() << "(rrdstorage): " << ex << std::endl;
dcrit << "(rrdstorage): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(rrdstorage): catch ..." << std::endl;
dcrit << "(rrdstorage): catch ..." << std::endl;
}
return 1;
......
......@@ -10,195 +10,192 @@ using namespace UniSetTypes;
using namespace UniSetExtensions;
// -----------------------------------------------------------------------------
SMDBServer::SMDBServer( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, SharedMemory* ic,
const string prefix ):
const string prefix ):
DBServer_MySQL(objId),
prefix(prefix)
{
if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(SMDBServer): objId=-1?!! Use --" + prefix + "-name" );
if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(SMDBServer): objId=-1?!! Use --" + prefix + "-name" );
// xmlNode* cnode = conf->getNode(myname);
// if( cnode == NULL )
// throw UniSetTypes::SystemError("(SMDBServer): Not found conf-node for " + myname );
xmlNode* cnode = conf->getNode("LocalDBServer");
if( !cnode )
throw NameNotFound(string(myname+"(init): <LocalDBServer> not found.."));
// xmlNode* cnode = conf->getNode(myname);
// if( cnode == NULL )
// throw UniSetTypes::SystemError("(SMDBServer): Not found conf-node for " + myname );
xmlNode* cnode = conf->getNode("LocalDBServer");
if( !cnode )
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);
db_locale = conf->getArgParam("--" + prefix + "-locale",it.getProp("locale"));
if( db_locale.empty() )
db_locale = "utf8";
UniXML_iterator it(cnode);
db_locale = conf->getArgParam("--" + prefix + "-locale",it.getProp("locale"));
if( db_locale.empty() )
db_locale = "utf8";
// ********** HEARTBEAT *************
string heart = conf->getArgParam("--" + prefix + "-heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
sidHeartBeat = conf->getSensorID(heart);
if( sidHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart;
dlog.crit() << myname << "(init): " << err.str() << endl;
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());
}
}
string heart = conf->getArgParam("--" + prefix + "-heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
sidHeartBeat = conf->getSensorID(heart);
if( sidHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": ID not found ('HeartBeat') for " << heart;
dcrit << 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()
{
delete shm;
delete shm;
}
// -----------------------------------------------------------------------------
void SMDBServer::waitSMReady()
{
// waiting for SM is ready...
int ready_timeout = conf->getArgInt("--" + prefix + "-sm-ready-timeout","15000");
if( ready_timeout == 0 )
ready_timeout = 15000;
else if( ready_timeout < 0 )
ready_timeout = UniSetTimer::WaitUpTime;
// waiting for SM is ready...
int ready_timeout = conf->getArgInt("--" + prefix + "-sm-ready-timeout","15000");
if( ready_timeout == 0 )
ready_timeout = 15000;
else if( ready_timeout < 0 )
ready_timeout = UniSetTimer::WaitUpTime;
if( !shm->waitSMready(ready_timeout, 50) )
{
ostringstream err;
err << myname << "(waitSMReady): Wait SharedMemory failed. [ " << ready_timeout << " msec ]";
dlog.crit() << err.str() << endl;
throw SystemError(err.str());
}
if( !shm->waitSMready(ready_timeout, 50) )
{
ostringstream err;
err << myname << "(waitSMReady): Wait SharedMemory failed. [ " << ready_timeout << " msec ]";
dcrit << err.str() << endl;
throw SystemError(err.str());
}
}
// -----------------------------------------------------------------------------
void SMDBServer::step()
{
// DBServer_MySQL::step();
if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
try
{
shm->localSaveValue(aitHeartBeat,sidHeartBeat,maxHeartBeat,getId());
ptHeartBeat.reset();
}
catch(Exception& ex)
{
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
}
}
// DBServer_MySQL::step();
if( sidHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
try
{
shm->localSaveValue(aitHeartBeat,sidHeartBeat,maxHeartBeat,getId());
ptHeartBeat.reset();
}
catch(Exception& ex)
{
dcrit << myname << "(step): (hb) " << ex << std::endl;
}
}
}
//--------------------------------------------------------------------------------
void SMDBServer::initDB( DBInterface *db )
{
{
std::ostringstream q;
q << "SET NAMES " << db_locale;
db->query(q.str());
std::ostringstream q;
q << "SET NAMES " << db_locale;
db->query(q.str());
}
{
std::ostringstream q;
q << "SET CHARACTER SET " << db_locale;
db->query(q.str());
std::ostringstream q;
q << "SET CHARACTER SET " << db_locale;
db->query(q.str());
}
try
{
xmlNode* snode = conf->getXMLSensorsSection();
if(!snode)
{
dlog.crit() << myname << ": section <sensors> not found.." << endl;
return;
}
try
{
xmlNode* snode = conf->getXMLSensorsSection();
if(!snode)
{
dcrit << myname << ": section <sensors> not found.." << endl;
return;
}
UniXML_iterator it(snode);
if( !it.goChildren() )
{
dlog.crit() << myname << ": section <sensors> empty?!.." << endl;
return;
}
UniXML_iterator it(snode);
if( !it.goChildren() )
{
dcrit << myname << ": section <sensors> empty?!.." << endl;
return;
}
for(;it.getCurrent(); it.goNext() )
{
// ??. DBTABLE ObjectsMap
std::ostringstream data;
data << " VALUES('"; // ???? ???????
data << it.getProp("textname") << "','"; // name
data << it.getProp("name") << "','"; // rep_name
data << it.getProp("id") << "','"; // id (sensorid)
data << it.getIntProp("msg") << "')"; // msg [0:1]
for(;it.getCurrent(); it.goNext() )
{
// ??. DBTABLE ObjectsMap
std::ostringstream data;
data << " VALUES('"; // ???? ???????
data << it.getProp("textname") << "','"; // name
data << it.getProp("name") << "','"; // rep_name
data << it.getProp("id") << "','"; // id (sensorid)
data << it.getIntProp("msg") << "')"; // msg [0:1]
if( !writeToBase("INSERT IGNORE INTO ObjectsMap(name,rep_name,id,msg)"+data.str()) )
{
dlog.crit() << myname << "(insert) ObjectsMap msg error: "<< db->error() << std::endl;
db->freeResult();
}
}
}
catch( Exception& ex )
{
dlog.crit() << myname << "(filling ObjectsMap): " << ex << std::endl;
}
catch( ... )
{
dlog.crit() << myname << "(filling ObjectsMap): catch ..." << std::endl;
}
if( !writeToBase("INSERT IGNORE INTO ObjectsMap(name,rep_name,id,msg)"+data.str()) )
{
dcrit << myname << "(insert) ObjectsMap msg error: "<< db->error() << std::endl;
db->freeResult();
}
}
}
catch( Exception& ex )
{
dcrit << myname << "(filling ObjectsMap): " << ex << std::endl;
}
catch( ... )
{
dcrit << myname << "(filling ObjectsMap): catch ..." << std::endl;
}
}
//--------------------------------------------------------------------------------
void SMDBServer::help_print( int argc, const char* const* argv )
{
cout << "--dbserver-name - ID for dbserver. Default: SMDBServer1. " << endl;
cout << "--dbserver-locale name - DB locale. Default: koi8-r. " << endl;
cout << "--dbserver-heartbeat-id name - ID for heartbeat sensor." << endl;
cout << "--dbserver-heartbeat-max val - max value for heartbeat sensor." << endl;
cout << "--dbserver-name - ID for dbserver. Default: SMDBServer1. " << endl;
cout << "--dbserver-locale name - DB locale. Default: koi8-r. " << endl;
cout << "--dbserver-heartbeat-id name - ID 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,
UniSetTypes::ObjectId icID, SharedMemory* ic,
const std::string prefix )
UniSetTypes::ObjectId icID, SharedMemory* ic,
const std::string prefix )
{
string name = conf->getArgParam("--" + prefix + "-name","DBServer");
if( name.empty() )
{
cerr << "(SMDBServer): Unknown name'" << endl;
return 0;
}
string name = conf->getArgParam("--" + prefix + "-name","DBServer");
if( name.empty() )
{
cerr << "(SMDBServer): Unknown name'" << endl;
return 0;
}
ObjectId ID = conf->getServiceID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
cerr << "(SMDBServer): Not found ID for '" << name
<< " in '" << conf->getServicesSection() << "' section" << endl;
return 0;
}
ObjectId ID = conf->getServiceID(name);
if( ID == UniSetTypes::DefaultObjectId )
{
cerr << "(SMDBServer): Not found ID for '" << name
<< " in '" << conf->getServicesSection() << "' section" << endl;
return 0;
}
dlog.info() << "(SMDBServer): name = " << name << "(" << ID << ")" << endl;
return new SMDBServer(ID,icID,ic,prefix);
dinfo << "(SMDBServer): name = " << name << "(" << ID << ")" << endl;
return new SMDBServer(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -54,7 +54,7 @@ int main( int argc, const char** argv )
SMDBServer* db = SMDBServer::init_smdbserver(argc,argv,shmID);
if( !db )
{
dlog.crit() << "(smdbserver): init не прошёл..." << endl;
dcrit << "(smdbserver): init не прошёл..." << endl;
return 1;
}
......@@ -73,11 +73,11 @@ int main( int argc, const char** argv )
}
catch( Exception& ex )
{
dlog.crit() << "(smdbserver): " << ex << std::endl;
dcrit << "(smdbserver): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(smdbserver): catch ..." << std::endl;
dcrit << "(smdbserver): catch ..." << std::endl;
}
return 1;
......
......@@ -71,10 +71,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
string t_fvalue = conf->getArgParam("--t-filter-value");
heartbeat_node = conf->getArgParam("--heartbeat-node");
if( heartbeat_node.empty() && dlog.is_warn() )
dlog.warn() << myname << "(init): --heartbeat-node NULL ===> heartbeat NOT USED..." << endl;
else if( dlog.is_info() )
dlog.info() << myname << "(init): heartbeat-node: " << heartbeat_node << endl;
if( heartbeat_node.empty() )
{
dwarn << myname << "(init): --heartbeat-node NULL ===> heartbeat NOT USED..." << endl;
}
else
dinfo << myname << "(init): heartbeat-node: " << heartbeat_node << endl;
heartbeatCheckTime = conf->getArgInt("--heartbeat-check-time","1000");
......@@ -84,13 +86,12 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
restorer = rxml;
rxml->setReadItem( sigc::mem_fun(this,&SharedMemory::readItem) );
string wdt_dev = conf->getArgParam("--wdt-device");
if( !wdt_dev.empty() )
wdt = new WDTInterface(wdt_dev);
else if( dlog.is_warn() )
dlog.warn() << myname << "(init): watchdog timer NOT USED (--wdt-device NULL)" << endl;
else
dwarn << myname << "(init): watchdog timer NOT USED (--wdt-device NULL)" << endl;
dblogging = conf->getArgInt("--db-logging");
......@@ -111,8 +112,7 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
{
ostringstream err;
err << myname << ": ID not found ('pulsar') for " << p;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
siPulsar.node = conf->getLocalNode();
......@@ -129,7 +129,7 @@ SharedMemory::~SharedMemory()
delete restorer;
restorer = NULL;
}
delete wdt;
}
......@@ -163,26 +163,22 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg )
default:
//dlog.warn() << myname << ": неизвестное сообщение " << msg->type << endl;
break;
}
}
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): " << ex << endl;
dcrit << myname << "(processingMessage): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(processingMessage): CORBA::SystemException: " << ex.NP_minorString() << endl;
dcrit << myname << "(processingMessage): CORBA::SystemException: " << ex.NP_minorString() << endl;
}
catch(CORBA::Exception& ex)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(processingMessage): CORBA::Exception: " << ex._name() << endl;
dwarn << myname << "(processingMessage): CORBA::Exception: " << ex._name() << endl;
}
catch( omniORB::fatalException& fe )
catch( omniORB::fatalException& fe )
{
if( dlog.is_crit() )
{
......@@ -194,8 +190,7 @@ void SharedMemory::processingMessage( UniSetTypes::VoidMessage *msg )
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): catch..." << endl;
dcrit << myname << "(processingMessage): catch..." << endl;
}
}
......@@ -242,13 +237,13 @@ void SharedMemory::sysCommand( SystemMessage *sm )
{
PassiveTimer ptAct(activateTimeout);
while( !isActivated() && !ptAct.checkTime() )
{
{
cout << myname << "(sysCommand): wait activate..." << endl;
msleep(100);
}
if( !isActivated() && dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
if( !isActivated() )
dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
// подождать пока пройдёт инициализация
// см. activateObject()
......@@ -263,11 +258,11 @@ void SharedMemory::sysCommand( SystemMessage *sm )
askTimer(tmPulsar,msecPulsar);
}
break;
case SystemMessage::FoldUp:
case SystemMessage::Finish:
break;
case SystemMessage::WatchDog:
break;
......@@ -297,7 +292,7 @@ void SharedMemory::askSensors( UniversalIO::UIOCommand cmd )
dlog.crit() << myname << "(askSensors): " << ex << endl;
}
}
*/
*/
}
// ------------------------------------------------------------------------------------------
......@@ -305,8 +300,8 @@ bool SharedMemory::activateObject()
{
PassiveTimer pt(UniSetTimer::WaitUpTime);
bool res = true;
// блокирование обработки Startup
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
......@@ -314,16 +309,16 @@ bool SharedMemory::activateObject()
uniset_rwmutex_wrlock l(mutex_act);
activated = false;
}
UniSetTypes::uniset_rwmutex_wrlock l(mutex_start);
res = IONotifyController_LT::activateObject();
// инициализируем указатели
// инициализируем указатели
for( HeartBeatList::iterator it=hlist.begin(); it!=hlist.end(); ++it )
{
it->ioit = myioEnd();
}
itPulsar = myioEnd();
for( History::iterator it=hist.begin(); it!=hist.end(); ++it )
......@@ -343,7 +338,7 @@ bool SharedMemory::activateObject()
}
// ------------------------------------------------------------------------------------------
CORBA::Boolean SharedMemory::exist()
{
{
// return activated;
return workready;
}
......@@ -402,16 +397,14 @@ void SharedMemory::checkHeartBeat()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(checkHeartBeat): " << ex << endl;
dcrit << myname << "(checkHeartBeat): " << ex << endl;
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(checkHeartBeat): ..." << endl;
dcrit << myname << "(checkHeartBeat): ..." << endl;
}
}
if( wdt && wdtpingOK && workready )
wdt->ping();
}
......@@ -421,7 +414,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
for( ReadSlotList::iterator r=lstRSlot.begin(); r!=lstRSlot.end(); ++r )
{
try
{
{
(*r)(xml,it,sec);
}
catch(...){}
......@@ -447,9 +440,8 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
msg << "(SharedMemory::readItem): тип для 'heartbeat' датчика (" << it.getProp("name")
<< ") указан неверно ("
<< it.getProp("iotype") << ") должен быть 'AI'";
if( dlog.is_crit() )
dlog.crit() << msg.str() << endl;
dcrit << msg.str() << endl;
kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str());
};
......@@ -463,8 +455,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
{
ostringstream msg;
msg << "(SharedMemory::readItem): дискретный датчик (heartbeat_ds_name) связанный с " << it.getProp("name");
if( dlog.is_warn() )
dlog.warn() << msg.str() << endl;
dwarn << msg.str() << endl;
}
}
else
......@@ -477,8 +468,7 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
// Если уж задали имя для датчика, то он должен существовать..
// поэтому завершаем процесс, если не нашли..
if( dlog.is_crit() )
dlog.crit() << msg.str() << endl;
dcrit << msg.str() << endl;
kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str());
}
......@@ -490,16 +480,15 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
if( hi.a_sid <= 0 )
{
ostringstream msg;
msg << "(SharedMemory::readItem): НЕ УКАЗАН id для "
msg << "(SharedMemory::readItem): НЕ УКАЗАН id для "
<< it.getProp("name") << " секция " << sec;
if( dlog.is_crit() )
dlog.crit() << msg.str() << endl;
dcrit << msg.str() << endl;
kill(getpid(),SIGTERM);
// throw NameNotFound(msg.str());
};
// без проверки на дублирование т.к.
// без проверки на дублирование т.к.
// id - гарантирует уникальность в нашем configure.xml
hlist.push_back(hi);
return true;
......@@ -512,20 +501,18 @@ SharedMemory* SharedMemory::init_smemory( int argc, const char* const* argv )
if( dfile[0]!='.' && dfile[0]!='/' )
dfile = conf->getConfDir() + dfile;
if( dlog.is_info() )
dlog.info() << "(smemory): datfile = " << dfile << endl;
dinfo << "(smemory): datfile = " << dfile << endl;
UniSetTypes::ObjectId ID = conf->getControllerID(conf->getArgParam("--smemory-id","SharedMemory"));
if( ID == UniSetTypes::DefaultObjectId )
{
cerr << "(smemory): НЕ ЗАДАН идентификатор '"
cerr << "(smemory): НЕ ЗАДАН идентификатор '"
<< " или не найден в " << conf->getControllersSection()
<< endl;
return 0;
}
string cname = conf->getArgParam("--smemory--confnode", ORepHelpers::getShortName(conf->oind->getMapName(ID)) );
return new SharedMemory(ID,dfile,cname);
}
// -----------------------------------------------------------------------------
......@@ -541,16 +528,14 @@ void SharedMemory::readEventList( std::string oname )
xmlNode* enode = conf->getNode(oname);
if( enode == NULL )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(readEventList): " << oname << " не найден..." << endl;
dwarn << myname << "(readEventList): " << oname << " не найден..." << endl;
return;
}
UniXML_iterator it(enode);
if( !it.goChildren() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(readEventList): <eventlist> пустой..." << endl;
dwarn << myname << "(readEventList): <eventlist> пустой..." << endl;
return;
}
......@@ -562,12 +547,11 @@ void SharedMemory::readEventList( std::string oname )
ObjectId oid = it.getIntProp("id");
if( oid != 0 )
{
if( dlog.is_info() )
dlog.info() << myname << "(readEventList): add " << it.getProp("name") << endl;
dinfo << myname << "(readEventList): add " << it.getProp("name") << endl;
elst.push_back(oid);
}
else if( dlog.is_crit() )
dlog.crit() << myname << "(readEventList): Не найден ID для "
else
dcrit << myname << "(readEventList): Не найден ID для "
<< it.getProp("name") << endl;
}
}
......@@ -590,9 +574,9 @@ void SharedMemory::sendEvent( UniSetTypes::SystemMessage& sm )
catch(...){};
}
if(!ok && dlog.is_crit() )
dlog.crit() << myname << "(sendEvent): Объект " << (*it) << " НЕДОСТУПЕН" << endl;
}
if(!ok)
dcrit << myname << "(sendEvent): Объект " << (*it) << " НЕДОСТУПЕН" << endl;
}
}
// -----------------------------------------------------------------------------
void SharedMemory::addReadItem( Restorer_XML::ReaderSlot sl )
......@@ -608,22 +592,19 @@ void SharedMemory::loggingInfo( SensorMessage& sm )
// -----------------------------------------------------------------------------
void SharedMemory::buildHistoryList( xmlNode* cnode )
{
if( dlog.is_info() )
dlog.info() << myname << "(buildHistoryList): ..." << endl;
dinfo << myname << "(buildHistoryList): ..." << endl;
UniXML* xml = conf->getConfXML();
if( !xml )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildHistoryList): xml=NULL?!" << endl;
dwarn << myname << "(buildHistoryList): xml=NULL?!" << endl;
return;
}
xmlNode* n = xml->extFindNode(cnode,1,1,"History","");
if( !n )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildHistoryList): <History> not found. ignore..." << endl;
dwarn << myname << "(buildHistoryList): <History> not found. ignore..." << endl;
hist.clear();
return;
}
......@@ -633,20 +614,18 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
bool no_history = conf->getArgInt("--sm-no-history",it.getProp("no_history"));
if( no_history )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildHistoryList): no_history='1'.. history skipped..." << endl;
dwarn << myname << "(buildHistoryList): no_history='1'.. history skipped..." << endl;
hist.clear();
return;
}
histSaveTime = it.getIntProp("savetime");
if( histSaveTime <= 0 )
histSaveTime = 0;
if( !it.goChildren() )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildHistoryList): <History> empty. ignore..." << endl;
dwarn << myname << "(buildHistoryList): <History> empty. ignore..." << endl;
return;
}
......@@ -665,10 +644,9 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hi.fuse_id = conf->getSensorID(it.getProp("fuse_id"));
if( hi.fuse_id == DefaultObjectId )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(buildHistory): not found sensor ID for "
dwarn << myname << "(buildHistory): not found sensor ID for "
<< it.getProp("fuse_id")
<< " history item id=" << it.getProp("id")
<< " history item id=" << it.getProp("id")
<< " ..ignore.." << endl;
continue;
}
......@@ -682,8 +660,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hi.fuse_val = it.getIntProp("fuse_value");
}
if( dlog.is_info() )
dlog.info() << myname << "(buildHistory): add fuse_id=" << hi.fuse_id
dinfo << myname << "(buildHistory): add fuse_id=" << hi.fuse_id
<< " fuse_val=" << hi.fuse_val
<< " fuse_use_val=" << hi.fuse_use_val
<< " fuse_invert=" << hi.fuse_invert
......@@ -694,8 +671,7 @@ void SharedMemory::buildHistoryList( xmlNode* cnode )
hist.push_back(hi);
}
if( dlog.is_info() )
dlog.info() << myname << "(buildHistoryList): history logs count=" << hist.size() << endl;
dinfo << myname << "(buildHistoryList): history logs count=" << hist.size() << endl;
}
// -----------------------------------------------------------------------------
void SharedMemory::checkHistoryFilter( UniXML_iterator& xit )
......@@ -717,8 +693,7 @@ void SharedMemory::checkHistoryFilter( UniXML_iterator& xit )
ai.id = conf->getSensorID(xit.getProp("name"));
if( ai.id == DefaultObjectId )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(checkHistoryFilter): not found sensor ID for " << xit.getProp("name") << endl;
dwarn << myname << "(checkHistoryFilter): not found sensor ID for " << xit.getProp("name") << endl;
continue;
}
......@@ -751,7 +726,7 @@ void SharedMemory::saveHistory()
si.node = conf->getLocalNode();
try
{
hit->add( localGetValue( hit->ioit, si ), it->size );
continue;
}
......@@ -780,13 +755,10 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
sm_tv_usec = s_it->second.tv_usec;
}
if( dlog.is_info() )
{
dlog.info() << myname << "(updateHistory): "
<< " sid=" << s_it->second.si.id
dinfo << myname << "(updateHistory): "
<< " sid=" << s_it->second.si.id
<< " value=" << value
<< endl;
}
for( HistoryItList::iterator it1=i->second.begin(); it1!=i->second.end(); ++it1 )
{
......@@ -795,15 +767,14 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
if( s_it->second.type == UniversalIO::DI ||
s_it->second.type == UniversalIO::DO )
{
bool st = (bool)value;
bool st = (bool)value;
if( it->fuse_invert )
st^=true;
if( st )
{
if( dlog.is_info() )
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec;
......@@ -822,8 +793,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
if( !st )
{
if( dlog.is_info() )
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec;
......@@ -834,8 +804,7 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
{
if( value == it->fuse_val )
{
if( dlog.is_info() )
dlog.info() << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
dinfo << myname << "(updateHistory): HISTORY EVENT for " << (*it) << endl;
it->fuse_sec = sm_tv_sec;
it->fuse_usec = sm_tv_usec;
......@@ -848,13 +817,13 @@ void SharedMemory::updateHistory( IOStateList::iterator& s_it, IOController* )
// -----------------------------------------------------------------------------
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_invert=" << h.fuse_invert
<< " fuse_val=" << h.fuse_val
<< " size=" << h.size
<< " filter=" << h.filter << endl;
for( SharedMemory::HistoryList::const_iterator it=h.hlst.begin(); it!=h.hlst.end(); ++it )
{
os << " id=" << it->id << "[";
......@@ -862,7 +831,7 @@ std::ostream& operator<<( std::ostream& os, const SharedMemory::HistoryInfo& h )
os << " " << (*i);
os << " ]" << endl;
}
return os;
}
// ------------------------------------------------------------------------------------------
......
......@@ -30,12 +30,12 @@ sender2(0)
// определяем фильтр
s_field = conf->getArgParam("--" + prefix + "-filter-field");
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;
const string n_field(conf->getArgParam("--" + prefix + "-nodes-filter-field"));
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;
int recvTimeout = conf->getArgPInt("--" + prefix + "-recv-timeout",it.getProp("recvTimeout"), 5000);
......@@ -55,7 +55,7 @@ sender2(0)
throw UniSetTypes::SystemError("(UNetExchange): Not found <nodes>");
UniXML_iterator n_it(nodes);
string default_ip(n_it.getProp("unet_broadcast_ip"));
string default_ip2(n_it.getProp("unet_broadcast_ip2"));
......@@ -66,7 +66,7 @@ sender2(0)
{
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;
}
......@@ -92,13 +92,12 @@ sender2(0)
{
ostringstream err;
err << myname << "(init): Unknown broadcast IP for " << n_it.getProp("name");
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw UniSetTypes::SystemError(err.str());
}
if( h2.empty() && dlog.is_info() )
dlog.info() << myname << "(init): ip2 not used..." << endl;
if( h2.empty() )
dinfo << myname << "(init): ip2 not used..." << endl;
// Если указано поле unet_port - используем его
// Иначе port = идентификатору узла
......@@ -115,14 +114,12 @@ sender2(0)
{
if( no_sender )
{
if( dlog.is_info() )
dlog.info() << myname << "(init): sender OFF for this node...("
dinfo << myname << "(init): sender OFF for this node...("
<< n_it.getProp("name") << ")" << endl;
continue;
}
if( dlog.is_info() )
dlog.info() << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl;
dinfo << myname << "(init): init sender.. my node " << n_it.getProp("name") << endl;
sender = new UNetSender(h,p,shm,s_field,s_fvalue,ic);
sender->setSendPause(sendpause);
......@@ -131,8 +128,7 @@ sender2(0)
// создаём "писателя" для второго канала если задан
if( !h2.empty() )
{
if( dlog.is_info() )
dlog.info() << myname << "(init): init sender2.. my node " << n_it.getProp("name") << endl;
dinfo << myname << "(init): init sender2.. my node " << n_it.getProp("name") << endl;
sender2 = new UNetSender(h2,p2,shm,s_field,s_fvalue,ic);
sender2->setSendPause(sendpause);
}
......@@ -142,24 +138,22 @@ 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;
}
if( dlog.is_info() )
dlog.info() << myname << "(init): add UNetReceiver for " << h << ":" << p << endl;
dinfo << myname << "(init): add UNetReceiver for " << h << ":" << p << endl;
if( checkExistUNetHost(h,p) )
{
if( dlog.is_info() )
dlog.info() << myname << "(init): " << h << ":" << p << " already added! Ignore.." << endl;
dinfo << myname << "(init): " << h << ":" << p << " already added! Ignore.." << endl;
continue;
}
bool resp_invert = n_it.getIntProp("unet_respond_invert");
string s_resp_id(n_it.getProp("unet_respond1_id"));
UniSetTypes::ObjectId resp_id = UniSetTypes::DefaultObjectId;
if( !s_resp_id.empty() )
......@@ -169,8 +163,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown RespondID.. Not found id for '" << s_resp_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -184,8 +177,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown RespondID(2).. Not found id for '" << s_resp2_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -199,8 +191,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown LostPacketsID.. Not found id for '" << s_lp_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -214,8 +205,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown LostPacketsID(2).. Not found id for '" << s_lp2_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -229,8 +219,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown LostPacketsID(comm).. Not found id for '" << s_lp_comm_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -244,18 +233,16 @@ sender2(0)
{
ostringstream err;
err << myname << ": Unknown RespondID(comm).. Not found id for '" << s_resp_comm_id << "'" << endl;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
}
if( dlog.is_info() )
dlog.info() << myname << "(init): (node='" << n << "') add receiver "
dinfo << myname << "(init): (node='" << n << "') add receiver "
<< h2 << ":" << p2 << endl;
UNetReceiver* r = new UNetReceiver(h,p,shm);
// на всякий принудительно разблокируем,
// на всякий принудительно разблокируем,
// чтобы не зависеть от значения по умолчанию
r->setLockUpdate(false);
......@@ -275,8 +262,7 @@ sender2(0)
{
if( !h2.empty() ) // создаём читателя впо второму каналу
{
if( dlog.is_info() )
dlog.info() << myname << "(init): (node='" << n << "') add reserv receiver "
dinfo << myname << "(init): (node='" << n << "') add reserv receiver "
<< h2 << ":" << p2 << endl;
r2 = new UNetReceiver(h2,p2,shm);
......@@ -300,8 +286,7 @@ sender2(0)
// т.е. это "резервный канал", то игнорируем ошибку его создания
// при запуске "интерфейс" может быть и не доступен...
r2 = 0;
if( dlog.is_crit() )
dlog.crit() << myname << "(ignore): DON`T CREATE 'UNetReceiver' for " << h2 << ":" << p2 << endl;
dcrit << myname << "(ignore): DON`T CREATE 'UNetReceiver' for " << h2 << ":" << p2 << endl;
}
ReceiverInfo ri(r,r2);
......@@ -320,8 +305,7 @@ sender2(0)
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
......@@ -341,14 +325,12 @@ sender2(0)
{
ostringstream err;
err << myname << "(init): test_id unknown. 'TestMode_S' not found...";
if( dlog.is_crit() )
dlog.crit() << myname << "(init): " << err.str() << endl;
dcrit << myname << "(init): " << err.str() << endl;
throw SystemError(err.str());
}
}
if( dlog.is_info() )
dlog.info() << myname << "(init): test_id=" << test_id << endl;
dinfo << myname << "(init): test_id=" << test_id << endl;
activateTimeout = conf->getArgPInt("--" + prefix + "-activate-timeout", 20000);
}
......@@ -404,8 +386,7 @@ void UNetExchange::waitSMReady()
{
ostringstream err;
err << myname << "(waitSMReady): Не дождались готовности SharedMemory к работе в течение " << ready_timeout << " мсек";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError(err.str());
}
}
......@@ -433,8 +414,7 @@ void UNetExchange::step()
}
catch(Exception& ex)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(step): (hb) " << ex << std::endl;
dcrit << myname << "(step): (hb) " << ex << std::endl;
}
}
......@@ -458,8 +438,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(ReceiverInfo::step): (respond): " << ex << std::endl;
dcrit << myname << "(ReceiverInfo::step): (respond): " << ex << std::endl;
}
try
......@@ -477,8 +456,7 @@ void UNetExchange::ReceiverInfo::step( SMInterface* shm, const std::string& myna
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(ReceiverInfo::step): (lostpackets): " << ex << std::endl;
dcrit << myname << "(ReceiverInfo::step): (lostpackets): " << ex << std::endl;
}
}
// -----------------------------------------------------------------------------
......@@ -515,20 +493,16 @@ void UNetExchange::processingMessage( UniSetTypes::VoidMessage *msg )
}
catch( SystemError& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(SystemError): " << ex << std::endl;
// throw SystemError(ex);
dcrit << myname << "(SystemError): " << ex << std::endl;
raise(SIGTERM);
}
catch( Exception& ex )
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): " << ex << std::endl;
dcrit << myname << "(processingMessage): " << ex << std::endl;
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit() << myname << "(processingMessage): catch ..." << std::endl;
dcrit << myname << "(processingMessage): catch ..." << std::endl;
}
}
// -----------------------------------------------------------------------------
......@@ -545,15 +519,15 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm )
msleep(initPause);
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
{
cout << myname << "(sysCommand): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated && dlog.is_crit() )
dlog.crit() << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
if( !activated )
dcrit << myname << "(sysCommand): ************* don`t activate?! ************" << endl;
{
UniSetTypes::uniset_rwmutex_rlock l(mutex_start);
......@@ -575,7 +549,7 @@ void UNetExchange::sysCommand( UniSetTypes::SystemMessage *sm )
if( shm->isLocalwork() )
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::WatchDog:
{
// ОПТИМИЗАЦИЯ (защита от двойного перезаказа при старте)
......@@ -619,12 +593,11 @@ void UNetExchange::askSensors( UniversalIO::UIOCommand cmd )
if( !shm->waitSMworking(test_id,activateTimeout,50) )
{
ostringstream err;
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
err << myname
<< "(askSensors): Не дождались готовности(work) SharedMemory к работе в течение "
<< activateTimeout << " мсек";
if( dlog.is_crit() )
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
......@@ -645,7 +618,7 @@ void UNetExchange::sensorInfo( UniSetTypes::SensorMessage* sm )
// ------------------------------------------------------------------------------------------
bool UNetExchange::activateObject()
{
// блокирование обработки Starsp
// блокирование обработки Starsp
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
......@@ -661,8 +634,7 @@ bool UNetExchange::activateObject()
// ------------------------------------------------------------------------------------------
void UNetExchange::sigterm( int signo )
{
if( dlog.is_info() )
dlog.info() << myname << ": ********* SIGTERM(" << signo <<") ********" << endl;
dinfo << myname << ": ********* SIGTERM(" << signo <<") ********" << endl;
activated = false;
for( ReceiverList::iterator it=recvlist.begin(); it!=recvlist.end(); ++it )
{
......@@ -727,7 +699,7 @@ void UNetExchange::help_print( int argc, const char* argv[] )
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 )
{
string p("--" + prefix + "-name");
......@@ -746,8 +718,7 @@ UNetExchange* UNetExchange::init_unetexchange( int argc, const char* argv[], Uni
return 0;
}
if( dlog.is_info() )
dlog.info() << "(unetexchange): name = " << name << "(" << ID << ")" << endl;
dinfo << "(unetexchange): name = " << name << "(" << ID << ")" << endl;
return new UNetExchange(ID,icID,ic,prefix);
}
// -----------------------------------------------------------------------------
......@@ -771,8 +742,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev )
it->r1->setLockUpdate(true);
it->r2->setLockUpdate(false);
if( dlog.is_info() )
dlog.info() << myname << "(event): " << r->getName()
dinfo << myname << "(event): " << r->getName()
<< ": timeout for channel1.. select channel 2" << endl;
return;
}
......@@ -784,8 +754,7 @@ void UNetExchange::receiverEvent( UNetReceiver* r, UNetReceiver::Event ev )
it->r1->setLockUpdate(false);
it->r2->setLockUpdate(true);
if( dlog.is_info() )
dlog.info() << myname << "(event): " << r->getName()
dinfo << myname << "(event): " << r->getName()
<< ": timeout for channel2.. select channel 1" << endl;
return;
}
......
......@@ -50,7 +50,7 @@ a_cache_init_ok(false)
s << "R(" << setw(15) << s_host << ":" << setw(4) << port << ")";
myname = s.str();
}
ost::Thread::setException(ost::Thread::throwException);
try
{
......@@ -64,14 +64,14 @@ a_cache_init_ok(false)
{
ostringstream s;
s << myname << ": " << e.what();
dlog.crit() << s.str() << std::endl;
dcrit << s.str() << std::endl;
throw SystemError(s.str());
}
catch( ... )
{
ostringstream s;
s << myname << ": catch...";
dlog.crit() << s.str() << std::endl;
dcrit << s.str() << std::endl;
throw SystemError(s.str());
}
......@@ -144,7 +144,7 @@ void UNetReceiver::setLostPacketsID( UniSetTypes::ObjectId id )
void UNetReceiver::setLockUpdate( bool st )
{
uniset_rwmutex_wrlock l(lockMutex);
lockUpdate = st;
lockUpdate = st;
if( !st )
ptPrepare.reset();
}
......@@ -152,8 +152,8 @@ void UNetReceiver::setLockUpdate( bool st )
void UNetReceiver::resetTimeout()
{
uniset_rwmutex_wrlock l(tmMutex);
ptRecvTimeout.reset();
trTimeout.change(false);
ptRecvTimeout.reset();
trTimeout.change(false);
}
// -----------------------------------------------------------------------------
void UNetReceiver::start()
......@@ -177,11 +177,11 @@ void UNetReceiver::update()
}
catch( UniSetTypes::Exception& ex)
{
dlog.crit() << myname << "(update): " << ex << std::endl;
dcrit << myname << "(update): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << myname << "(update): catch ..." << std::endl;
dcrit << myname << "(update): catch ..." << std::endl;
}
if( sidRespond!=DefaultObjectId )
......@@ -193,7 +193,7 @@ void UNetReceiver::update()
}
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()
}
catch(Exception& ex)
{
dlog.crit() << myname << "(step): (lostPackets) " << ex << std::endl;
dcrit << myname << "(step): (lostPackets) " << ex << std::endl;
}
}
msleep(updatepause);
}
}
......@@ -286,7 +286,7 @@ void UNetReceiver::real_update()
ItemInfo& ii(d_icache[i]);
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;
shm->initIterator(ii.ioit);
}
......@@ -302,11 +302,11 @@ void UNetReceiver::real_update()
}
catch( UniSetTypes::Exception& ex)
{
dlog.crit() << myname << "(update): " << ex << std::endl;
dcrit << myname << "(update): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << myname << "(update): catch ..." << std::endl;
dcrit << myname << "(update): catch ..." << std::endl;
}
}
......@@ -319,7 +319,7 @@ void UNetReceiver::real_update()
ItemInfo& ii(a_icache[i]);
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;
shm->initIterator(ii.ioit);
}
......@@ -335,11 +335,11 @@ void UNetReceiver::real_update()
}
catch( UniSetTypes::Exception& ex)
{
dlog.crit() << myname << "(update): " << ex << std::endl;
dcrit << myname << "(update): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << myname << "(update): catch ..." << std::endl;
dcrit << myname << "(update): catch ..." << std::endl;
}
}
}
......@@ -356,8 +356,7 @@ void UNetReceiver::stop()
// -----------------------------------------------------------------------------
void UNetReceiver::receive()
{
if( dlog.is_info() )
dlog.info() << myname << ": ******************* receive start" << endl;
dinfo << myname << ": ******************* receive start" << endl;
{
uniset_rwmutex_wrlock l(tmMutex);
......@@ -377,18 +376,15 @@ void UNetReceiver::receive()
}
catch( UniSetTypes::Exception& ex)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(receive): " << ex << std::endl;
dwarn << myname << "(receive): " << ex << std::endl;
}
catch( std::exception& e )
{
if( dlog.is_warn() )
dlog.warn() << myname << "(receive): " << e.what()<< std::endl;
dwarn << myname << "(receive): " << e.what()<< std::endl;
}
catch(...)
{
if( dlog.is_warn() )
dlog.warn() << myname << "(receive): catch ..." << std::endl;
dwarn << myname << "(receive): catch ..." << std::endl;
}
// делаем через промежуточную переменную
......@@ -397,7 +393,7 @@ void UNetReceiver::receive()
uniset_rwmutex_rlock l(tmMutex);
tout = ptRecvTimeout.checkTime();
}
// только если "режим подготовки закончился, то можем генерировать "события"
if( ptPrepare.checkTime() && trTimeout.change(tout) )
{
......@@ -410,8 +406,7 @@ void UNetReceiver::receive()
msleep(recvpause);
}
if( dlog.is_info() )
dlog.info() << myname << ": ************* receive FINISH **********" << endl;
dinfo << myname << ": ************* receive FINISH **********" << endl;
}
// -----------------------------------------------------------------------------
bool UNetReceiver::recv()
......@@ -424,7 +419,7 @@ bool UNetReceiver::recv()
size_t sz = UniSetUDP::UDPMessage::getMessage(pack,r_buf);
if( sz == 0 )
{
dlog.crit() << myname << "(receive): FAILED RECEIVE DATA ret=" << ret << endl;
dcrit << myname << "(receive): FAILED RECEIVE DATA ret=" << ret << endl;
return false;
}
......@@ -439,7 +434,7 @@ bool UNetReceiver::recv()
// Обычно "кольцевой". Т.е. если не успели обработать и "вынуть" из буфера информацию.. он будет переписан новыми данными
if( waitClean )
{
dlog.crit() << myname << "(receive): reset qtmp.." << endl;
dcrit << myname << "(receive): reset qtmp.." << endl;
while( !qtmp.empty() )
qtmp.pop();
}
......@@ -510,7 +505,7 @@ void UNetReceiver::initDCache( UniSetUDP::UDPMessage& pack, bool force )
if( !force && pack.dcount == d_icache.size() )
return;
dlog.info() << myname << ": init icache.." << endl;
dinfo << myname << ": init icache.." << endl;
d_cache_init_ok = true;
d_icache.resize(pack.dcount);
......@@ -532,7 +527,7 @@ void UNetReceiver::initACache( UniSetUDP::UDPMessage& pack, bool force )
if( !force && pack.acount == a_icache.size() )
return;
dlog.info() << myname << ": init icache.." << endl;
dinfo << myname << ": init icache.." << endl;
a_cache_init_ok = true;
a_icache.resize(pack.acount);
......
......@@ -31,11 +31,10 @@ s_thr(0)
// определяем фильтр
// s_field = conf->getArgParam("--udp-filter-field");
// 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;
if( dlog.is_info() )
dlog.info() << "(UNetSender): UDP set to " << s_host << ":" << port << endl;
dinfo << "(UNetSender): UDP set to " << s_host << ":" << port << endl;
ost::Thread::setException(ost::Thread::throwException);
try
......@@ -47,14 +46,14 @@ s_thr(0)
{
ostringstream s;
s << myname << ": " << e.what();
dlog.crit() << s.str() << std::endl;
dcrit << s.str() << std::endl;
throw SystemError(s.str());
}
catch( ... )
{
ostringstream s;
s << myname << ": catch...";
dlog.crit() << s.str() << std::endl;
dcrit << s.str() << std::endl;
throw SystemError(s.str());
}
......@@ -65,7 +64,7 @@ s_thr(0)
{
readConfiguration();
dlist.resize(maxItem);
dlog.info() << myname << "(init): dlist size = " << dlist.size() << endl;
dinfo << myname << "(init): dlist size = " << dlist.size() << endl;
}
else
ic->addReadItem( sigc::mem_fun(this,&UNetSender::readItem) );
......@@ -130,18 +129,18 @@ void UNetSender::updateItem( DMap::iterator& it, long value )
void UNetSender::send()
{
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();
try
{
{
udp->setPeer(h,port);
}
catch( ost::SockException& e )
{
ostringstream s;
s << e.getString() << ": " << e.getSystemErrorString();
dlog.crit() << myname << "(poll): " << s.str() << endl;
dcrit << myname << "(poll): " << s.str() << endl;
throw SystemError(s.str());
}
*/
......@@ -156,25 +155,25 @@ void UNetSender::send()
}
catch( ost::SockException& e )
{
dlog.warn() << myname << "(send): " << e.getString() << endl;
dwarn << myname << "(send): " << e.getString() << endl;
}
catch( UniSetTypes::Exception& ex)
{
dlog.warn() << myname << "(send): " << ex << std::endl;
dwarn << myname << "(send): " << ex << std::endl;
}
catch( std::exception& e )
{
dlog.warn() << myname << "(send): " << e.what() << std::endl;
dwarn << myname << "(send): " << e.what() << std::endl;
}
catch(...)
{
dlog.warn() << myname << "(send): catch ..." << std::endl;
dwarn << myname << "(send): catch ..." << std::endl;
}
msleep(sendpause);
}
dlog.info() << "************* execute FINISH **********" << endl;
dinfo << "************* execute FINISH **********" << endl;
}
// -----------------------------------------------------------------------------
void UNetSender::real_send()
......@@ -191,7 +190,7 @@ void UNetSender::real_send()
mypack.transport_msg(s_msg);
size_t ret = udp->send( (char*)s_msg.data, 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()
......@@ -245,7 +244,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
string sname( it.getProp("name") );
string tid(it.getProp("id"));
ObjectId sid;
if( !tid.empty() )
{
......@@ -258,8 +257,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
if( sid == DefaultObjectId )
{
if( dlog )
dlog.crit() << myname << "(readItem): ID not found for "
dcrit << myname << "(readItem): ID not found for "
<< sname << endl;
return false;
}
......@@ -269,7 +267,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
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;
}
......@@ -280,8 +278,8 @@ bool UNetSender::initItem( UniXML_iterator& it )
p.pack_ind = mypack.addDData(sid,0);
if ( p.pack_ind >= UniSetUDP::MaxDCount )
{
dlog.crit() << myname
<< "(readItem): OVERFLOW! MAX UDP DIGITAL DATA LIMIT! max="
dcrit << myname
<< "(readItem): OVERFLOW! MAX UDP DIGITAL DATA LIMIT! max="
<< UniSetUDP::MaxDCount << endl;
raise(SIGTERM);
......@@ -293,8 +291,8 @@ bool UNetSender::initItem( UniXML_iterator& it )
p.pack_ind = mypack.addAData(sid,0);
if ( p.pack_ind >= UniSetUDP::MaxACount )
{
dlog.crit() << myname
<< "(readItem): OVERFLOW! MAX UDP ANALOG DATA LIMIT! max="
dcrit << myname
<< "(readItem): OVERFLOW! MAX UDP ANALOG DATA LIMIT! max="
<< UniSetUDP::MaxACount << endl;
raise(SIGTERM);
return false;
......@@ -307,8 +305,7 @@ bool UNetSender::initItem( UniXML_iterator& it )
dlist[maxItem] = p;
maxItem++;
if( dlog.is_info() )
dlog.info() << myname << "(initItem): add " << p << endl;
dinfo << myname << "(initItem): add " << p << endl;
return true;
}
......
......@@ -52,7 +52,7 @@ int main( int argc, const char** argv )
UNetExchange* unet = UNetExchange::init_unetexchange(argc,argv,shmID);
if( !unet )
{
dlog.crit() << "(unetexchange): init failed.." << endl;
dcrit << "(unetexchange): init failed.." << endl;
return 1;
}
......@@ -72,11 +72,11 @@ int main( int argc, const char** argv )
}
catch( Exception& ex )
{
dlog.crit() << "(unetexchange): " << ex << std::endl;
dcrit << "(unetexchange): " << ex << std::endl;
}
catch(...)
{
dlog.crit() << "(unetexchange): catch ..." << std::endl;
dcrit << "(unetexchange): catch ..." << std::endl;
}
while( waitpid(-1, 0, 0) > 0 );
......
......@@ -36,18 +36,18 @@ smReadyTimeout(15000)
s_field = conf->getArgParam("--" + prefix + "-filter-field");
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;
polltime = conf->getArgInt("--" + prefix + "-polltime",it.getProp("polltime"));
if( polltime <= 0 )
polltime = 200;
dlog.info() << myname << "(init): polltime=" << polltime << endl;
dinfo << myname << "(init): polltime=" << polltime << endl;
int updatetime = conf->getArgInt("--" + prefix + "-updatetime",it.getProp("updatetime"));
if( updatetime <= 0 )
updatetime = 200;
dlog.info() << myname << "(init): updatetime=" << polltime << endl;
dinfo << myname << "(init): updatetime=" << polltime << endl;
ptUpdate.setTiming(updatetime);
......@@ -57,7 +57,7 @@ smReadyTimeout(15000)
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
dlog.info() << myname << "(init): smReadyTimeout=" << smReadyTimeout << endl;
dinfo << myname << "(init): smReadyTimeout=" << smReadyTimeout << endl;
if( it.goChildren() )
{
......@@ -97,7 +97,7 @@ smReadyTimeout(15000)
ni.node = node;
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);
}
}
......@@ -150,23 +150,21 @@ void UniExchange::execute()
bool ok = false;
try
{
if( dlog.is_info() )
dlog.info() << myname << ": connect to id=" << it->id << " node=" << it->node << endl;
dinfo << myname << ": connect to id=" << it->id << " node=" << it->node << endl;
IOController_i::ShortMapSeq_var sseq = ui.getSensors( it->id, it->node );
ok = true;
if( dlog.is_info() )
dlog.info() << myname << " update sensors from id=" << it->id << " node=" << it->node << endl;
dinfo << myname << " update sensors from id=" << it->id << " node=" << it->node << endl;
it->update(sseq,shm);
}
catch( Exception& ex )
{
dlog.info() << myname << "(execute): " << ex << endl;
dwarn << myname << "(execute): " << ex << endl;
}
catch( ... )
{
dlog.info() << myname << "(execute): catch ..." << endl;
dwarn << myname << "(execute): catch ..." << endl;
}
if( it->sidConnection != DefaultObjectId )
......@@ -177,15 +175,14 @@ void UniExchange::execute()
}
catch(...)
{
if( dlog.is_crit() )
dlog.crit()<< myname << "(execute): sensor not avalible "
dcrit << myname << "(execute): sensor not avalible "
<< conf->oind->getNameById( it->sidConnection)
<< endl;
}
}
if( !ok && dlog.is_info() )
dlog.info() << myname << ": ****** cannot connect with node=" << it->node << endl;
if( !ok )
dinfo << myname << ": ****** cannot connect with node=" << it->node << endl;
}
if( ptUpdate.checkTime() )
......@@ -234,11 +231,11 @@ void UniExchange::NetNodeInfo::update( IOController_i::ShortMapSeq_var& map, SMI
}
catch( Exception& ex )
{
dlog.info() << "(update): " << ex << endl;
dwarn << "(update): " << ex << endl;
}
catch( ... )
{
dlog.info() << "(update): catch ..." << endl;
dwarn << "(update): catch ..." << endl;
}
}
}
......@@ -278,11 +275,11 @@ void UniExchange::updateLocalData()
}
catch( Exception& ex )
{
dlog.warn() << "(update): " << ex << endl;
dwarn << "(update): " << ex << endl;
}
catch( ... )
{
dlog.warn() << "(update): catch ..." << endl;
dwarn << "(update): catch ..." << endl;
}
}
......@@ -443,8 +440,7 @@ bool UniExchange::initItem( UniXML_iterator& it )
if( i.id == DefaultObjectId )
{
if( dlog )
dlog.crit() << myname << "(initItem): Unknown ID for "
dcrit << myname << "(initItem): Unknown ID for "
<< it.getProp("name") << endl;
return false;
}
......@@ -452,8 +448,7 @@ bool UniExchange::initItem( UniXML_iterator& it )
i.type = UniSetTypes::getIOType(it.getProp("iotype"));
if( i.type == UniversalIO::UnknownIOType )
{
if( dlog )
dlog.crit() << myname << "(initItem): Unknown iotype= "
dcrit << myname << "(initItem): Unknown iotype= "
<< it.getProp("iotype") << " for " << it.getProp("name") << endl;
return false;
}
......
......@@ -31,4 +31,21 @@ namespace UniSetExtensions
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_
// -------------------------------------------------------------------------
......@@ -3,12 +3,12 @@
/*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/
*/
// --------------------------------------------------------------------------
// generate timestamp: 2013-12-17+04:00
// generate timestamp: 2014-01-23+04:00
// -----------------------------------------------------------------------------
#ifndef UObject_SK_H_
#define UObject_SK_H_
......@@ -21,106 +21,120 @@
#include "DebugStream.h"
// -----------------------------------------------------------------------------
class UObject_SK:
public UniSetObject,
public LT_Object
public UniSetObject,
public LT_Object
{
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
bool alarm( UniSetTypes::ObjectId sid, bool state );
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
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 );
DebugStream mylog;
void init_mylog( DebugStream& d );
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 variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
// ---- end of protected variables ----
virtual void callback();
virtual void processingMessage( UniSetTypes::VoidMessage* msg );
virtual void sysCommand( UniSetTypes::SystemMessage* sm );
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){}
virtual void timerInfo( UniSetTypes::TimerMessage* tm ){}
virtual void sigterm( int signo );
virtual bool activateObject();
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
virtual void callback();
virtual void processingMessage( UniSetTypes::VoidMessage* msg );
virtual void sysCommand( UniSetTypes::SystemMessage* sm );
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){}
virtual void timerInfo( UniSetTypes::TimerMessage* tm ){}
virtual void sigterm( int signo );
virtual bool activateObject();
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( UniSetTypes::SensorMessage* sm );
void preTimerInfo( UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( UniSetTypes::SensorMessage* sm );
void preTimerInfo( UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
// Выполнение очередного шага программы
virtual void step()=0;
// Выполнение очередного шага программы
virtual void step()=0;
int sleep_msec; /*!< пауза между итерациями */
bool active;
int sleep_msec; /*!< пауза между итерациями */
bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::conf->getProp(confnode, name); }
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::conf->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */
bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
int smReadyTimeout; /*!< время ожидания готовности SM */
bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
IOController_i::SensorInfo si;
private:
private:
// --- private variables ---
// --- end of private variables ---
// --- private variables ---
// --- end of private variables ---
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
};
// -----------------------------------------------------------------------------
......
......@@ -24,7 +24,7 @@ namespace UniSetExtensions
{
ostringstream err;
err << ": Unknown ID for '" << sname << "'" << endl;
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError(err.str());
}
......@@ -53,11 +53,10 @@ namespace UniSetExtensions
if( heartBeatTime <= 0 )
{
heartBeatTime = 0;
dlog.warn() << "(getHeartBeatTime): механизм 'HEARTBEAT' ОТКЛЮЧЁН!" << endl;
dwarn << "(getHeartBeatTime): механизм 'HEARTBEAT' ОТКЛЮЧЁН!" << endl;
}
if( dlog.is_info() )
dlog.info() << "(getHeartBeatTime): heartbeat time = " << heartBeatTime << endl;
dinfo << "(getHeartBeatTime): heartbeat time = " << heartBeatTime << endl;
return heartBeatTime;
}
......@@ -114,7 +113,7 @@ namespace UniSetExtensions
{
ostringstream err;
err << "(buildCalibrationDiagram): НЕ НАЙДЕН корневой узел для калибровочных диаграмм";
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError( err.str());
}
......@@ -123,7 +122,7 @@ namespace UniSetExtensions
{
ostringstream err;
err << "(buildCalibrationDiagram): НЕ НАЙДЕНА калибровочная диаграмма '" << dname << "'";
dlog.crit() << err.str() << endl;
dcrit << err.str() << endl;
throw SystemError( err.str());
}
......
......@@ -51,24 +51,24 @@ using namespace UniSetTypes;
} \
catch( IOController_i::NameNotFound &ex ) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): " << ex.err << endl; \
uwarn << "(" << __STRING(fname) << "): " << ex.err << endl; \
} \
catch( IOController_i::IOBadParam &ex ) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): " << ex.err << endl; \
uwarn << "(" << __STRING(fname) << "): " << ex.err << endl; \
} \
catch( Exception& ex ) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): " << ex << endl; \
uwarn << "(" << __STRING(fname) << "): " << ex << endl; \
} \
catch(CORBA::SystemException& ex) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): CORBA::SystemException: " \
uwarn << "(" << __STRING(fname) << "): CORBA::SystemException: " \
<< ex.NP_minorString() << endl; \
} \
catch(...) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): catch ..." << endl; \
uwarn << "(" << __STRING(fname) << "): catch ..." << endl; \
} \
\
oref = CORBA::Object::_nil(); \
......@@ -77,7 +77,7 @@ using namespace UniSetTypes;
#define CHECK_IC_PTR(fname) \
if( !ic ) \
{ \
ulog.warn() << "(" << __STRING(fname) << "): function NOT DEFINED..." << endl; \
uwarn << "(" << __STRING(fname) << "): function NOT DEFINED..." << endl; \
throw UniSetTypes::TimeOut(); \
} \
......
......@@ -6,12 +6,12 @@
/*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/
*/
// --------------------------------------------------------------------------
// generate timestamp: 2013-12-17+04:00
// generate timestamp: 2014-01-23+04:00
// -----------------------------------------------------------------------------
#include "Configuration.h"
#include "Exceptions.h"
......@@ -43,19 +43,19 @@ askPause(2000),
end_private(false)
{
ulog.crit() << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
}
// -----------------------------------------------------------------------------
// ( val, confval, default val )
static const std::string init3_str( const std::string& s1, const std::string& s2, const std::string& s3 )
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
return s3;
}
// -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& argprefix ):
......@@ -79,69 +79,68 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)),
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 )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
if( getId() == DefaultObjectId )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
UniXML_iterator it(cnode);
string heart = conf->getArgParam("--heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
UniXML_iterator it(cnode);
string heart = conf->getArgParam("--heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
int heartbeatTime = conf->getArgPInt("--heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
int heartbeatTime = conf->getArgPInt("--heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
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);
ptResetMsg.setTiming(resetMsgTime);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime);
smReadyTimeout = conf->getArgInt("--sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
smReadyTimeout = conf->getArgInt("--sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
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);
ptStartUpTimeout.setTiming(msec);
int msec = conf->getArgPInt("--startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
// ===================== <variables> =====================
// ===================== <variables> =====================
// ===================== end of <variables> =====================
// ===================== end of <variables> =====================
}
// -----------------------------------------------------------------------------
......@@ -152,7 +151,7 @@ UObject_SK::~UObject_SK()
// -----------------------------------------------------------------------------
void UObject_SK::updateValues()
{
// Опрашиваем все входы...
// Опрашиваем все входы...
}
// -----------------------------------------------------------------------------
......@@ -168,31 +167,20 @@ void UObject_SK::checkSensors()
// -----------------------------------------------------------------------------
bool UObject_SK::alarm( UniSetTypes::ObjectId _code, bool _state )
{
if( _code == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << getName()
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
if( ulog.is_level1() )
{
ulog.level1() << getName() << "(alarm): ";
if( _state )
ulog.level1(false) << "SEND ";
else
ulog.level1(false) << "RESET ";
ulog.level1(false) << endl;
}
if( ulog.is_level1() )
ulog.level1() << " not found MessgeOID?!!" << endl;
return false;
if( _code == UniSetTypes::DefaultObjectId )
{
ucrit << getName()
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
ulog1 << getName() << "(alarm): " << ( _state ? "SEND " : "RESET " ) << endl;
ulog1 << " not found MessgeOID?!!" << endl;
return false;
}
// -----------------------------------------------------------------------------
void UObject_SK::resetMsg()
......@@ -203,10 +191,10 @@ void UObject_SK::resetMsg()
// -----------------------------------------------------------------------------
void UObject_SK::testMode( bool _state )
{
if( !_state )
return;
if( !_state )
return;
// отключаем все выходы
// отключаем все выходы
}
// -----------------------------------------------------------------------------
......@@ -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 )
{
try
{
switch( _msg->type )
{
case Message::SensorInfo:
{
SensorMessage _sm( _msg );
preSensorInfo( &_sm );
break;
}
case Message::Timer:
{
TimerMessage _tm(_msg);
preTimerInfo(&_tm);
break;
}
case Message::SysCommand:
{
SystemMessage _sm( _msg );
sysCommand( &_sm );
break;
}
default:
break;
}
}
catch(Exception& ex)
{
cout << myname << "(processingMessage): " << ex << endl;
}
try
{
switch( _msg->type )
{
case Message::SensorInfo:
{
SensorMessage _sm( _msg );
preSensorInfo( &_sm );
break;
}
case Message::Timer:
{
TimerMessage _tm(_msg);
preTimerInfo(&_tm);
break;
}
case Message::SysCommand:
{
SystemMessage _sm( _msg );
sysCommand( &_sm );
break;
}
default:
break;
}
}
catch( Exception& ex )
{
ucrit << myname << "(processingMessage): " << ex << endl;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sysCommand( SystemMessage* _sm )
{
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulog << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
ulog << myname << "(sysCommand): logRotate" << endl;
string fname( ulog.getLogFile() );
if( !fname.empty() )
{
ulog.logFile(fname.c_str());
ulog << myname << "(sysCommand): ***************** ulog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulog << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
uwarn << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylog << myname << "(sysCommand): logRotate" << endl;
string fname( mylog.getLogFile() );
if( !fname.empty() )
{
mylog.logFile(fname.c_str());
mylog << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sigterm( int signo )
{
UniSetObject::sigterm(signo);
active = false;
UniSetObject::sigterm(signo);
active = false;
}
// -----------------------------------------------------------------------------
bool UObject_SK::activateObject()
{
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
}
// -----------------------------------------------------------------------------
void UObject_SK::preTimerInfo( UniSetTypes::TimerMessage* _tm )
{
timerInfo(_tm);
timerInfo(_tm);
}
// ----------------------------------------------------------------------------
void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
{
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
return;
if( _testID == DefaultObjectId )
return;
if( ulog.is_info() )
{
ulog.info() << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
}
uinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
if( !ui.waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
if( !ui.waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
if( ulog.is_crit() )
ulog.crit() << err.str() << endl;
terminate();
abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
ucrit << err.str() << endl;
terminate();
abort();
// kill(SIGTERM,getpid()); // прерываем (перезапускаем) процесс...
throw SystemError(err.str());
}
}
......@@ -371,70 +354,67 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
// --------------------------------------------------------------------------
void UObject_SK::callback()
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(false);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui.setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(false);
updatePreviousValues();
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(execute): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(execute): СORBA::SystemException: "
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(false);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui.setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(false);
updatePreviousValues();
}
catch( Exception& ex )
{
ucrit << myname << "(execute): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
ucrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(execute): catch ..." << endl;
}
}
catch(...)
{
ucrit << myname << "(execute): catch ..." << endl;
}
if( !active )
return;
if( !active )
return;
msleep( sleep_msec );
msleep( sleep_msec );
}
// -----------------------------------------------------------------------------
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 )
{
sensorInfo(_sm);
sensorInfo(_sm);
}
// -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
ui.askRemoteSensor(_sid,_cmd,_node,getId());
ui.askRemoteSensor(_sid,_cmd,_node,getId());
}
// -----------------------------------------------------------------------------
long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
{
try
{
try
{
if( ulog.is_crit() )
ulog.crit() << myname << "(getValue): Обращение к неизвестному датчику sid="
ucrit << myname << "(getValue): Обращение к неизвестному датчику sid="
<< _sid << endl;
}
catch(Exception& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(getValue): " << ex << endl;
throw;
}
return 0;
}
catch(Exception& ex)
{
ucrit << myname << "(getValue): " << ex << endl;
throw;
}
return 0;
}
// -----------------------------------------------------------------------------
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated && ulog.is_crit() )
ulog.crit() << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch(SystemError& err)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(preAskSensors): " << err << endl;
}
catch(Exception& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(preAskSensors): " << ex << endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(preAskSensors): catch(...)" << endl;
}
msleep(askPause);
}
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch(SystemError& err)
{
ucrit << myname << "(preAskSensors): " << err << endl;
}
catch(Exception& ex)
{
ucrit << myname << "(preAskSensors): " << ex << endl;
}
catch(...)
{
ucrit << myname << "(preAskSensors): catch(...)" << endl;
}
msleep(askPause);
}
}
// -----------------------------------------------------------------------------
void UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
{
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
}
// ----------------------------------------------------------------------------
......@@ -53,7 +53,7 @@ void TestProc::sysCommand( UniSetTypes::SystemMessage* 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,":")
<< "(" << setw(6) << sm->sm_tv_usec << "): "
<< endl;
......@@ -83,7 +83,7 @@ void TestProc::timerInfo( TimerMessage *tm )
{
state^=true;
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
}
else if( tm->id == tmCheckWorking )
......@@ -102,7 +102,7 @@ void TestProc::timerInfo( TimerMessage *tm )
cerr << "======= TEST LOG PRINT ======" << endl;
cerr << "LOGLEVEL: [" << (int)(*lit) << "] " << (*lit) << endl;
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;
}
......@@ -111,16 +111,16 @@ void TestProc::timerInfo( TimerMessage *tm )
void TestProc::test_depend()
{
cerr << myname << ": Check depend..." << endl;
long test_val = 100;
// set depend 0...
setValue(depend_c,0);
setValue(set_d1_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: d2: " << ( getValue(d2_check_s) == -50 ? "OK" : "FAIL" ) << endl;
// set depend 1
setValue(depend_c,1);
cerr << myname << ": check depend ON: d1: " << ( getValue(d1_check_s) == test_val ? "OK" : "FAIL" ) << endl;
......@@ -132,10 +132,10 @@ void TestProc::test_undefined_state()
// ---------------- Проверка выставления неопределённого состояния ---------------------
cerr << myname << ": Check undef state..." << endl;
undef ^= true;
si.id = undef_c;
si.node = conf->getLocalNode();
cerr << myname << ": set undefined=" << undef << endl;
cerr << myname << ": set undefined=" << undef << endl;
ui.setUndefinedState( si, undef, getId() );
}
// -----------------------------------------------------------------------------
......@@ -149,7 +149,7 @@ void TestProc::test_thresholds()
setValue(t_set_c,378);
cerr << myname << ": check threshold ON value: " << ( getValue(t_check_s) == 1 ? "OK" : "FAIL" ) << endl;
cerr << myname << ": ask threshold and check.. " << endl;
try
......@@ -166,7 +166,7 @@ void TestProc::test_thresholds()
}
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)
}
catch( SystemError& err )
{
ulog.crit() << "(smemory): " << err << endl;
ucrit << "(smemory): " << err << endl;
}
catch( Exception& ex )
{
ulog.crit() << "(smemory): " << ex << endl;
ucrit << "(smemory): " << ex << endl;
}
catch( std::exception& e )
{
ulog.crit() << "(smemory): " << e.what() << endl;
ucrit << "(smemory): " << e.what() << endl;
}
catch(...)
{
ulog.crit() << "(smemory): catch(...)" << endl;
ucrit << "(smemory): catch(...)" << endl;
}
return 1;
......
......@@ -73,7 +73,7 @@ namespace UniSetTypes
int getPIntField(const std::string& path, int def);
xmlNode* findNode(xmlNode* node, const std::string& searchnode, const std::string& name="" );
// Получить узел
xmlNode* getNode(const std::string& path);
// Получить указанное свойство пути
......@@ -92,7 +92,7 @@ namespace UniSetTypes
inline ObjectId getLocalNode() const { return localNode; } /*!< получение идентификатора локального узла */
inline std::string getLocalNodeName() const { return localNodeName; } /*!< получение название локального узла */
inline const std::string getNSName() const { return NSName; }
// repository
inline std::string getRootSection() const { return secRoot; }
inline std::string getSensorsSection() const { return secSensors; }
......@@ -108,7 +108,7 @@ namespace UniSetTypes
xmlNode* getXMLObjectNode( UniSetTypes::ObjectId );
UniversalIO::IOType getIOType( UniSetTypes::ObjectId );
UniversalIO::IOType getIOType( const std::string& name );
// net
inline unsigned int getCountOfNet() const { return countOfNet; }
inline unsigned int getRepeatTimeout() const { return repeatTimeout; }
......@@ -136,7 +136,7 @@ namespace UniSetTypes
inline bool isLocalIOR(){ return localIOR; }
inline bool isTransientIOR(){ return transientIOR; }
/*! получить значение указанного параметра, или значение по умолчанию */
std::string getArgParam(const std::string& name, const std::string& defval="");
/*! получить числовое значение параметра, если не число, то 0. Если параметра нет, используется значение defval */
......@@ -240,13 +240,28 @@ namespace UniSetTypes
/*! Глобальный объект для вывода логов */
extern DebugStream ulog;
// Инициализация UniSetTypes::conf.
// ( учитываются параметры командной строки --confile и --id-from-config )
void uniset_init( int argc, const char* const* argv, const std::string& xmlfile="configure.xml" );
} // 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_
......@@ -20,7 +20,7 @@
/*! \file
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <omniORB4/CORBA.h>
#include <omniORB4/omniURI.h>
#include <string>
......@@ -63,7 +63,7 @@ UInterface::UInterface( ObjectId backid, CORBA::ORB_var orb, ObjectIndex* _oind
oind = uconf->oind;
init();
}
}
UInterface::~UInterface()
{
......@@ -115,7 +115,7 @@ void UInterface::initBackId( UniSetTypes::ObjectId backid )
* \exception IOBadParam - генерируется если указано неправильное имя датчика или секции
* \exception IOTimeOut - генерируется если в течение времени timeout небыл получен ответ
*/
long UInterface::getValue( ObjectId name, ObjectId node )
long UInterface::getValue( ObjectId name, ObjectId node )
throw(IO_THROW_EXCEPTIONS)
{
if ( name == DefaultObjectId )
......@@ -163,46 +163,46 @@ long UInterface::getValue( ObjectId name, ObjectId node )
}
catch(ORepFailed)
{
rcache.erase(name, node);
rcache.erase(name, node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getValue): ORepFailed",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getValue): method no implement",name,node));
}
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getValue): method no implement",name,node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(name, node);
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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());
}
// ------------------------------------------------------------------------------------------------------------
void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefined,
void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefined,
UniSetTypes::ObjectId sup_id )
{
if( si.id == DefaultObjectId )
{
ulog.warn() << "UI(setUndefinedState): ID=UniSetTypes::DefaultObjectId" << endl;
uwarn << "UI(setUndefinedState): ID=UniSetTypes::DefaultObjectId" << endl;
return;
}
......@@ -217,7 +217,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
oref = rcache.resolve(si.id, si.node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
......@@ -240,7 +240,7 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
catch(IOController_i::NameNotFound &ex)
{
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)
{
......@@ -251,24 +251,24 @@ void UInterface::setUndefinedState( IOController_i::SensorInfo& si, bool undefin
{
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)
{
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)
{
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::SystemException& ex){}
catch(...){}
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
* \return текущее значение датчика
* \exception IOBadParam - генерируется если указано неправильное имя вывода или секции
*/
void UInterface::setValue(ObjectId name, long value, ObjectId node)
void UInterface::setValue(ObjectId name, long value, ObjectId node)
throw(IO_THROW_EXCEPTIONS)
{
if ( name == DefaultObjectId )
......@@ -291,14 +291,14 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node)
oref = rcache.resolve(name, node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
{
if( CORBA::is_nil(oref) )
oref = resolve( name, node );
IOController_i_var iom = IOController_i::_narrow(oref);
IOController_i::SensorInfo_var si;
si->id = name;
......@@ -329,31 +329,31 @@ void UInterface::setValue(ObjectId name, long value, ObjectId node)
rcache.erase(name, node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(setValue): resolve failed ",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(setValue): method no implement",name,node));
}
}
catch(CORBA::OBJECT_NOT_EXIST)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(setValue): object not exist",name,node));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(setValue): CORBA::SystemException" << endl;
}
// uwarn << "UI(setValue): CORBA::SystemException" << endl;
}
rcache.erase(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());
}
......@@ -372,7 +372,7 @@ void UInterface::setValue( IOController_i::SensorInfo& si, long value, UniSetTyp
myid = old;
throw;
}
myid = old;
}
......@@ -382,7 +382,7 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
{
if ( si.id == DefaultObjectId )
{
ulog.warn() << "UI(fastSetValue): ID=UniSetTypes::DefaultObjectId" << endl;
uwarn << "UI(fastSetValue): ID=UniSetTypes::DefaultObjectId" << endl;
return;
}
......@@ -397,14 +397,14 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
oref = rcache.resolve(si.id, si.node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
{
if( CORBA::is_nil(oref) )
oref = resolve( si.id,si.node );
IOController_i_var iom = IOController_i::_narrow(oref);
iom->fastSetValue(si, value,sup_id);
return;
......@@ -412,15 +412,15 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
}
}
catch(UniSetTypes::TimeOut){}
catch(IOController_i::NameNotFound &ex)
{
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)
{
......@@ -429,33 +429,33 @@ void UInterface::fastSetValue( IOController_i::SensorInfo& si, long value, UniSe
}
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)
{
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)
{
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::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(setValue): CORBA::SystemException" << endl;
}
// uwarn << "UI(setValue): CORBA::SystemException" << endl;
}
catch(...){}
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
{
if( backid==UniSetTypes::DefaultObjectId )
backid = myid;
if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askRemoteSensor): unknown back ID");
......@@ -486,14 +486,14 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
oref = rcache.resolve(name, node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
{
if( CORBA::is_nil(oref) )
if( CORBA::is_nil(oref) )
oref = resolve( name, node );
IONotifyController_i_var inc = IONotifyController_i::_narrow(oref);
IOController_i::SensorInfo_var si;
si->id = name;
......@@ -508,8 +508,8 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
}
}
catch(UniSetTypes::TimeOut){}
......@@ -525,30 +525,30 @@ void UInterface::askRemoteSensor( ObjectId name, UniversalIO::UIOCommand cmd, Ob
}
catch(ORepFailed)
{
rcache.erase(name, node);
rcache.erase(name, node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): resolve failed ",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): method no implement",name,node));
}
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(askSensor): method no implement",name,node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(askSensor): ошибка системы коммуникации" << endl;
}
// uwarn << "UI(askSensor): ошибка системы коммуникации" << endl;
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(askSensor): CORBA::SystemException" << endl;
}
// uwarn << "UI(askSensor): CORBA::SystemException" << endl;
}
rcache.erase(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
* \param node - идентификатор узла
*/
IOType UInterface::getIOType(ObjectId name, ObjectId node)
throw(IO_THROW_EXCEPTIONS)
throw(IO_THROW_EXCEPTIONS)
{
if ( name == DefaultObjectId )
throw ORepFailed("UI(getIOType): попытка обратиться к объекту с id=UniSetTypes::DefaultObjectId");
......@@ -583,7 +583,7 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
{
try
{
if( CORBA::is_nil(oref) )
if( CORBA::is_nil(oref) )
oref = resolve(name, node);
IOController_i_var inc = IOController_i::_narrow(oref);
......@@ -595,13 +595,13 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
}
}
catch(IOController_i::NameNotFound& ex)
{
rcache.erase(name, node);
rcache.erase(name, node);
throw UniSetTypes::NameNotFound("UI(getIOType): "+string(ex.err));
}
catch(IOController_i::IOBadParam& ex)
......@@ -611,32 +611,32 @@ IOType UInterface::getIOType(ObjectId name, ObjectId node)
}
catch(ORepFailed)
{
rcache.erase(name, node);
rcache.erase(name, node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): resolve failed ",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): method no implement",name,node));
}
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getIOType): method no implement",name,node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getIOType): ошибка системы коммуникации" << endl;
}
// uwarn << "UI(getIOType): ошибка системы коммуникации" << endl;
}
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));
}
......@@ -663,12 +663,12 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
oref = rcache.resolve(name, node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
{
if( CORBA::is_nil(oref) )
if( CORBA::is_nil(oref) )
oref = resolve( name, node );
UniSetObject_i_var uo = UniSetObject_i::_narrow(oref);
......@@ -677,13 +677,13 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
catch(CORBA::TRANSIENT){}
catch(CORBA::OBJECT_NOT_EXIST){}
catch(CORBA::SystemException& ex){}
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
msleep(uconf->getRepeatTimeout());
oref = CORBA::Object::_nil();
}
}
catch(IOController_i::NameNotFound& ex)
{
rcache.erase(name, node);
rcache.erase(name, node);
throw UniSetTypes::NameNotFound("UI(getType): "+string(ex.err));
}
catch(IOController_i::IOBadParam& ex)
......@@ -693,33 +693,33 @@ ObjectType UInterface::getType(ObjectId name, ObjectId node)
}
catch(ORepFailed)
{
rcache.erase(name, node);
rcache.erase(name, node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getType): resolve failed ",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getType): method no implement",name,node));
}
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(getType): method no implement",name,node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getType): ошибка системы коммуникации" << endl;
}
// uwarn << "UI(getType): ошибка системы коммуникации" << endl;
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getType): CORBA::SystemException" << endl;
}
// uwarn << "UI(getType): CORBA::SystemException" << endl;
}
catch(UniSetTypes::TimeOut){}
rcache.erase(name, node);
rcache.erase(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
}
// ------------------------------------------------------------------------------------------------------------
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)
{
// если влючён режим использования локальных файлов
......@@ -805,25 +805,15 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
if( !sior.empty() )
{
CORBA::Object_var nso = orb->string_to_object(sior.c_str());
rcache.cache(rid, node, nso); // заносим в кэш
rcache.cache(rid, node, nso); // заносим в кэш
return nso._retn();
}
else
{
// если NameService недоступен то,
// сразу выдаём ошибку
// if( CORBA::is_nil(localctx) )
// {
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";
uwarn << "not found IOR-file for " << uconf->oind->getNameById(rid,node) << endl;
throw UniSetTypes::ResolveNameError();
}
}
......@@ -838,12 +828,10 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
{
try
{
// // ulog.info() << "пытаемся связаться с "<< node << endl;
if( CORBA::is_nil(orb) )
orb = uconf->getORB();
ctx = ORepHelpers::getRootNamingContext( orb, nodeName.c_str() );
// // ulog.info() << "ok. "<< endl;
break;
}
// catch(CORBA::COMM_FAILURE& ex )
......@@ -855,12 +843,12 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
ostringstream s;
s << bname << curNet;
nodeName=s.str();
}
}
}
if( CORBA::is_nil(ctx) )
{
// ulog.warn() << "NameService недоступен на узле "<< node << endl;
// uwarn << "NameService недоступен на узле "<< node << endl;
throw NSResolveError();
}
}
......@@ -879,28 +867,28 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
else
localctx = ORepHelpers::getRootNamingContext( orb, nodeName );
}
ctx = localctx;
}
CosNaming::Name_var oname = omniURI::stringToName( oind->getNameById(rid,node).c_str() );
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
try
{
CORBA::Object_var nso = ctx->resolve(oname);
if( CORBA::is_nil(nso) )
throw UniSetTypes::ResolveNameError();
// Для var
rcache.cache(rid, node, nso); // заносим в кэш
rcache.cache(rid, node, nso); // заносим в кэш
return nso._retn();
}
catch(CORBA::TRANSIENT){}
msleep(uconf->getRepeatTimeout());
}
throw UniSetTypes::TimeOut();
}
catch(const CosNaming::NamingContext::NotFound &nf){}
......@@ -910,23 +898,23 @@ ObjectPtr UInterface::resolve( ObjectId rid , ObjectId node, int timeoutSec )
catch(CORBA::OBJECT_NOT_EXIST)
{
throw UniSetTypes::ResolveNameError("ObjectNOTExist");
}
}
catch(CORBA::COMM_FAILURE& ex)
{
throw UniSetTypes::ResolveNameError("CORBA::CommFailure");
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(resolve): CORBA::SystemException" << endl;
// uwarn << "UI(resolve): CORBA::SystemException" << endl;
throw UniSetTypes::TimeOut();
}
}
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)
{
if ( name == DefaultObjectId )
......@@ -963,27 +951,27 @@ void UInterface::send( ObjectId name, TransportMessage& msg, ObjectId node)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): resolve failed ",name,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): method no implement",name,node));
}
}
catch(CORBA::OBJECT_NOT_EXIST)
{
rcache.erase(name, node);
throw UniSetTypes::IOBadParam(set_err("UI(send): object not exist",name,node));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(send): ошибка системы коммуникации" << endl;
}
// uwarn << "UI(send): ошибка системы коммуникации" << endl;
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(send): CORBA::SystemException" << endl;
}
// uwarn << "UI(send): CORBA::SystemException" << endl;
}
rcache.erase(name, node);
throw UniSetTypes::TimeOut(set_err("UI(send): Timeout",name, node));
......@@ -1034,7 +1022,7 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id
catch(IOController_i::NameNotFound &ex)
{
rcache.erase(si.id, si.node);
ulog.warn() << "UI(getChangedTime): " << ex.err << endl;
uwarn << "UI(getChangedTime): " << ex.err << endl;
}
catch(IOController_i::IOBadParam& ex )
{
......@@ -1044,27 +1032,27 @@ IOController_i::ShortIOInfo UInterface::getChangedTime( UniSetTypes::ObjectId id
catch(ORepFailed)
{
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)
{
rcache.erase(si.id, si.node);
ulog.warn() << set_err("UI(getChangedTime): method no implement",si.id,si.node) << endl;
}
rcache.erase(si.id, si.node);
uwarn << set_err("UI(getChangedTime): method no implement",si.id,si.node) << endl;
}
catch(CORBA::OBJECT_NOT_EXIST)
{
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)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(saveState): CORBA::COMM_FAILURE " << endl;
}
// uwarn << "UI(saveState): CORBA::COMM_FAILURE " << endl;
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(saveState): CORBA::SystemException" << endl;
// uwarn << "UI(saveState): CORBA::SystemException" << endl;
}
catch(...){}
......@@ -1116,8 +1104,7 @@ bool UInterface::CacheOfResolve::clean()
{
UniSetTypes::uniset_rwmutex_wrlock l(cmutex);
if( ulog.is_info() )
ulog.info() << "UI: clean cache...."<< endl;
uinfo << "UI: clean cache...."<< endl;
time_t tm = time(NULL)-CleanTime*60;
// remove_if(mcache.begin(), mcache.end(),OldRef_eq(tm));
......@@ -1131,7 +1118,7 @@ bool UInterface::CacheOfResolve::clean()
if( mcache.size() < MaxSize )
return true;
return false;
}
// ------------------------------------------------------------------------------------------------------------
......@@ -1163,16 +1150,16 @@ bool UInterface::isExist( UniSetTypes::ObjectId id )
CORBA::Object_var oref = orb->string_to_object(sior.c_str());
return rep.isExist( oref );
}
return false;
}
string nm = oind->getNameById(id);
return rep.isExist(nm);
}
catch(UniSetTypes::Exception& ex)
{
// ulog.warn() << "UI(isExist): " << ex << endl;
// uwarn << "UI(isExist): " << ex << endl;
}
catch(...){}
return false;
......@@ -1208,13 +1195,13 @@ string UInterface::set_err(const std::string& pre, UniSetTypes::ObjectId id, Uni
return string(pre+" DefaultObjectId");
string nm(oind->getNameById(id,node));
if( nm.empty() )
nm = "UnknownName";
ostringstream s;
s << pre << " (" << id << ")" << nm;
return s.str();
s << pre << " (" << id << ")" << nm;
return s.str();
}
// --------------------------------------------------------------------------------------------
void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ThresholdId tid,
......@@ -1223,7 +1210,7 @@ void UInterface::askThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Threshold
UniSetTypes::ObjectId backid)
{
askRemoteThreshold(sid, uconf->getLocalNode(), tid, cmd, low, hi, invert, backid);
}
}
// --------------------------------------------------------------------------------------------
void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::ObjectId node,
UniSetTypes::ThresholdId tid, UniversalIO::UIOCommand cmd,
......@@ -1232,7 +1219,7 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
{
if( backid==UniSetTypes::DefaultObjectId )
backid = myid;
if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askRemoteThreshold): unknown back ID");
......@@ -1247,14 +1234,14 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
oref = rcache.resolve(sid, node);
}
catch( NameNotFound ){}
for (unsigned int i=0; i<uconf->getRepeatCount(); i++)
{
try
{
if( CORBA::is_nil(oref) )
oref = resolve( sid, node );
IONotifyController_i_var inc = IONotifyController_i::_narrow(oref);
IOController_i::SensorInfo_var si;
si->id = sid;
......@@ -1287,35 +1274,35 @@ void UInterface::askRemoteThreshold( UniSetTypes::ObjectId sid, UniSetTypes::Obj
}
catch(ORepFailed)
{
rcache.erase(sid, node);
rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): resolve failed ",sid,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): method no implement",sid,node));
}
rcache.erase(sid, node);
throw UniSetTypes::IOBadParam(set_err("UI(askThreshold): method no implement",sid,node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(askThreshold): ошибка системы коммуникации" << endl;
}
// uwarn << "UI(askThreshold): ошибка системы коммуникации" << endl;
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(askThreshold): CORBA::SystemException" << endl;
}
rcache.erase(sid, node);
// uwarn << "UI(askThreshold): CORBA::SystemException" << endl;
}
rcache.erase(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 )
{
IOController_i::SensorInfo si;
......@@ -1324,7 +1311,7 @@ IONotifyController_i::ThresholdInfo
return getThresholdInfo(si,tid);
}
// --------------------------------------------------------------------------------------------------------------
IONotifyController_i::ThresholdInfo
IONotifyController_i::ThresholdInfo
UInterface::getThresholdInfo( const IOController_i::SensorInfo& si, UniSetTypes::ThresholdId tid )
{
if ( si.id == DefaultObjectId )
......@@ -1369,30 +1356,30 @@ IONotifyController_i::ThresholdInfo
}
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));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): method no implement",si.id,si.node));
}
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getThresholdInfo): method no implement",si.id,si.node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(si.id, si.node);
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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 )
}
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));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): method no implement",si.id,si.node));
}
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getRawValue): method no implement",si.id,si.node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(si.id, si.node);
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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,
UniSetTypes::ObjectId admId )
{
if( admId==UniSetTypes::DefaultObjectId )
admId = myid;
// if( admId==UniSetTypes::DefaultObjectId )
// throw UniSetTypes::IOBadParam("UI(askTreshold): неизвестен ID администратора");
......@@ -1520,32 +1507,32 @@ void UInterface::calibrate(const IOController_i::SensorInfo& si,
}
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));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(calibrate): method no implement",si.id,si.node));
}
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(calibrate): method no implement",si.id,si.node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(si.id, si.node);
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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 )
{
......@@ -1591,30 +1578,30 @@ IOController_i::CalibrateInfo UInterface::getCalibrateInfo( const IOController_i
}
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));
}
}
catch(CORBA::NO_IMPLEMENT)
{
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): method no implement",si.id,si.node));
}
rcache.erase(si.id, si.node);
throw UniSetTypes::IOBadParam(set_err("UI(getCalibrateInfo): method no implement",si.id,si.node));
}
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));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(si.id, si.node);
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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&
oref = resolve(sid,conf->getLocalNode());
IOController_i_var iom = IOController_i::_narrow(oref);
UniSetTypes::IDSeq_var seq = lst.getIDSeq();
return iom->getSensorSeq(seq);
}
......@@ -1672,26 +1659,26 @@ IOController_i::SensorInfoSeq_var UInterface::getSensorSeq( UniSetTypes::IDList&
rcache.erase(sid,conf->getLocalNode());
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): resolve failed ",sid,conf->getLocalNode()));
}
}
catch(CORBA::NO_IMPLEMENT)
{
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)
{
rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(getSensorSeq): object not exist",sid,conf->getLocalNode()));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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
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));
}
}
catch(CORBA::NO_IMPLEMENT)
{
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)
{
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));
}
}
catch(CORBA::COMM_FAILURE& 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);
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 )
{
if( lst.size() == 0 )
......@@ -1780,7 +1767,7 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst,
if( backid==UniSetTypes::DefaultObjectId )
backid = myid;
if( backid==UniSetTypes::DefaultObjectId )
throw UniSetTypes::IOBadParam("UI(askSensorSeq): unknown back ID");
......@@ -1837,26 +1824,26 @@ UniSetTypes::IDSeq_var UInterface::askSensorsSeq( UniSetTypes::IDList& lst,
rcache.erase(sid,conf->getLocalNode());
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): resolve failed ",sid,conf->getLocalNode()));
}
}
catch(CORBA::NO_IMPLEMENT)
{
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)
{
rcache.erase(sid,conf->getLocalNode());
throw UniSetTypes::IOBadParam(set_err("UI(askSensorSeq): object not exist",sid,conf->getLocalNode()));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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
rcache.erase(id,node);
// не смогли получить ссылку на объект
throw UniSetTypes::IOBadParam(set_err("UI(getSensors): resolve failed ",id,node));
}
}
catch(CORBA::NO_IMPLEMENT)
{
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)
{
rcache.erase(id,node);
throw UniSetTypes::IOBadParam(set_err("UI(getSensors): object not exist",id,node));
}
}
catch(CORBA::COMM_FAILURE& ex)
{
// ошибка системы коммуникации
}
}
catch(CORBA::SystemException& ex)
{
// ошибка системы коммуникации
// ulog.warn() << "UI(getValue): CORBA::SystemException" << endl;
}
// uwarn << "UI(getValue): CORBA::SystemException" << endl;
}
rcache.erase(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
break;
}
catch(...){}
msleep(pmsec);
}
return ready;
}
// -----------------------------------------------------------------------------
......@@ -1974,11 +1961,11 @@ UniversalIO::IOType UInterface::getConfIOType( UniSetTypes::ObjectId id )
{
if( !conf )
return UniversalIO::UnknownIOType;
xmlNode* x = conf->getXMLObjectNode(id);
if( !x )
return UniversalIO::UnknownIOType;
UniXML_iterator it(x);
return UniSetTypes::getIOType( it.getProp("iotype") );
}
......
......@@ -54,7 +54,7 @@ void IORFile::setIOR( const ObjectId id, const ObjectId node, const string& sior
if( !ior_file )
{
ulog.crit() << "(IORFile): не смог открыть файл "+fname << endl;
ucrit << "(IORFile): не смог открыть файл "+fname << endl;
throw TimeOut("(IORFile): не смог создать ior-файл "+fname);
}
......
......@@ -35,18 +35,17 @@ using namespace std;
namespace ORepHelpers
{
// --------------------------------------------------------------------------
/*!
* \param cname - полное имя контекста ссылку на который, возвратит функция.
* \param argc, argv - параметры инициализации ORB
* \param cname - полное имя контекста ссылку на который, возвратит функция.
* \param argc, argv - параметры инициализации ORB
*/
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 );
if( ulog.is_repository() )
ulog.repository() << "OREPHELP: orb init ok"<< endl;
ulogrep << "OREPHELP: orb init ok"<< endl;
return getContext(orb, cname, nsName);
}
// --------------------------------------------------------------------------
......@@ -54,26 +53,22 @@ namespace ORepHelpers
{
CosNaming::NamingContext_var rootC;
if( ulog.is_repository() )
ulog.repository() << "OREPHELPER(getContext): get rootcontext...(servname = "<< servname << ")" <<endl;
ulogrep << "OREPHELPER(getContext): get rootcontext...(servname = "<< servname << ")" <<endl;
rootC = getRootNamingContext(orb, servname);
if( ulog.is_repository() )
ulog.repository() << "OREPHELPER(getContext): get rootContect ok " << endl;
ulogrep << "OREPHELPER(getContext): get rootContect ok " << endl;
if( CORBA::is_nil(rootC) )
{
if( ulog.is_warn() )
ulog.warn() << "OREPHELPER: не смог получить ссылку на NameServices"<< endl;
uwarn << "OREPHELPER: не смог получить ссылку на NameServices"<< endl;
throw ORepFailed("OREPHELPER(getContext): не смог получить ссылку на NameServices");
}
if ( cname.empty() )
return rootC._retn();
if( ulog.is_repository() )
ulog.repository() << "OREPHELPER(getContext): get ref context " << cname << endl;
ulogrep << "OREPHELPER(getContext): get ref context " << cname << endl;
CosNaming::Name_var ctxName = omniURI::stringToName(cname.c_str());
CosNaming::NamingContext_var ctx;
......@@ -91,16 +86,14 @@ namespace ORepHelpers
{
ostringstream err;
err << "OREPHELPER(getContext): не смог получить ссылку на контекст " << cname;
if( ulog.is_warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ORepFailed(err.str());
}
catch(const CosNaming::NamingContext::NotFound &nf)
{
ostringstream err;
err << "OREPHELPER(getContext): не найден контекст " << cname;
if( ulog.warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ORepFailed(err.str());
}
catch(const CosNaming::NamingContext::CannotProceed &np)
......@@ -108,40 +101,33 @@ namespace ORepHelpers
ostringstream err;
err << "OREPHELPER(getContext): catch CannotProced " << cname;
err << " bad part=" << omniURI::nameToString(np.rest_of_name);
if( ulog.is_warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ORepFailed(err.str());
}
catch(CORBA::SystemException& ex)
{
ostringstream err;
err << "OREPHELPER(getContext): поймали CORBA::SystemException: " << ex.NP_minorString();
if( ulog.is_warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ORepFailed(err.str());
}
catch(CORBA::Exception&)
{
if( ulog.is_warn() )
ulog.warn() << "OREPHELPER(getContext): поймали CORBA::Exception." << endl;
uwarn << "OREPHELPER(getContext): поймали CORBA::Exception." << endl;
throw ORepFailed();
}
catch(omniORB::fatalException& fe)
{
ostringstream err;
err << "OREPHELPER(getContext): поймали omniORB::fatalException:";
if( ulog.is_warn() )
{
ulog.warn() << err << endl;
ulog.warn() << " file: " << fe.file() << endl;
ulog.warn() << " line: " << fe.line() << endl;
ulog.warn() << " mesg: " << fe.errmsg() << endl;
}
uwarn << err << endl;
uwarn << " file: " << fe.file() << endl;
uwarn << " line: " << fe.line() << endl;
uwarn << " mesg: " << fe.errmsg() << endl;
throw ORepFailed(err.str());
}
if( ulog.is_repository() )
ulog.repository() << "getContext: получили "<< cname << endl;
ulogrep << "getContext: получили "<< cname << endl;
// Если _var
// return CosNaming::NamingContext::_duplicate(ctx);
......@@ -160,8 +146,7 @@ namespace ORepHelpers
{
// cout << "ORepHelpers(getRootNamingContext): nsName->" << nsName << endl;
CORBA::Object_var initServ = orb->resolve_initial_references(nsName.c_str());
if( ulog.is_repository() )
ulog.repository() << "OREPHELP: get rootcontext...(nsName = "<< nsName << ")" <<endl;
ulogrep << "OREPHELP: get rootcontext...(nsName = "<< nsName << ")" <<endl;
rootContext = CosNaming::NamingContext::_narrow(initServ);
if (CORBA::is_nil(rootContext))
......@@ -170,15 +155,13 @@ namespace ORepHelpers
throw ORepFailed(err.c_str());
}
if( ulog.is_repository() )
ulog.repository() << "OREPHELP: init NameService ok"<< endl;
ulogrep << "OREPHELP: init NameService ok"<< endl;
}
catch(CORBA::ORB::InvalidName& ex)
{
ostringstream err;
err << "ORepHelpers(getRootNamingContext): InvalidName=" << nsName;
if( ulog.is_warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ORepFailed(err.str());
}
catch (CORBA::COMM_FAILURE& ex)
......@@ -198,8 +181,7 @@ namespace ORepHelpers
throw ORepFailed(err);
}
if( ulog.is_repository() )
ulog.repository() << "OREPHELP: get root context ok"<< endl;
ulogrep << "OREPHELP: get root context ok"<< endl;
// // Если создан как _ptr
// return rootContext;
......@@ -210,7 +192,7 @@ namespace ORepHelpers
// ---------------------------------------------------------------------------------------------------------------
/*!
* \param fname - полное имя включающее в себя путь ("Root/Section1/name|Node:Alias")
* \param brk - используемый символ разделитель
* \param brk - используемый символ разделитель
*/
const string getShortName( const string& fname, const std::string& brk )
{
......@@ -226,10 +208,10 @@ namespace ORepHelpers
if( pos2 == string::npos && pos1 == string::npos )
return fname;
if( pos1 == string::npos )
return fname.substr( 0, pos2 );
if( pos2 == string::npos )
return fname.substr( pos1+1, fname.length() );
......@@ -239,7 +221,7 @@ namespace ORepHelpers
// ---------------------------------------------------------------------------------------------------------------
/*!
* \param fullName - полное имя включающее в себя путь
* \param brk - используемый символ разделитель
* \param brk - используемый символ разделитель
* \note Функция возвращает путь без последнего символа разделителя ("Root/Section1/name" -> "Root/Section1")
*/
const string getSectionName( const string& fullName, const std::string& brk )
......@@ -249,7 +231,7 @@ namespace ORepHelpers
return "";
return fullName.substr(0, pos);
}
}
// ---------------------------------------------------------------------------------------------------------------
/*
......@@ -259,7 +241,7 @@ namespace ORepHelpers
char checkBadSymbols(const string& str)
{
using namespace UniSetTypes;
for ( unsigned int i=0;i<str.length();i++)
{
for(unsigned int k=0; k<sizeof(BadSymbols); k++)
......@@ -269,7 +251,7 @@ namespace ORepHelpers
}
}
return 0;
}
}
// ---------------------------------------------------------------------------------------------------------------
string BadSymbolsToStr()
......
......@@ -55,7 +55,7 @@ ObjectId ObjectIndex_XML::getIdByName( const string& name )
MapObjectKey::iterator it = mok.find(name);
if( it != mok.end() )
return it->second;
return DefaultObjectId;
}
// -----------------------------------------------------------------------------------------
......@@ -66,7 +66,7 @@ string ObjectIndex_XML::getMapName( const ObjectId id )
return "";
}
// -----------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------
string ObjectIndex_XML::getTextName( const ObjectId id )
{
if( (unsigned)id<omap.size() && (unsigned)id>=0 && (unsigned)id<omap.size() )
......@@ -88,9 +88,9 @@ std::ostream& ObjectIndex_XML::printMap( std::ostream& os )
if( it->repName == NULL )
continue;
os << setw(5) << it->id << " "
// << setw(45) << ORepHelpers::getShortName(it->repName,'/')
<< setw(45) << it->repName
os << setw(5) << it->id << " "
// << setw(45) << ORepHelpers::getShortName(it->repName,'/')
<< setw(45) << it->repName
<< " " << it->textName << endl;
}
......@@ -107,8 +107,8 @@ void ObjectIndex_XML::build(UniXML& xml)
ind = read_section(xml,"controllers",ind);
ind = read_section(xml,"services",ind);
ind = read_nodes(xml,"nodes",ind);
//
//
omap.resize(ind);
// omap[ind].repName=NULL;
// omap[ind].textName=NULL;
......@@ -119,13 +119,8 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{
if( (unsigned)ind >= omap.size() )
{
if( ulog.is_info() )
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
}
uwarn << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size()
<< "... Делаем resize + 100" << endl;
omap.resize(omap.size()+100);
}
......@@ -135,7 +130,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{
ostringstream msg;
msg << "(ObjectIndex_XML::build):: не нашли параметр RootSection в конф. файле ";
ulog.crit() << msg.str() << endl;
ucrit << msg.str() << endl;
throw SystemError(msg.str());
}
......@@ -144,6 +139,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не нашли корневого раздела " << sec;
ucrit << msg.str() << endl;
throw NameNotFound(msg.str());
}
......@@ -153,6 +149,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не удалось перейти к списку элементов " << sec;
ucrit << msg.str() << endl;
throw NameNotFound(msg.str());
}
......@@ -164,6 +161,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): у секции " << sec << " не указано свойство 'name' ";
ucrit << msg.str() << endl;
throw NameNotFound(msg.str());
}
......@@ -199,14 +197,9 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec,
if( (unsigned)ind >= omap.size() )
{
if( ulog.is_info() )
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
if( ulog.is_info() )
ulog.info() << msg.str() << "... Делаем resize + 100\n";
}
uinfo << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size()
<< "... Делаем resize + 100" << endl;
omap.resize(omap.size()+100);
}
}
......@@ -220,8 +213,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
uinfo << msg.str() << "... Делаем resize + 100\n";
omap.resize(omap.size()+100);
}
......@@ -251,7 +243,7 @@ unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, u
string alias(xml.getProp(it,"alias"));
if( alias.empty() )
alias = name;
string nodename = mkFullNodeName(name,alias);
delete[] omap[ind].repName;
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
strcpy( omap[ind].textName, textname.c_str() );
omap[ind].data = (void*)(xmlNode*)(it);
//
//
mok[omap[ind].repName] = ind;
// 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
{
ostringstream msg;
msg << "(ObjectIndex_XML::build): не хватило размера массива maxSize=" << omap.size();
// throw OutOfRange(msg.str());
ulog.warn() << msg.str() << "... Делаем resize + 100\n";
uwarn << msg.str() << "... Делаем resize + 100" << endl;
omap.resize(omap.size()+100);
}
}
......
......@@ -93,7 +93,7 @@ void ObjectIndex_idXML::read_section( UniXML& xml, const std::string& sec )
{
ostringstream msg;
msg << "(ObjectIndex_idXML::build):: не нашли параметр RootSection в конф. файле ";
ulog.crit() << msg.str() << endl;
ucrit << msg.str() << endl;
throw SystemError(msg.str());
}
......
......@@ -37,7 +37,7 @@ using namespace std;
// --------------------------------------------------------------------------
/*
ObjectRepository::ObjectRepository(int* argc, char* **argv, const char* NSName):
argc(*argc),
argc(*argc),
argv(*argv),
nsName(NSName)
{
......@@ -81,7 +81,7 @@ bool ObjectRepository::init()
localctx=0;
return false;
}
return true;
}
// --------------------------------------------------------------------------
......@@ -98,8 +98,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
{
ostringstream err;
if( ulog.is_info() )
ulog.info() << "ObjectRepository(registration): регистрируем " << name << endl;
uinfo << "ObjectRepository(registration): регистрируем " << name << endl;
// Проверка корректности имени
char bad = ORepHelpers::checkBadSymbols(name);
......@@ -110,7 +109,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
err << " содержит недопустимый символ " << bad;
throw ( InvalidObjectName(err.str().c_str()) );
}
CosNaming::Name_var oName = omniURI::stringToName(name.c_str());
CosNaming::NamingContext_var ctx;
for( int i=0; i<2; i++ )
......@@ -118,17 +117,15 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
try
{
// Добавляем в репозиторий новую ссылку (заменяя если есть старую)
CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName);
ctx = ORepHelpers::getContext(orb, section, nsName);
ctx->bind(oName, oRef);
return;
}
catch(const CosNaming::NamingContext::AlreadyBound &nf)
{
if( ulog.is_warn() )
ulog.warn() << "(registration): "<< name <<" уже зарегестрирован в "<< section << "!!!" << endl;
uwarn << "(registration): "<< name <<" уже зарегестрирован в "<< section << "!!!" << endl;
if( !force )
throw ObjectNameAlready();
......@@ -139,7 +136,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
}
catch(ORepFailed)
{
string er("ObjectRepository(registrartion): (getContext) не смог зарегистрировать "+name);
string er("ObjectRepository(registrartion): (getContext) не смог зарегистрировать "+name);
throw ORepFailed(er.c_str());
}
catch(CosNaming::NamingContext::NotFound)
......@@ -157,16 +154,11 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
}
catch(CORBA::SystemException& ex)
{
if( ulog.is_warn() )
ulog.warn() << "ObjectRepository(registrartion): поймали CORBA::SystemException: "
uwarn << "ObjectRepository(registrartion): поймали CORBA::SystemException: "
<< ex.NP_minorString() << endl;
err << "ObjectRepository(registrartion): поймали CORBA::SystemException: " << ex.NP_minorString();
}
// catch(...)
// {
// ulog.warn() << "поймали что-то неизвестное..."<< endl;
// }
}
throw ORepFailed(err.str().c_str());
......@@ -178,7 +170,7 @@ void ObjectRepository::registration(const string& name, const ObjectPtr oRef, co
* \note При этом надо иметь ввиду, что задается полное имя объекта.
* Пример: registration("Root/SensorSection/sens1", oRef);
* \param fullName - полное имя регистрируемого объекта (т.е. включающее в себя имя секции)
* \param oRef - ссылка на объект
* \param oRef - ссылка на объект
* \exception ORepFailed - генерируется если произошла ошибка при регистрации
* \sa registration(const string name, const ObjectPtr oRef, const string section)
*/
......@@ -203,25 +195,18 @@ void ObjectRepository::registration( const std::string& fullName, const UniSetTy
void ObjectRepository::unregistration(const string& name, const string& section)
throw(ORepFailed, NameNotFound)
{
// ulog.info() << "OREP: unregistration "<< name << " из "<< section << endl;
ostringstream err;
CosNaming::Name_var oName = omniURI::stringToName(name.c_str());
// ulog.info() << "OREP: string to name ok"<< endl;
CosNaming::NamingContext_var ctx;
CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName);
// ulog.info() << "OREP: get context " << section <<" ok"<< endl;
CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName);
try
{
// Удаляем запись об объекте
ctx->unbind(oName);
// ulog.info() << "OREP: ok" << endl;
return;
}
}
catch(const CosNaming::NamingContext::NotFound &nf)
{
err << "ObjectRepository(unregistrartion): не найден объект ->" << name;
......@@ -269,7 +254,7 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName )
CosNaming::Name_var nc = omniURI::stringToName(name.c_str());
oRef=localctx->resolve(nc);
if ( !CORBA::is_nil(oRef) )
return oRef._retn();
return oRef._retn();
err << "ObjectRepository(resolve): не смог получить ссылку на объект " << name.c_str();
}
......@@ -297,8 +282,8 @@ ObjectPtr ObjectRepository::resolve( const string& name, const string& NSName )
}
if(err.str().empty())
err << "ObjectRepository(resolve): ??? для " << name;
err << "ObjectRepository(resolve): ??? для " << name;
throw ORepFailed(err.str().c_str());
}
......@@ -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)
{
// Возвращает false если вынут не весь список...
// ulog.info() << "получаем список из "<< section << endl;
CosNaming::NamingContext_var ctx;
try
{
CORBA::ORB_var orb = uconf->getORB();
ctx = ORepHelpers::getContext(orb, section, nsName);
ctx = ORepHelpers::getContext(orb, section, nsName);
}
catch(ORepFailed)
{
ulog.warn() << "ORepository(list): не смог получить ссылку на "<< section << endl;
uwarn << "ORepository(list): не смог получить ссылку на "<< section << endl;
throw;
// return false;
}
if( CORBA::is_nil(ctx) )
{
ulog.warn() << "ORepository(list): не смог получить ссылку на "<< section << endl;
uwarn << "ORepository(list): не смог получить ссылку на "<< section << endl;
throw ORepFailed();
}
......@@ -383,7 +366,7 @@ bool ObjectRepository::list(const string& section, ListObjectName *ls, unsigned
for( unsigned int i=0; i<how_many;i++)
{
switch( type )
{
{
case ObjectRef:
{
if(bl[i].binding_type == CosNaming::nobject)
......@@ -413,7 +396,7 @@ bool ObjectRepository::isExist( const string& fullName )
{
try
{
CORBA::Object_var oRef = resolve(fullName, nsName);
CORBA::Object_var oRef = resolve(fullName, nsName);
return isExist(oRef);
}
catch(...){}
......@@ -435,10 +418,10 @@ bool ObjectRepository::isExist( ObjectPtr oref )
catch(CORBA::Exception&){}
catch(omniORB::fatalException& fe)
{
ulog.warn() << "ObjectRepository(isExist): "<< "поймали omniORB::fatalException:" << endl;
ulog.warn() << " file: " << fe.file() << endl;
ulog.warn() << " line: " << fe.line() << endl;
ulog.warn() << " mesg: " << fe.errmsg() << endl;
uwarn << "ObjectRepository(isExist): "<< "поймали omniORB::fatalException:" << endl;
uwarn << " file: " << fe.file() << endl;
uwarn << " line: " << fe.line() << endl;
uwarn << " mesg: " << fe.errmsg() << endl;
}
catch(...){}
......
......@@ -21,13 +21,13 @@
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
#include <iomanip>
#include "ProxyManager.h"
#include "PassiveObject.h"
#include "ORepHelpers.h"
#include "Configuration.h"
// ------------------------------------------------------------------------------------------
using namespace std;
using namespace UniSetTypes;
// ------------------------------------------------------------------------------------------
PassiveObject::PassiveObject():
......@@ -117,14 +117,12 @@ void PassiveObject::processingMessage( UniSetTypes::VoidMessage* msg )
}
default:
//ulog.warn() << myname << ": неизвестное сообщение " << msg->type << endl;
break;
}
}
catch(Exception& ex)
catch( Exception& ex )
{
// ulog.warn()
// cerr << myname << "(processingMessage): " << ex << endl;
uwarn << myname << "(processingMessage): " << ex << endl;
}
}
// -------------------------------------------------------------------------
......
......@@ -48,7 +48,7 @@ void ProxyManager::attachObject( PassiveObject* po, UniSetTypes::ObjectId id )
{
if( id == DefaultObjectId )
{
ulog.warn() << myname << "(attachObject): попытка добавить объект с id="
uwarn << myname << "(attachObject): попытка добавить объект с id="
<< DefaultObjectId << " PassiveObject=" << po->getName() << endl;
return;
......@@ -78,39 +78,34 @@ bool ProxyManager::activateObject()
try
{
for( int i=0; i<2; i++ )
{
{
try
{
if( ulog.is_info() )
{
ulog.info() << myname << "(registered): попытка "
<< i+1 << " регистриую (id=" << it->first << ") "
<< " (pname=" << it->second->getName() << ") "
<< conf->oind->getNameById(it->first) << endl;
}
uinfo << myname << "(registered): попытка "
<< i+1 << " регистриую (id=" << it->first << ") "
<< " (pname=" << it->second->getName() << ") "
<< conf->oind->getNameById(it->first) << endl;
ui.registered(it->first, getRef(),true);
break;
}
catch( UniSetTypes::ObjectNameAlready& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(registered): СПЕРВА РАЗРЕГИСТРИРУЮ (ObjectNameAlready)" << endl;
ucrit << myname << "(registered): СПЕРВА РАЗРЕГИСТРИРУЮ (ObjectNameAlready)" << endl;
try
{
ui.unregister(it->first);
}
catch(Exception & ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(unregistered): " << ex << endl;
ucrit << myname << "(unregistered): " << ex << endl;
}
}
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(activate): " << ex << endl;
ucrit << myname << "(activate): " << ex << endl;
}
}
......@@ -127,8 +122,7 @@ bool ProxyManager::disactivateObject()
}
catch(Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(activate): " << ex << endl;
ucrit << myname << "(activate): " << ex << endl;
}
}
......@@ -150,19 +144,16 @@ void ProxyManager::processingMessage( UniSetTypes::VoidMessage *msg )
PObjectMap::iterator it = omap.find(msg->consumer);
if( it!=omap.end() )
it->second->processingMessage(msg);
else if( ulog.is_crit() )
{
ulog.crit() << myname << "(processingMessage): не найден объект "
else
ucrit << myname << "(processingMessage): не найден объект "
<< " consumer= " << msg->consumer << endl;
}
}
break;
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(processingMessage): " << ex << endl;
ucrit << myname << "(processingMessage): " << ex << endl;
}
}
// -------------------------------------------------------------------------
......@@ -176,8 +167,7 @@ void ProxyManager::allMessage( UniSetTypes::VoidMessage* msg )
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(allMessage): " << ex << endl;
ucrit << myname << "(allMessage): " << ex << endl;
}
}
}
......
......@@ -20,7 +20,7 @@
/*! \file
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sys/wait.h>
#include <sys/types.h>
......@@ -43,7 +43,7 @@ using namespace std;
Завершение работы организовано следующим образом.
Имеется глобальный указатель gActivator (т.к. активатор в системе должен быть только один).
Он заказывает на себя все сигналы связанные с завершением работы.
В качестве обработчика сигналов регистрируется UniSetActivator::terminated( int signo ).
В этом обработчике происходит вызов UniSetActivator::oaDestroy(int signo) для фактического
завершения работы и заказывается сигнал SIG_ALRM на время TERMINATE_TIMEOUT,
......@@ -105,7 +105,7 @@ void UniSetActivator::init()
poa = root_poa->create_POA("my poa", pman, pl);
if( CORBA::is_nil(poa) )
ulog.crit() << myname << "(init): init poa failed!!!" << endl;
ucrit << myname << "(init): init poa failed!!!" << endl;
gActivator=this;
atexit( UniSetActivator::normalexit );
......@@ -118,14 +118,14 @@ UniSetActivator::~UniSetActivator()
{
if(!procterm )
{
ulog.system() << myname << "(destructor): ..."<< endl << flush;
ulogsys << myname << "(destructor): ..."<< endl << flush;
if( !omDestroy )
oaDestroy();
procterm = 1;
doneterm = 1;
set_signals(false);
gActivator=0;
set_signals(false);
gActivator=0;
}
if( orbthr )
......@@ -139,31 +139,30 @@ void UniSetActivator::oaDestroy(int signo)
if( !omDestroy )
{
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);
ulog.system() << myname << "(oaDestroy): terminate ok. " << endl;
ulogsys << myname << "(oaDestroy): terminate ok. " << endl;
try
{
{
stop();
}
catch(...){}
ulog.system() << myname << "(oaDestroy): pman deactivate... " << endl;
ulogsys << myname << "(oaDestroy): pman deactivate... " << endl;
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
{
orb->destroy();
}
catch(...){}
if( ulog.is_system() )
ulog.system() << myname << "(oaDestroy): orb destroy ok."<< endl;
ulogsys << myname << "(oaDestroy): orb destroy ok."<< endl;
if( orbthr )
{
......@@ -176,7 +175,7 @@ void UniSetActivator::oaDestroy(int signo)
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Если thread=true то функция создает отдельный поток для обработки приходящих сообщений.
* И передает все ресурсы этого потока orb. А также регистрирует процесс в репозитории.
* \note Только после этого объект становится доступен другим процессам
......@@ -186,8 +185,7 @@ void UniSetActivator::oaDestroy(int signo)
*/
void UniSetActivator::run(bool thread)
{
if( ulog.is_system() )
ulog.system() << myname << "(run): создаю менеджер "<< endl;
ulogsys << myname << "(run): создаю менеджер "<< endl;
UniSetManager::initPOA(this);
......@@ -199,32 +197,30 @@ void UniSetActivator::run(bool thread)
getinfo(); // заполнение информации об объектах
active=true;
ulog.system() << myname << "(run): активизируем менеджер"<<endl;
ulogsys << myname << "(run): активизируем менеджер"<<endl;
pman->activate();
msleep(50);
set_signals(true);
set_signals(true);
if( thread )
{
if( ulog.is_info() )
ulog.info() << myname << "(run): запускаемся с созданием отдельного потока... "<< endl;
uinfo << myname << "(run): запускаемся с созданием отдельного потока... "<< endl;
orbthr = new ThreadCreator<UniSetActivator>(this, &UniSetActivator::work);
int ret = orbthr->start();
if( ret !=0 )
{
ulog.crit() << myname << "(run): НЕ СМОГЛИ СОЗДАТЬ ORB-поток"<<endl;
ucrit << myname << "(run): НЕ СМОГЛИ СОЗДАТЬ ORB-поток"<<endl;
throw SystemError("(UniSetActivator::run): CREATE ORB THREAD FAILED");
}
}
else
{
if( ulog.is_info() )
ulog.info() << myname << "(run): запускаемся без создания отдельного потока... "<< endl;
uinfo << myname << "(run): запускаемся без создания отдельного потока... "<< endl;
work();
}
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Функция останавливает работу orb и завершает поток. А так же удаляет ссылку из репозитория.
* \note Объект становится недоступен другим процессам
*/
......@@ -235,33 +231,26 @@ void UniSetActivator::stop()
{
active=false;
if( ulog.is_system() )
ulog.system() << myname << "(stop): disactivate... "<< endl;
ulogsys << myname << "(stop): disactivate... "<< endl;
disactivate();
if( ulog.is_system() )
{
ulog.system() << myname << "(stop): disactivate ok. "<<endl;
ulog.system() << myname << "(stop): discard request..."<< endl;
}
ulogsys << myname << "(stop): disactivate ok. "<<endl;
ulogsys << myname << "(stop): discard request..."<< endl;
pman->discard_requests(true);
if( ulog.is_system() )
ulog.system() << myname << "(stop): discard request ok."<< endl;
ulogsys << myname << "(stop): discard request ok."<< endl;
/*
try
{
if( ulog.is_system() )
ulog.system() << myname << "(stop):: shutdown orb... "<<endl;
ulogsys << myname << "(stop):: shutdown orb... "<<endl;
orb->shutdown(false);
}
catch(...){}
if( ulog.is_system() )
ulog.system() << myname << "(stop): shutdown ok."<< endl;
ulogsys << myname << "(stop): shutdown ok."<< endl;
*/
}
}
......@@ -270,8 +259,7 @@ void UniSetActivator::stop()
void UniSetActivator::work()
{
if( ulog.is_system() )
ulog.system() << myname << "(work): запускаем orb на обработку запросов..."<< endl;
ulogsys << myname << "(work): запускаем orb на обработку запросов..."<< endl;
try
{
if(orbthr)
......@@ -283,41 +271,34 @@ void UniSetActivator::work()
}
catch(CORBA::SystemException& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(work): поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
ucrit << myname << "(work): поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
}
catch(CORBA::Exception& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(work): поймали CORBA::Exception." << endl;
ucrit << myname << "(work): поймали CORBA::Exception." << endl;
}
catch(omniORB::fatalException& fe)
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(work): : поймали omniORB::fatalException:" << endl;
ulog.crit() << myname << "(work): file: " << fe.file() << endl;
ulog.crit() << myname << "(work): line: " << fe.line() << endl;
ulog.crit() << myname << "(work): mesg: " << fe.errmsg() << endl;
}
ucrit << myname << "(work): : поймали omniORB::fatalException:" << endl;
ucrit << myname << "(work): file: " << fe.file() << endl;
ucrit << myname << "(work): line: " << fe.line() << endl;
ucrit << myname << "(work): mesg: " << fe.errmsg() << endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(work): catch ..." << endl;
ucrit << myname << "(work): catch ..." << endl;
}
if( ulog.is_system() )
ulog.system() << myname << "(work): orb стоп!!!"<< endl;
ulogsys << myname << "(work): orb стоп!!!"<< endl;
/*
ulog.system() << myname << "(oaDestroy): orb destroy... " << endl;
ulogsys << myname << "(oaDestroy): orb destroy... " << endl;
try
{
orb->destroy();
}
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 )
default:
break;
}
}
}
catch(Exception& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(processingMessage): " << ex << endl;
ucrit << myname << "(processingMessage): " << ex << endl;
}
}
......@@ -373,8 +353,7 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm )
{
case SystemMessage::LogRotate:
{
if( ulog.is_system() )
ulog.system() << myname << "(sysCommand): logRotate" << endl;
ulogsys << myname << "(sysCommand): logRotate" << endl;
// переоткрываем логи
string fname = ulog.getLogFile();
if( !fname.empty() )
......@@ -391,20 +370,20 @@ void UniSetActivator::sysCommand( UniSetTypes::SystemMessage *sm )
/*
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);
}
*/
// ------------------------------------------------------------------------------------------
void UniSetActivator::set_signals(bool ask)
{
struct sigaction act, oact;
sigemptyset(&act.sa_mask);
sigemptyset(&oact.sa_mask);
// добавляем сигналы, которые будут игнорироваться
// при обработке сигнала
// при обработке сигнала
sigaddset(&act.sa_mask, SIGINT);
sigaddset(&act.sa_mask, SIGTERM);
sigaddset(&act.sa_mask, SIGABRT );
......@@ -420,7 +399,7 @@ void UniSetActivator::set_signals(bool ask)
act.sa_handler = terminated;
else
act.sa_handler = SIG_DFL;
sigaction(SIGINT, &act, &oact);
sigaction(SIGTERM, &act, &oact);
sigaction(SIGABRT, &act, &oact);
......@@ -434,8 +413,7 @@ void UniSetActivator::finishterm( int signo )
{
if( !doneterm )
{
if( ulog.is_system() && gActivator )
ulog.system() << gActivator->getName()
ulogsys << ( gActivator ? gActivator->getName() : "" )
<< "(finishterm): прерываем процесс завершения...!" << endl<< flush;
if( gActivator )
......@@ -461,12 +439,11 @@ void UniSetActivator::terminated( int signo )
procterm = 1;
SIGNO = signo;
MYPID = getpid();
if( ulog.is_system() && gActivator )
{
ulog.system() << gActivator->getName() << "(terminated): catch SIGNO="<< signo << "("<< strsignal(signo) <<")"<< endl << flush;
ulog.system() << gActivator->getName() << "(terminated): устанавливаем timer завершения на "
<< TERMINATE_TIMEOUT << " сек " << endl << flush;
}
ulogsys << ( gActivator ? gActivator->getName() : "" ) << "(terminated): catch SIGNO="<< signo << "("
<< strsignal(signo) <<")"<< endl << flush
<< ( gActivator ? gActivator->getName() : "" ) << "(terminated): устанавливаем timer завершения на "
<< TERMINATE_TIMEOUT << " сек " << endl << flush;
sighold(SIGALRM);
sigset(SIGALRM, UniSetActivator::finishterm);
alarm(TERMINATE_TIMEOUT);
......@@ -475,8 +452,9 @@ void UniSetActivator::terminated( int signo )
gActivator->oaDestroy(SIGNO); // gActivator->term(SIGNO);
doneterm = 1;
if( ulog.is_system() )
ulog.system() << gActivator->getName() << "(terminated): завершаемся..."<< endl<< flush;
ulogsys << ( gActivator ? gActivator->getName() : "" ) << "(terminated): завершаемся..."<< endl<< flush;
if( gActivator )
UniSetActivator::set_signals(false);
......@@ -489,21 +467,20 @@ void UniSetActivator::terminated( int signo )
void UniSetActivator::normalexit()
{
if( gActivator && ulog.is_system() )
ulog.system() << gActivator->getName() << "(default exit): good bye."<< endl << flush;
if( gActivator )
ulogsys << gActivator->getName() << "(default exit): good bye."<< endl << flush;
}
void UniSetActivator::normalterminate()
{
if( gActivator )
ulog.crit() << gActivator->getName() << "(default exception terminate): Никто не выловил исключение!!! Good bye."<< endl<< flush;
ucrit << gActivator->getName() << "(default exception terminate): Никто не выловил исключение!!! Good bye."<< endl<< flush;
// abort();
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::term( int signo )
{
if( ulog.is_system() )
ulog.system() << myname << "(term): TERM" << endl;
ulogsys << myname << "(term): TERM" << endl;
if( doneterm )
return;
......@@ -513,21 +490,18 @@ void UniSetActivator::term( int signo )
try
{
if( ulog.is_system() )
ulog.system() << myname << "(term): вызываем sigterm()" << endl;
ulogsys << myname << "(term): вызываем sigterm()" << endl;
sigterm(signo);
if( ulog.is_system() )
ulog.system() << myname << "(term): sigterm() ok." << endl;
ulogsys << myname << "(term): sigterm() ok." << endl;
}
catch(Exception& ex)
{
ulog.crit() << myname << "(term): " << ex << endl;
ucrit << myname << "(term): " << ex << endl;
}
catch(...){}
if( ulog.is_system() )
ulog.system() << myname << "(term): END TERM" << endl;
ulogsys << myname << "(term): END TERM" << endl;
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::waitDestroy()
......@@ -536,10 +510,10 @@ void UniSetActivator::waitDestroy()
{
if( doneterm || !gActivator )
break;
msleep(50);
}
gActivator = 0;
}
// ------------------------------------------------------------------------------------------
......@@ -20,7 +20,7 @@
/*! \file
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <cstdlib>
#include <sstream>
#include <list>
......@@ -41,7 +41,7 @@ using namespace std;
// объект-функция для посылки сообщения менеджеру
class MPush: public unary_function<UniSetManager*, bool>
{
public:
public:
MPush(const UniSetTypes::TransportMessage& msg):msg(msg){}
bool operator()(UniSetManager* m) const
{
......@@ -54,7 +54,7 @@ class MPush: public unary_function<UniSetManager*, bool>
catch(...){}
return false;
}
private:
const UniSetTypes::TransportMessage& msg;
};
......@@ -62,7 +62,7 @@ class MPush: public unary_function<UniSetManager*, bool>
// объект-функция для посылки сообщения объекту
class OPush: public unary_function<UniSetObject*, bool>
{
public:
public:
OPush(const UniSetTypes::TransportMessage& msg):msg(msg){}
bool operator()(UniSetObject* o) const
{
......@@ -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),
sig(0)
{
......@@ -110,12 +110,12 @@ UniSetManager::~UniSetManager()
{
try
{
objects(deactiv);
objects(deactiv);
}
catch(...){}
try
{
managers(deactiv);
managers(deactiv);
}
catch(...){}
olist.clear();
......@@ -130,14 +130,14 @@ void UniSetManager::initPOA( UniSetManager* rmngr )
string mname(getName());
mname+="_poamngr";
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();
if( rpoa != poa )
poa = rmngr->getPOA();
if( CORBA::is_nil(poa) )
ulog.crit() << myname << "(initPOA): failed init poa " << endl;
ucrit << myname << "(initPOA): failed init poa " << endl;
// Инициализация самого менеджера и его подобъектов
UniSetObject::init(rmngr);
......@@ -152,11 +152,10 @@ bool UniSetManager::addObject( UniSetObject *obj )
ObjectsList::iterator li=find(olist.begin(),olist.end(), obj);
if( li==olist.end() )
{
if( ulog.is_info() )
ulog.info() << myname << "(activator): добавляем объект "<< obj->getName()<< endl;
olist.push_back(obj);
uinfo << myname << "(activator): добавляем объект "<< obj->getName()<< endl;
olist.push_back(obj);
}
} // unlock
} // unlock
return true;
}
......@@ -168,28 +167,27 @@ bool UniSetManager::removeObject(UniSetObject* obj)
ObjectsList::iterator li=find(olist.begin(),olist.end(), obj);
if( li!=olist.end() )
{
if( ulog.is_info() )
ulog.info() << myname << "(activator): удаляем объект "<< obj->getName()<< endl;
uinfo << myname << "(activator): удаляем объект "<< obj->getName()<< endl;
try
{
obj->disactivate();
}
catch(Exception& ex)
{
ulog.warn() << myname << "(removeObject): " << ex << endl;
uwarn << myname << "(removeObject): " << ex << endl;
}
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)
{
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;
ulog.crit() << myname << "(managers): file: " << fe.file()
ucrit << myname << "(managers): Caught omniORB::fatalException:" << endl;
ucrit << myname << "(managers): file: " << fe.file()
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
......@@ -203,13 +201,12 @@ bool UniSetManager::removeObject(UniSetObject* obj)
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Функция работы со списком менеджеров
*/
void UniSetManager::managers(OManagerCommand cmd)
{
if( ulog.is_info() )
ulog.info() << myname <<"(managers): mlist.size="
uinfo << myname <<"(managers): mlist.size="
<< mlist.size() << " cmd=" << cmd << endl;
{ //lock
uniset_rwmutex_rlock lock(mlistMutex);
......@@ -241,43 +238,34 @@ void UniSetManager::managers(OManagerCommand cmd)
}
catch( Exception& ex )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(managers): " << ex << endl;
ulog.crit() << myname << "(managers): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
ucrit << myname << "(managers): " << ex << endl
<< " Не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
catch(CORBA::SystemException& ex)
catch( CORBA::SystemException& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(managers): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
ucrit << myname << "(managers): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
}
catch( CORBA::Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(managers): Caught CORBA::Exception. " << ex._name() << endl;
ucrit << myname << "(managers): Caught CORBA::Exception. " << ex._name() << endl;
}
catch( omniORB::fatalException& fe )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(managers): Caught omniORB::fatalException:" << endl;
ulog.crit() << myname << "(managers): file: " << fe.file()
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
ucrit << myname << "(managers): Caught omniORB::fatalException:" << endl;
ucrit << myname << "(managers): file: " << fe.file()
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
}
} // unlock
} // unlock
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Функция работы со списком объектов.
*/
void UniSetManager::objects(OManagerCommand cmd)
{
if( ulog.is_info() )
ulog.info() << myname <<"(objects): olist.size="
uinfo << myname <<"(objects): olist.size="
<< olist.size() << " cmd=" << cmd << endl;
{ //lock
uniset_rwmutex_rlock lock(olistMutex);
......@@ -310,60 +298,50 @@ void UniSetManager::objects(OManagerCommand cmd)
}
catch( Exception& ex )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(objects): " << ex << endl;
ulog.crit() << myname << "(objects): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
ucrit << myname << "(objects): " << ex << endl;
ucrit << myname << "(objects): не смог зарегистрировать (разрегистрировать) объект -->"<< (*li)->getName() << endl;
}
catch(CORBA::SystemException& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(objects): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
ucrit << myname << "(objects): поймали CORBA::SystemException:" << ex.NP_minorString() << endl;
}
catch( CORBA::Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(objects): Caught CORBA::Exception. "
<< ex._name()
<< " (" << (*li)->getName() << ")" << endl;
ucrit << myname << "(objects): Caught CORBA::Exception. "
<< ex._name()
<< " (" << (*li)->getName() << ")" << endl;
}
catch( omniORB::fatalException& fe )
catch( omniORB::fatalException& fe )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(objects): Caught omniORB::fatalException:" << endl;
ulog.crit() << myname << "(objects): file: " << fe.file()
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
ucrit << myname << "(objects): Caught omniORB::fatalException:" << endl;
ucrit << myname << "(objects): file: " << fe.file()
<< " line: " << fe.line()
<< " mesg: " << fe.errmsg() << endl;
}
}
} // unlock
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Регистрирация объекта и всех его подобъектов в репозитории.
* \note Только после этого он (и они) становятся доступны другим процессам
*/
bool UniSetManager::activateObject()
{
if( ulog.is_info() )
ulog.info() << myname << "(activateObjects): активизирую объекты"<< endl;
uinfo << myname << "(activateObjects): активизирую объекты"<< endl;
UniSetObject::activateObject();
managers(activ);
objects(activ);
return true;
}
// ------------------------------------------------------------------------------------------
/*!
/*!
* Удаление объекта и всех его подобъектов из репозитория.
* \note Объект становится недоступен другим процессам
*/
bool UniSetManager::disactivateObject()
{
if( ulog.is_info() )
ulog.info() << myname << "(disactivateObjects): деактивизирую объекты"<< endl;
uinfo << myname << "(disactivateObjects): деактивизирую объекты"<< endl;
// именно в такой последовательности!
objects(deactiv);
managers(deactiv);
......@@ -372,7 +350,6 @@ bool UniSetManager::disactivateObject()
// ------------------------------------------------------------------------------------------
void UniSetManager::sigterm( int signo )
{
// ulog.info() << "UniSetActivator: default processing signo="<< signo << endl;
sig=signo;
objects(term);
managers(term);
......@@ -384,7 +361,7 @@ void UniSetManager::broadcast(const TransportMessage& msg)
{
// себя не забыть...
// push(msg);
// Всем объектам...
{ //lock
uniset_rwmutex_rlock lock(olistMutex);
......@@ -409,11 +386,10 @@ bool UniSetManager::addManager( UniSetManager *child )
if(it == mlist.end() )
{
mlist.push_back( child );
if( ulog.is_info() )
ulog.info() << myname << ": добавляем менеджер "<< child->getName()<< endl;
uinfo << myname << ": добавляем менеджер "<< child->getName()<< endl;
}
else if( ulog.is_warn() )
ulog.warn() << myname << ": попытка повторного добавления объекта "<< child->getName() << endl;
else
uwarn << myname << ": попытка повторного добавления объекта "<< child->getName() << endl;
} // unlock
return true;
......@@ -425,8 +401,8 @@ bool UniSetManager::removeManager( UniSetManager* child )
{ //lock
uniset_rwmutex_wrlock lock(mlistMutex);
mlist.remove(child);
} // unlock
} // unlock
return true;
}
......@@ -434,15 +410,15 @@ bool UniSetManager::removeManager( UniSetManager* child )
const UniSetManager* UniSetManager::itemM(const ObjectId id)
{
{ //lock
uniset_rwmutex_rlock lock(mlistMutex);
for( UniSetManagerList::iterator li=mlist.begin(); li!=mlist.end();++li )
{
if ( (*li)->getId()==id )
return (*li);
return (*li);
}
} // unlock
} // unlock
return 0;
}
......@@ -456,9 +432,9 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id)
for (ObjectsList::iterator li=olist.begin(); li!=olist.end();++li)
{
if ( (*li)->getId()==id )
return (*li);
return (*li);
}
} // unlock
} // unlock
return 0;
}
......@@ -468,18 +444,18 @@ const UniSetObject* UniSetManager::itemO(const ObjectId id)
int UniSetManager::objectsCount()
{
int res( olist.size()+mlist.size() );
for( UniSetManagerList::const_iterator it= beginMList();
it!= endMList(); ++it )
{
res+= (*it)->objectsCount();
}
}
return res;
}
// ------------------------------------------------------------------------------------------
int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
int begin, const long uplimit )
{
int ind = begin;
......@@ -487,7 +463,7 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
// получаем у самого менджера
SimpleInfo_var msi=mngr->getInfo();
(*seq)[ind] = msi;
ind++;
if( ind > uplimit )
return ind;
......@@ -505,11 +481,11 @@ int UniSetManager::getObjectsInfo( UniSetManager* mngr, SimpleInfoSeq* seq,
}
catch(CORBA::Exception& ex)
{
ulog.warn() << myname << "(getObjectsInfo): CORBA::Exception" << endl;
uwarn << myname << "(getObjectsInfo): CORBA::Exception" << endl;
}
catch(...)
{
ulog.warn() << myname << "(getObjectsInfo): не смог получить у объекта "
uwarn << myname << "(getObjectsInfo): не смог получить у объекта "
<< conf->oind->getNameById( (*it)->getId() ) << " информацию" << endl;
}
}
......@@ -537,12 +513,12 @@ SimpleInfoSeq* UniSetManager::getObjectsInfo( CORBA::Long maxlength )
int length = objectsCount()+1;
if( length >= maxlength )
length = maxlength;
res->length(length);
// используем рекурсивную функцию
int ind = 0;
const int limit = length;
const int limit = length;
ind = getObjectsInfo( this, res, ind, limit );
return res;
}
......
......@@ -59,9 +59,9 @@ void UniSetManager_LT::callback()
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 @@
using namespace std;
using namespace UniSetTypes;
#define CREATE_TIMER new ThrPassiveTimer();
#define CREATE_TIMER new ThrPassiveTimer();
// new PassiveSysTimer();
// ------------------------------------------------------------------------------------------
......@@ -123,7 +123,7 @@ stCountOfQueueFull(0)
myid = ui.getIdByName(myname);
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!");
}
......@@ -150,19 +150,15 @@ void UniSetObject::init_object()
mutex_act.setName(myname + "_mutex_act");
SizeOfMessageQueue = conf->getArgPInt("--uniset-object-size-message-queue",conf->getField("SizeOfMessageQueue"), 1000);
MaxCountRemoveOfMessage = conf->getArgInt("--uniset-object-maxcount-remove-message",conf->getField("MaxCountRemoveOfMessage"));
if( MaxCountRemoveOfMessage <= 0 )
MaxCountRemoveOfMessage = SizeOfMessageQueue / 4;
if( MaxCountRemoveOfMessage <= 0 )
MaxCountRemoveOfMessage = 10;
if( ulog.is_info() )
{
ulog.info() << myname << "(init): SizeOfMessageQueue=" << SizeOfMessageQueue
<< " MaxCountRemoveOfMessage=" << MaxCountRemoveOfMessage
<< endl;
}
uinfo << myname << "(init): SizeOfMessageQueue=" << SizeOfMessageQueue
<< " MaxCountRemoveOfMessage=" << MaxCountRemoveOfMessage
<< endl;
}
// ------------------------------------------------------------------------------------------
......@@ -172,11 +168,9 @@ void UniSetObject::init_object()
*/
bool UniSetObject::init( UniSetManager* om )
{
if( ulog.is_info() )
ulog.info() << myname << ": init..." << endl;
uinfo << myname << ": init..." << endl;
this->mymngr = om;
if( ulog.is_info() )
ulog.info() << myname << ": init ok..." << endl;
uinfo << myname << ": init ok..." << endl;
return true;
}
// ------------------------------------------------------------------------------------------
......@@ -186,7 +180,7 @@ void UniSetObject::setID( UniSetTypes::ObjectId id )
throw ObjectNameAlready("ObjectId already set(setID)");
string myfullname = ui.getNameById(id);
myname = ORepHelpers::getShortName(myfullname.c_str());
myname = ORepHelpers::getShortName(myfullname.c_str());
section = ORepHelpers::getSectionName(myfullname.c_str());
myid = id;
ui.initBackId(myid);
......@@ -205,24 +199,18 @@ bool UniSetObject::receiveMessage( VoidMessage& vm )
if( !queueMsg.empty() )
{
// контроль переполнения
if( queueMsg.size() > SizeOfMessageQueue )
if( queueMsg.size() > SizeOfMessageQueue )
{
if( ulog.is_crit() )
ulog.crit() << myname <<"(receiveMessages): messages queue overflow!" << endl << flush;
ucrit << myname <<"(receiveMessages): messages queue overflow!" << endl << flush;
cleanMsgQueue(queueMsg);
// обновляем статистику по переполнениям
stCountOfQueueFull++;
stMaxQueueMessages=0;
stMaxQueueMessages=0;
}
if( !queueMsg.empty() )
{
// if( ulog.is_crit() )
// ulog.crit() << myname <<"(receiveMessages): get new msg.." << endl << flush;
vm = queueMsg.top(); // получили сообщение
// Проверка на последовательное вынимание
// cout << myname << ": receive message....tm=" << vm.time << " msec=" << vm.time_msec << "\tprior="<< vm.priority << endl;
queueMsg.pop(); // удалили сообщение из очереди
return true;
}
......@@ -257,20 +245,20 @@ struct MsgInfo
inline bool operator < ( const MsgInfo& mi ) const
{
if( type != mi.type )
return type < mi.type;
return type < mi.type;
if( id != mi.id )
return id < mi.id;
if( node != mi.node )
return node < mi.node;
return node < mi.node;
if( tm.tv_sec != mi.tm.tv_sec )
return tm.tv_sec < mi.tm.tv_sec;
return tm.tv_usec < mi.tm.tv_usec;
}
}
};
// структура определяющая минимальное количество полей
......@@ -286,7 +274,7 @@ struct CInfo
confirm(0)
{
}
CInfo( ConfirmMessage& cm ):
sensor_id(cm.sensor_id),
value(cm.value),
......@@ -327,19 +315,17 @@ bool UniSetObject::waitMessage(VoidMessage& vm, timeout_t timeMS)
// ------------------------------------------------------------------------------------------
void UniSetObject::registered()
{
if( ulog.is_info() )
ulog.info() << myname << ": registration..." << endl;
uinfo << myname << ": registration..." << endl;
if( myid == UniSetTypes::DefaultObjectId )
{
if( ulog.is_info() )
ulog.info() << myname << "(registered): myid=DefaultObjectId \n";
uinfo << myname << "(registered): myid=DefaultObjectId \n";
return;
}
if( !mymngr )
{
ulog.warn() << myname << "(registered): unknown my manager" << endl;
uwarn << myname << "(registered): unknown my manager" << endl;
string err(myname+": unknown my manager");
throw ORepFailed(err.c_str());
}
......@@ -348,7 +334,7 @@ void UniSetObject::registered()
UniSetTypes::uniset_rwmutex_rlock lock(refmutex);
if( !oref )
{
ulog.crit() << myname << "(registered): oref is NULL!..." << endl;
ucrit << myname << "(registered): oref is NULL!..." << endl;
return;
}
}
......@@ -365,21 +351,19 @@ void UniSetObject::registered()
catch( ObjectNameAlready& al )
{
/*!
\warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации.
Мы чистим существующую ссылку и заменяем её на новую.
\warning По умолчанию объекты должны быть уникальны! Поэтому если идёт попытка повторной регистрации.
Мы чистим существующую ссылку и заменяем её на новую.
Это сделано для более надежной работы, иначе может получится, что если объект перед завершением
не очистил за собой ссылку(не разрегистрировался), то больше он никогда не сможет вновь зарегистрироваться.
Т.к. \b надёжной функции проверки "жив" ли объект пока нет...
(так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона:
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый)
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый)
объект станет недоступен другим, а знать об этом не будет!!!
*/
ulog.crit() << myname << "(registered): replace object (ObjectNameAlready)" << endl;
ucrit << myname << "(registered): replace object (ObjectNameAlready)" << endl;
reg = true;
unregister();
// ulog.crit() << myname << "(registered): не смог зарегестрироваться в репозитории объектов (ObjectNameAlready)" << endl;
// throw al;
}
}
}
......@@ -390,7 +374,7 @@ void UniSetObject::registered()
}
catch(Exception& ex)
{
ulog.warn() << myname << "(registered): " << ex << endl;
uwarn << myname << "(registered): " << ex << endl;
string err(myname+": don`t registration in object reposotory");
throw ORepFailed(err.c_str());
}
......@@ -404,8 +388,7 @@ void UniSetObject::unregister()
if( myid == UniSetTypes::DefaultObjectId )
{
if( ulog.is_info() )
ulog.info() << myname << "(unregister): myid=DefaultObjectId \n";
uinfo << myname << "(unregister): myid=DefaultObjectId \n";
reg = false;
return;
}
......@@ -414,7 +397,7 @@ void UniSetObject::unregister()
UniSetTypes::uniset_rwmutex_rlock lock(refmutex);
if( !oref )
{
ulog.warn() << myname << "(unregister): oref NULL!" << endl;
uwarn << myname << "(unregister): oref NULL!" << endl;
reg = false;
return;
}
......@@ -423,17 +406,13 @@ void UniSetObject::unregister()
try
{
if( ulog.is_info() )
ulog.info() << myname << ": unregister "<< endl;
uinfo << myname << ": unregister "<< endl;
ui.unregister(myid);
if( ulog.is_info() )
ulog.info() << myname << ": unregister ok. "<< endl;
uinfo << myname << ": unregister ok. "<< endl;
}
catch(...)
{
ulog.warn() << myname << ": don`t registration in object repository" << endl;
uwarn << myname << ": don`t registration in object repository" << endl;
}
reg = false;
......@@ -463,8 +442,7 @@ void UniSetObject::push(const TransportMessage& tm)
// контроль переполнения
if( !queueMsg.empty() && queueMsg.size()>SizeOfMessageQueue )
{
if( ulog.is_crit() )
ulog.crit() << myname <<"(push): message queue overflow!" << endl << flush;
ucrit << myname <<"(push): message queue overflow!" << endl << flush;
cleanMsgQueue(queueMsg);
// обновляем статистику
......@@ -472,9 +450,6 @@ void UniSetObject::push(const TransportMessage& tm)
stMaxQueueMessages=0;
}
// if( ulog.is_crit() )
// ulog.crit() << myname <<"(push): push new msg.." << endl << flush;
VoidMessage v(tm);
queueMsg.push(v);
......@@ -490,7 +465,7 @@ void UniSetObject::push(const TransportMessage& tm)
struct tmpConsumerInfo
{
tmpConsumerInfo(){}
map<UniSetTypes::KeyType,VoidMessage> smap;
map<int,VoidMessage> tmap;
map<int,VoidMessage> sysmap;
......@@ -500,11 +475,8 @@ struct tmpConsumerInfo
void UniSetObject::cleanMsgQueue( MessagesQueue& q )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(cleanMsgQueue): msg queue cleaning..." << endl << flush;
ulog.crit() << myname << "(cleanMsgQueue): current size of queue: " << q.size() << endl << flush;
}
ucrit << myname << "(cleanMsgQueue): msg queue cleaning..." << endl << flush;
ucrit << myname << "(cleanMsgQueue): current size of queue: " << q.size() << endl << flush;
// проходим по всем известным нам типам(базовым)
// ищем все совпадающие сообщения и оставляем только последние...
......@@ -519,7 +491,7 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
{
m = q.top();
q.pop();
switch( m.type )
{
case Message::SensorInfo:
......@@ -568,23 +540,19 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
break;
}
}
}
if( ulog.is_crit() )
ulog.crit() << myname << "(cleanMsgQueue): ******** cleanup RESULT ********" << endl;
ucrit << 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 )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(cleanMsgQueue): CONSUMER=" << it0->first << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean SensorMessage: " << it0->second.smap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean TimerMessage: " << it0->second.tmap.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): after clean SystemMessage: " << it0->second.sysmap.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;
}
ucrit << myname << "(cleanMsgQueue): CONSUMER=" << it0->first << endl;
ucrit << myname << "(cleanMsgQueue): after clean SensorMessage: " << it0->second.smap.size() << endl;
ucrit << myname << "(cleanMsgQueue): after clean TimerMessage: " << it0->second.tmap.size() << endl;
ucrit << myname << "(cleanMsgQueue): after clean SystemMessage: " << it0->second.sysmap.size() << endl;
ucrit << myname << "(cleanMsgQueue): after clean ConfirmMessage: " << it0->second.cmap.size() << endl;
ucrit << myname << "(cleanMsgQueue): after clean other: " << it0->second.lstOther.size() << endl;
// теперь ОСТАВШИЕСЯ запихиваем обратно в очередь...
map<UniSetTypes::KeyType,VoidMessage>::iterator it=it0->second.smap.begin();
......@@ -616,31 +584,25 @@ void UniSetObject::cleanMsgQueue( MessagesQueue& q )
q.push(*it6);
}
if( ulog.is_crit() )
{
ulog.crit() << myname
<< "(cleanMsgQueue): ******* result size of queue: "
ucrit << myname
<< "(cleanMsgQueue): ******* result size of queue: "
<< q.size()
<< " < " << getMaxSizeOfMessageQueue() << endl;
}
if( q.size() >= getMaxSizeOfMessageQueue() )
{
if( ulog.is_crit() )
{
ulog.crit() << myname << "(cleanMsgQueue): clean failed. size > " << q.size() << endl;
ulog.crit() << myname << "(cleanMsgQueue): remove " << getMaxCountRemoveOfMessage() << " old messages " << endl;
}
ucrit << myname << "(cleanMsgQueue): clean failed. size > " << q.size() << endl;
ucrit << myname << "(cleanMsgQueue): remove " << getMaxCountRemoveOfMessage() << " old messages " << endl;
for( unsigned int i=0; i<getMaxCountRemoveOfMessage(); i++ )
{
q.top();
q.pop();
q.top();
q.pop();
if( q.empty() )
break;
}
if( ulog.is_crit() )
ulog.crit() << myname << "(cleanMsgQueue): result size=" << q.size() << endl;
ucrit << myname << "(cleanMsgQueue): result size=" << q.size() << endl;
}
}
// ------------------------------------------------------------------------------------------
......@@ -671,13 +633,12 @@ bool UniSetObject::disactivate()
{ // lock
uniset_rwmutex_wrlock mlk(qmutex);
while( !queueMsg.empty() )
queueMsg.pop();
queueMsg.pop();
}
try
{
if( ulog.is_info() )
ulog.info() << "disactivateObject..." << endl;
uinfo << "disactivateObject..." << endl;
PortableServer::POA_var poamngr = mymngr->getPOA();
if( !PortableServer::POA_Helper::is_nil(poamngr) )
......@@ -690,37 +651,30 @@ bool UniSetObject::disactivate()
unregister();
PortableServer::ObjectId_var oid = poamngr->servant_to_id(static_cast<PortableServer::ServantBase*>(this));
poamngr->deactivate_object(oid);
if( ulog.is_info() )
ulog.info() << "ok..." << endl;
uinfo << "ok..." << endl;
return true;
}
if( ulog.is_warn() )
ulog.warn() << "manager already destroyed.." << endl;
uwarn << "manager already destroyed.." << endl;
}
catch(CORBA::TRANSIENT)
{
if( ulog.is_warn() )
ulog.warn() << "isExist: нет связи..."<< endl;
uwarn << "isExist: нет связи..."<< endl;
}
catch( CORBA::SystemException& ex )
{
if( ulog.is_warn() )
ulog.warn() << "UniSetObject: "<<"поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
uwarn << "UniSetObject: "<<"поймали CORBA::SystemException: " << ex.NP_minorString() << endl;
}
catch(CORBA::Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << "UniSetObject: "<<"поймали CORBA::Exception." << endl;
uwarn << "UniSetObject: "<<"поймали CORBA::Exception." << endl;
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << "UniSetObject: "<< ex << endl;
uwarn << "UniSetObject: "<< ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << "UniSetObject: "<<" catch ..." << endl;
uwarn << "UniSetObject: "<<" catch ..." << endl;
}
return false;
......@@ -729,12 +683,11 @@ bool UniSetObject::disactivate()
// ------------------------------------------------------------------------------------------
bool UniSetObject::activate()
{
if( ulog.is_info() )
ulog.info() << myname << ": activate..." << endl;
uinfo << myname << ": activate..." << endl;
if( mymngr == NULL )
{
ulog.crit() << myname << "(activate): mymngr=NULL!!! activate failure..." << endl;
ucrit << myname << "(activate): mymngr=NULL!!! activate failure..." << endl;
return false;
}
......@@ -752,11 +705,11 @@ bool UniSetObject::activate()
}
else
{
// А если myid==UniSetTypes::DefaultObjectId
// то myname = noname. ВСЕГДА!
// А если myid==UniSetTypes::DefaultObjectId
// то myname = noname. ВСЕГДА!
if( myid == UniSetTypes::DefaultObjectId )
{
ulog.crit() << myname << "(activate): Не задан ID!!! activate failure..." << endl;
ucrit << myname << "(activate): Не задан ID!!! activate failure..." << endl;
// вызываем на случай если она переопределена в дочерних классах
// Например в UniSetManager, если здесь не вызвать, то не будут инициализированы подчинённые объекты.
// (см. UniSetManager::activateObject)
......@@ -773,9 +726,9 @@ bool UniSetObject::activate()
// Activate object...
poa->activate_object_with_id(oid, this);
}
{
UniSetTypes::uniset_rwmutex_wrlock lock(refmutex);
oref = poa->servant_to_reference(static_cast<PortableServer::ServantBase*>(this) );
......@@ -790,34 +743,30 @@ bool UniSetObject::activate()
thr = new ThreadCreator<UniSetObject>(this, &UniSetObject::work);
thr->start();
}
else
else
{
if( ulog.is_info() )
{
ulog.info() << myname << ": ?? не задан ObjectId...("
<< "myid=" << myid << " threadcreate=" << threadcreate
<< ")" << endl;
}
uinfo << myname << ": ?? не задан ObjectId...("
<< "myid=" << myid << " threadcreate=" << threadcreate
<< ")" << endl;
thread(false);
}
activateObject();
if( ulog.is_info() )
ulog.info() << myname << ": activate ok." << endl;
uinfo << myname << ": activate ok." << endl;
return true;
}
// ------------------------------------------------------------------------------------------
void UniSetObject::work()
{
if( ulog.is_info() )
ulog.info() << myname << ": thread processing messages run..." << endl;
uinfo << myname << ": thread processing messages run..." << endl;
if( thr )
msgpid = thr->getTID();
while( isActive() )
{
callback();
}
ulog.warn() << myname << ": thread processing messages stop..." << endl;
uinfo << myname << ": thread processing messages stop..." << endl;
}
// ------------------------------------------------------------------------------------------
void UniSetObject::callback()
......@@ -832,8 +781,7 @@ void UniSetObject::callback()
// ------------------------------------------------------------------------------------------
void UniSetObject::processingMessage( UniSetTypes::VoidMessage *msg )
{
if( ulog.is_info() )
ulog.info() << myname << ": default processing messages..." << endl;
uinfo << myname << ": default processing messages..." << endl;
}
// ------------------------------------------------------------------------------------------
UniSetTypes::SimpleInfo* UniSetObject::getInfo()
......@@ -844,26 +792,26 @@ UniSetTypes::SimpleInfo* UniSetObject::getInfo()
info << "tid=" << setw(10);
if( threadcreate )
{
if(thr)
if(thr)
{
msgpid = thr->getId(); // заодно(на всякий) обновим и внутреннюю информацию
info << msgpid;
info << msgpid;
}
else
info << "не запущен";
}
else
info << "откл.";
info << "откл.";
info << "\tcount=" << countMessages();
info << "\tmaxMsg=" << stMaxQueueMessages;
info << "\tqFull("<< SizeOfMessageQueue << ")=" << stCountOfQueueFull;
// info << "\n";
SimpleInfo* res = new SimpleInfo();
res->info = info.str().c_str(); // CORBA::string_dup(info.str().c_str());
res->id = myid;
return res; // ._retn();
}
// ------------------------------------------------------------------------------------------
......@@ -883,7 +831,7 @@ bool UniSetObject::PriorVMsgCompare::operator()(const UniSetTypes::VoidMessage&
return lhs.tm.tv_usec >= rhs.tm.tv_usec;
return lhs.tm.tv_sec >= rhs.tm.tv_sec;
}
return lhs.priority < rhs.priority;
}
// ------------------------------------------------------------------------------------------
......
......@@ -61,7 +61,7 @@ void UniSetObject_LT::callback()
}
catch(Exception& ex)
{
ulog.crit() << myname << "(callback): " << ex << endl;
ucrit << myname << "(callback): " << ex << endl;
}
}
// ------------------------------------------------------------------------------------------
......
......@@ -89,8 +89,7 @@ void IOController::sensorsUnregistration()
}
catch(Exception& ex)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(sensorsUnregistration): "<< ex << endl;
ucrit << myname << "(sensorsUnregistration): "<< ex << endl;
}
catch(...){}
}
......@@ -117,8 +116,7 @@ void IOController::activateInit()
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(activateInit): "<< ex << endl;
ucrit << myname << "(activateInit): "<< ex << endl;
}
catch(...){}
}
......@@ -130,7 +128,7 @@ CORBA::Long IOController::getValue( const IOController_i::SensorInfo& si )
return localGetValue(li,si);
}
// ------------------------------------------------------------------------------------------
long IOController::localGetValue( IOController::IOStateList::iterator& li,
long IOController::localGetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si )
{
if( li == ioList.end() )
......@@ -144,15 +142,13 @@ long IOController::localGetValue( IOController::IOStateList::iterator& li,
uniset_rwmutex_rlock lock(li->second.val_lock);
return li->second.value;
}
// -------------
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);
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
// ------------------------------------------------------------------------------------------
......@@ -163,7 +159,7 @@ void IOController::setUndefinedState(const IOController_i::SensorInfo& si,
localSetUndefinedState( li,undefined,si );
}
// -----------------------------------------------------------------------------
void IOController::localSetUndefinedState( IOStateList::iterator& li,
void IOController::localSetUndefinedState( IOStateList::iterator& li,
bool undefined, const IOController_i::SensorInfo& si )
{
// сохранение текущего состояния
......@@ -175,10 +171,10 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
ostringstream err;
err << myname << "(localSetUndefined): Unknown sensor (" << si.id << ":" << si.node << ")"
<< "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());
}
bool changed = false;
{ // lock
uniset_rwmutex_wrlock lock(li->second.val_lock);
......@@ -188,7 +184,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// сперва локальные события...
try
{
{
if( changed )
li->second.sigUndefChange.emit(li, this);
}
......@@ -196,7 +192,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// потом глобольное, но конкретно для 'undefchange'
try
{
{
if( changed )
sigAnyUndefChange.emit(li, this);
}
......@@ -204,7 +200,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// теперь просто событие по изменению состояния
try
{
{
if( changed )
li->second.sigChange.emit(li, this);
}
......@@ -212,7 +208,7 @@ void IOController::localSetUndefinedState( IOStateList::iterator& li,
// глобальное по всем..
try
{
{
if( changed )
sigAnyChange.emit(li, this);
}
......@@ -229,7 +225,7 @@ void IOController::fastSetValue( const IOController_i::SensorInfo& si, CORBA::Lo
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 )
{
IOController::IOStateList::iterator li(ioList.end());
......@@ -237,7 +233,7 @@ void IOController::setValue( const IOController_i::SensorInfo& si, CORBA::Long v
}
// ------------------------------------------------------------------------------------------
void IOController::localSetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si,
const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id )
{
if( sup_id == UniSetTypes::DefaultObjectId )
......@@ -246,35 +242,31 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li,
// сохранение текущего состояния
if( li == ioList.end() )
li = ioList.find(key(si.id, si.node));
if( li==ioList.end() )
{
{
ostringstream err;
err << myname << "(localSaveValue): Unknown sensor (" << si.id << ":" << si.node << ")"
<< "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());
}
bool changed = false;
{ // lock
uniset_rwmutex_wrlock lock(li->second.val_lock);
// фильтрам может потребоваться измениять исходное значение (например для усреднения)
// поэтому передаём (и затем сохраняем) напрямую(ссылку) value (а не const value)
bool blocked = ( li->second.blocked || li->second.undefined );
if( checkIOFilters(&li->second,value,sup_id) || blocked )
{
if( ulog.is_info() )
{
ulog.info() << myname << ": save sensor value (" << si.id << ":" << si.node << ")"
uinfo << myname << ": save sensor value (" << si.id << ":" << si.node << ")"
<< " name: " << conf->oind->getNameById(si.id)
<< " node: " << conf->oind->getMapName(si.node)
<< " value="<< value << endl;
}
long prev = li->second.value;
......@@ -303,14 +295,14 @@ void IOController::localSetValue( IOController::IOStateList::iterator& li,
} // unlock
try
{
{
if( changed )
li->second.sigChange.emit(li, this);
}
catch(...){}
try
{
{
if( changed )
sigAnyChange.emit(li, this);
}
......@@ -324,10 +316,9 @@ IOType IOController::getIOType( const IOController_i::SensorInfo& si )
IOStateList::iterator ali = ioList.find(k);
if( ali!=ioList.end() )
return ali->second.type;
ostringstream err;
err << myname << "(getIOType): датчик имя: " << conf->oind->getNameById(si.id) << " не найден";
// ulog.info() << err.str() << endl;
err << myname << "(getIOType): датчик имя: " << conf->oind->getNameById(si.id) << " не найден";
throw IOController_i::NameNotFound(err.str().c_str());
}
// ---------------------------------------------------------------------------
......@@ -338,8 +329,7 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
{
ostringstream err;
err << "(IOCOntroller::ioRegistration): КОНТРОЛЛЕРУ НЕ ЗАДАН ObjectId. Регистрация невозможна.";
if( ulog.is_warn() )
ulog.warn() << err.str() << endl;
uwarn << err.str() << endl;
throw ResolveNameError(err.str().c_str());
}
......@@ -352,9 +342,9 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
if( li!=ioList.end() )
{
ostringstream err;
err << "Попытка повторной регистрации датчика("<< k << "). имя: "
err << "Попытка повторной регистрации датчика("<< k << "). имя: "
<< conf->oind->getNameById(ainf.si.id)
<< " узел: " << conf->oind->getMapName(ainf.si.node);
<< " узел: " << conf->oind->getMapName(ainf.si.node);
throw ObjectNameAlready(err.str().c_str());
}
}
......@@ -380,35 +370,27 @@ void IOController::ioRegistration( const USensorInfo& ainf, bool force )
{
try
{
if( ulog.is_info() )
{
ulog.info() << myname
<< "(ioRegistration): регистрирую "
uinfo << myname
<< "(ioRegistration): регистрирую "
<< conf->oind->getNameById(ainf.si.id, ainf.si.node) << endl;
}
ui.registered( ainf.si.id, ainf.si.node, getRef(), true );
return;
}
catch(ObjectNameAlready& ex )
{
if( ulog.is_warn() )
{
ulog.warn() << myname
<< "(asRegistration): ЗАМЕНЯЮ СУЩЕСТВУЮЩИЙ ОБЪЕКТ (ObjectNameAlready)" << endl;
}
uwarn << myname << "(asRegistration): ЗАМЕНЯЮ СУЩЕСТВУЮЩИЙ ОБЪЕКТ (ObjectNameAlready)" << endl;
ui.unregister(ainf.si.id,ainf.si.node);
}
}
}
catch( Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(ioRegistration): " << ex << endl;
ucrit << myname << "(ioRegistration): " << ex << endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(ioRegistration): catch ..."<< endl;
ucrit << myname << "(ioRegistration): catch ..."<< endl;
}
}
// ---------------------------------------------------------------------------
......@@ -439,8 +421,7 @@ void IOController::logging( UniSetTypes::SensorMessage& sm )
if( isPingDBServer )
{
isPingDBServer = false;
if( ulog.is_crit() )
ulog.crit() << myname << "(logging): DBServer unavailable" << endl;
ucrit << myname << "(logging): DBServer unavailable" << endl;
}
}
}
......@@ -453,7 +434,7 @@ void IOController::dumpToDB()
{ // lock
// 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);
SensorMessage sm;
......@@ -469,19 +450,19 @@ void IOController::dumpToDB()
if ( !li->second.dbignore )
logging(sm);
}
} // unlock
} // unlock
}
// --------------------------------------------------------------------------------------------------------------
IOController_i::SensorInfoSeq* IOController::getSensorsMap()
{
// ЗА ОСВОБОЖДЕНИЕ ПАМЯТИ ОТВЕЧАЕТ КЛИЕНТ!!!!!!
// поэтому ему лучше пользоваться при получении _var-классом
IOController_i::SensorInfoSeq* res = new IOController_i::SensorInfoSeq();
IOController_i::SensorInfoSeq* res = new IOController_i::SensorInfoSeq();
res->length( ioList.size());
int i=0;
for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it)
{
{
uniset_rwmutex_rlock lock(it->second.val_lock);
(*res)[i] = it->second;
i++;
......@@ -516,11 +497,10 @@ IOController_i::SensorIOInfo IOController::getSensorIOInfo( const IOController_i
// -------------
ostringstream err;
err << myname << "(getSensorIOInfo): Unknown sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node);
err << myname << "(getSensorIOInfo): Unknown sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node);
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
......@@ -531,8 +511,8 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it==ioList.end() )
{
ostringstream err;
err << myname << "(getRawValue): Unknown analog sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node);
err << myname << "(getRawValue): Unknown analog sensor (" << si.id << ":" << si.node << ")"
<< conf->oind->getNameById(si.id,si.node);
throw IOController_i::NameNotFound(err.str().c_str());
}
......@@ -544,10 +524,10 @@ CORBA::Long IOController::getRawValue(const IOController_i::SensorInfo& si)
if( it->second.type == UniversalIO::AI )
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 it->second.value;
}
// --------------------------------------------------------------------------------------------------------------
......@@ -559,13 +539,12 @@ void IOController::calibrate(const IOController_i::SensorInfo& si,
if( it==ioList.end() )
{
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);
throw IOController_i::NameNotFound(err.str().c_str());
}
if( ulog.is_info() )
ulog.info() << myname <<"(calibrate): from " << conf->oind->getNameById(adminId) << endl;
uinfo << myname <<"(calibrate): from " << conf->oind->getNameById(adminId) << endl;
it->second.ci = ci;
}
......@@ -576,11 +555,11 @@ IOController_i::CalibrateInfo IOController::getCalibrateInfo(const IOController_
if( it==ioList.end() )
{
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);
throw IOController_i::NameNotFound(err.str().c_str());
}
return it->second.ci;
return it->second.ci;
}
// --------------------------------------------------------------------------------------------------------------
IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo& ai):
......@@ -598,7 +577,7 @@ IOController::USensorInfo::USensorInfo(IOController_i::SensorIOInfo* ai):
any(0)
{}
IOController::USensorInfo&
IOController::USensorInfo&
IOController::USensorInfo::operator=(IOController_i::SensorIOInfo& r)
{
(*this) = r;
......@@ -606,16 +585,16 @@ IOController::USensorInfo&
return *this;
}
IOController::USensorInfo&
IOController::USensorInfo&
IOController::USensorInfo::operator=(IOController_i::SensorIOInfo* r)
{
(*this) = (*r);
// any=0;
return *this;
}
const IOController::USensorInfo&
const IOController::USensorInfo&
IOController::USensorInfo::operator=(const IOController_i::SensorIOInfo& r)
{
(*this) = r;
......@@ -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 )
{
for( IOFilterSlotList::iterator it=iofilters.begin(); it!=iofilters.end(); ++it )
......@@ -685,7 +664,7 @@ IOController_i::SensorInfoSeq* IOController::getSensorSeq( const IDSeq& lst )
(*res)[i] = it->second;
continue;
}
// элемент не найден...
(*res)[i].si.id = DefaultObjectId;
(*res)[i].si.node = DefaultObjectId;
......@@ -734,10 +713,10 @@ IOController_i::ShortIOInfo IOController::getChangedTime( const IOController_i::
// -------------
ostringstream err;
err << myname << "(getChangedTime): вход(выход) с именем "
err << myname << "(getChangedTime): вход(выход) с именем "
<< 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());
}
// -----------------------------------------------------------------------------
......@@ -750,7 +729,7 @@ IOController_i::ShortMapSeq* IOController::getSensors()
int i=0;
for( IOStateList::iterator it=ioList.begin(); it!=ioList.end(); ++it)
{
{
IOController_i::ShortMap m;
{
uniset_rwmutex_rlock lock(it->second.val_lock);
......@@ -775,12 +754,10 @@ IOController::ChangeSignal IOController::signal_change_value( UniSetTypes::Objec
if( it==ioList.end() )
{
ostringstream err;
err << myname << "(signal_change_value): вход(выход) с именем "
err << myname << "(signal_change_value): вход(выход) с именем "
<< conf->oind->getNameById(id) << " не найден";
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
......@@ -804,11 +781,10 @@ IOController::ChangeUndefinedStateSignal IOController::signal_change_undefined_s
if( it==ioList.end() )
{
ostringstream err;
err << myname << "(signal_change_undefine): вход(выход) с именем "
err << myname << "(signal_change_undefine): вход(выход) с именем "
<< conf->oind->getNameById(id) << " не найден";
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
......
......@@ -44,7 +44,7 @@ askIOMutex("askIOMutex"),
trshMutex("trshMutex"),
maxAttemtps(conf->getPIntField("ConsumerMaxAttempts", 5))
{
}
IONotifyController::IONotifyController(const string& name, const string& section, NCRestorer* d ):
......@@ -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));
// if(it != lst.end() )
// 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 )
return false;
......@@ -117,7 +117,7 @@ bool IONotifyController::addConsumer(ConsumerList& lst, const ConsumerInfo& ci )
cinf.ref = UniSetObject_i::_narrow(op);
}
catch(...){}
lst.push_front(cinf);
return true;
}
......@@ -132,14 +132,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c
{
// ConsumerInfo tmp(*li);
// if( cons == tmp )
if( li->id == cons.id && li->node == cons.node )
if( li->id == cons.id && li->node == cons.node )
{
lst.erase(li);
// ulog.info() << name.c_name() <<": удаляем "<< name << " из списка потребителей" << endl;
return true;
}
}
return false;
}
// ------------------------------------------------------------------------------------------
......@@ -148,16 +147,13 @@ bool IONotifyController::removeConsumer(ConsumerList& lst, const ConsumerInfo& c
* \param ci - информация о заказчике
* \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 )
{
if( ulog.is_info() )
{
ulog.info() << "(askSensor): поступил " << ( cmd == UIODontNotify ? "отказ" :"заказ" ) << " от "
uinfo << "(askSensor): поступил " << ( cmd == UIODontNotify ? "отказ" :"заказ" ) << " от "
<< conf->oind->getNameById(ci.id, ci.node)
<< " на аналоговый датчик "
<< conf->oind->getNameById(si.id,si.node) << endl;
}
// если такого аналогового датчика нет, здесь сработает исключение...
IOStateList::iterator li = myioEnd();
......@@ -165,11 +161,11 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
{ // lock
uniset_rwmutex_wrlock lock(askIOMutex);
// а раз есть заносим(исключаем) заказчика
// а раз есть заносим(исключаем) заказчика
ask( askIOList, si, ci, cmd);
} // unlock
// посылка первый раз состояния
// посылка первый раз состояния
if( cmd==UniversalIO::UIONotify || (cmd==UIONotifyFirstNotNull && li->second.value) )
{
SensorMessage smsg;
......@@ -177,7 +173,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
smsg.node = si.node;
smsg.consumer = ci.id;
smsg.supplier = getId();
smsg.sensor_type= li->second.type;
smsg.sensor_type= li->second.type;
smsg.priority = (Message::Priority)li->second.priority;
smsg.sm_tv_sec = li->second.tv_sec;
smsg.sm_tv_usec = li->second.tv_usec;
......@@ -189,7 +185,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
smsg.sm_tv_sec = li->second.tv_sec;
smsg.sm_tv_usec = li->second.tv_usec;
}
TransportMessage tm(smsg.transport_msg());
try
{
......@@ -197,21 +193,18 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
uwarn << myname << "(askSensor): " << conf->oind->getNameById(si.id, si.node) << " catch "<< ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( ulog.is_warn() )
ulog.warn() << conf->oind->getNameById(ci.id, ci.node)
<< " недоступен!!(CORBA::SystemException): "
<< ex.NP_minorString() << endl;
}
uwarn << myname << "(askSensor): " << conf->oind->getNameById(ci.id, ci.node)
<< " недоступен!!(CORBA::SystemException): "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << conf->oind->getNameById(ci.id, ci.node)
<< " catch..." << endl;
uwarn << myname << "(askSensor): " << conf->oind->getNameById(ci.id, ci.node)
<< " catch..." << endl;
}
}
}
......@@ -220,7 +213,7 @@ void IONotifyController::askSensor(const IOController_i::SensorInfo& si,
void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& si,
const UniSetTypes::ConsumerInfo& cons, UniversalIO::UIOCommand cmd)
{
// поиск датчика в списке
// поиск датчика в списке
UniSetTypes::KeyType k( key(si.id,si.node) );
AskMap::iterator askIterator = askLst.find(k);
......@@ -230,26 +223,24 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
case UniversalIO::UIONotifyChange:
case UniversalIO::UIONotifyFirstNotNull:
{
if( askIterator==askLst.end() )
if( askIterator==askLst.end() )
{
ConsumerList lst; // создаем новый список
addConsumer(lst,cons);
addConsumer(lst,cons);
// более оптимальный способ(при условии вставки первый раз) // askLst[key]=lst;
askLst.insert(AskMap::value_type(k,lst));
try
{
dumpOrdersList(si,lst);
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
uwarn << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
uwarn << myname << " не смогли сделать dump (catch...)" << endl;
}
}
else
......@@ -262,13 +253,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
uwarn << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
uwarn << myname << " не смогли сделать dump (catch...)" << endl;
}
}
}
......@@ -282,7 +271,7 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
if( removeConsumer(askIterator->second, cons) )
{
if( askIterator->second.empty() )
askLst.erase(askIterator);
askLst.erase(askIterator);
else
{
try
......@@ -291,13 +280,11 @@ void IONotifyController::ask(AskMap& askLst, const IOController_i::SensorInfo& s
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
uwarn << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump (catch...)" << endl;
uwarn << myname << " не смогли сделать dump (catch...)" << endl;
}
}
}
......@@ -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 )
{
if( ai.value == newvalue )
return false;
return true;
}
// ------------------------------------------------------------------------------------------
void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
const IOController_i::SensorInfo& si,
const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id )
{
// Если датчик не найден сдесь сработает исключение
......@@ -328,11 +315,10 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
if( li == myioEnd() ) // ???
{
ostringstream err;
err << myname << "(localSetValue): вход(выход) с именем "
err << myname << "(localSetValue): вход(выход) с именем "
<< 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());
}
......@@ -347,7 +333,7 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
if( prevValue == li->second.value )
return;
// Рассылаем уведомления только в слуае изменения значения
sm.id = si.id;
sm.node = si.node;
......@@ -362,12 +348,12 @@ void IONotifyController::localSetValue( IOController::IOStateList::iterator& li,
} // unlock
try
{
{
if( !li->second.dbignore )
loggingInfo(sm);
}
catch(...){}
AskMap::iterator it = askIOList.find( key(si.id,si.node) );
if( it!=askIOList.end() )
{ // lock
......@@ -409,21 +395,18 @@ void IONotifyController::send(ConsumerList& lst, UniSetTypes::SensorMessage& sm)
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(IONotifyController::send): " << ex
uwarn << myname << "(IONotifyController::send): " << ex
<< " for " << conf->oind->getNameById(li->id, li->node) << endl;
}
catch( CORBA::SystemException& ex )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(IONotifyController::send): "
uwarn << myname << "(IONotifyController::send): "
<< conf->oind->getNameById(li->id, li->node) << " (CORBA::SystemException): "
<< ex.NP_minorString() << endl;
}
catch(...)
{
if( ulog.is_crit() )
ulog.crit() << myname << "(IONotifyController::send): "
ucrit << myname << "(IONotifyController::send): "
<< conf->oind->getNameById(li->id, li->node)
<< " catch..." << endl;
}
......@@ -462,9 +445,8 @@ void IONotifyController::readDump()
restorer->read(this);
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(IONotifyController::readDump): " << ex << endl;
{
uwarn << myname << "(IONotifyController::readDump): " << ex << endl;
}
}
// --------------------------------------------------------------------------------------------------------------
......@@ -490,9 +472,8 @@ void IONotifyController::dumpOrdersList(const IOController_i::SensorInfo& si,
restorer->dump(this,inf,lst);
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(IONotifyController::dumpOrderList): " << ex << endl;
{
uwarn << myname << "(IONotifyController::dumpOrderList): " << ex << endl;
}
}
// --------------------------------------------------------------------------------------------------------------
......@@ -510,16 +491,15 @@ void IONotifyController::dumpThresholdList(const IOController_i::SensorInfo& si,
restorer->dumpThreshold(this,inf,lst);
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(IONotifyController::dumpThresholdList): " << ex << endl;
{
uwarn << myname << "(IONotifyController::dumpThresholdList): " << ex << endl;
}
}
// --------------------------------------------------------------------------------------------------------------
void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, const UniSetTypes::ConsumerInfo& ci,
UniSetTypes::ThresholdId tid,
CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Boolean invert,
CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Boolean invert,
UniversalIO::UIOCommand cmd )
{
if( lowLimit > hiLimit )
......@@ -532,7 +512,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
{ // lock
uniset_rwmutex_wrlock lock(trshMutex);
// поиск датчика в списке
// поиск датчика в списке
UniSetTypes::KeyType skey( key(si.id,si.node) );
AskThresholdMap::iterator it = askTMap.find(skey);
ThresholdInfoExt ti(tid,lowLimit,hiLimit,invert);
......@@ -543,7 +523,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
case UniversalIO::UIONotify: // заказ
case UniversalIO::UIONotifyChange:
{
if( it==askTMap.end() )
if( it==askTMap.end() )
{
ThresholdExtList lst; // создаем новый список
ThresholdsListInfo tli;
......@@ -559,13 +539,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump: " << ex << endl;
uwarn << myname << " не смогли сделать dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << " не смогли сделать dump" << endl;
uwarn << myname << " не смогли сделать dump" << endl;
}
}
else
......@@ -578,13 +556,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshold): dump: " << ex << endl;
uwarn << myname << "(askThreshold): dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
uwarn << myname << "(askThreshold): dump catch..." << endl;
}
}
}
......@@ -592,7 +568,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
if( cmd == UniversalIO::UIONotifyChange )
break;
// посылка первый раз состояния
// посылка первый раз состояния
try
{
SensorMessage sm;
......@@ -612,7 +588,7 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
if( val <= lowLimit )
{
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);
if(!CORBA::is_nil(ref))
ref->push(sm.transport_msg());
......@@ -629,19 +605,16 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshod): " << ex << endl;
uwarn << myname << "(askThreshod): " << ex << endl;
}
catch( CORBA::SystemException& ex )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshod): CORBA::SystemException: "
uwarn << myname << "(askThreshod): CORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
{
uwarn << myname << "(askThreshold): dump catch..." << endl;
}
}
break;
......@@ -658,13 +631,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshold): dump: " << ex << endl;
uwarn << myname << "(askThreshold): dump: " << ex << endl;
}
catch(...)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(askThreshold): dump catch..." << endl;
uwarn << myname << "(askThreshold): dump catch..." << endl;
}
}
}
......@@ -676,11 +647,11 @@ void IONotifyController::askThreshold(const IOController_i::SensorInfo& si, cons
}
} // unlock
}
}
// --------------------------------------------------------------------------------------------------------------
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) )
{
......@@ -709,7 +680,7 @@ bool IONotifyController::addThreshold(ThresholdExtList& lst, ThresholdInfoExt& t
// --------------------------------------------------------------------------------------------------------------
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) )
{
......@@ -725,8 +696,8 @@ bool IONotifyController::removeThreshold( ThresholdExtList& lst, ThresholdInfoEx
return false;
}
// --------------------------------------------------------------------------------------------------------------
void IONotifyController::checkThreshold( IOStateList::iterator& li,
const IOController_i::SensorInfo& si,
void IONotifyController::checkThreshold( IOStateList::iterator& li,
const IOController_i::SensorInfo& si,
bool send_msg )
{
{ // lock
......@@ -767,7 +738,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
tm.tv_sec = 0; tm.tv_usec = 0;
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
......@@ -789,11 +760,11 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
else if( sm.value <= it->lowlimit )
state = IONotifyController_i::LowThreshold;
}
// если ничего не менялось..
if( it->state == state )
continue;
it->state = state;
sm.tid = it->id;
......@@ -801,7 +772,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
// если состояние не normal, значит порог сработал,
// не важно какой.. нижний или верхний (зависит от inverse)
sm.threshold = ( state != IONotifyController_i::NormalThreshold ) ? true : false;
// запоминаем время изменения состояния
it->tv_sec = tm.tv_sec;
it->tv_usec = tm.tv_usec;
......@@ -817,8 +788,7 @@ void IONotifyController::checkThreshold( IOStateList::iterator& li,
}
catch( UniSetTypes::Exception& ex )
{
if( ulog.is_crit() )
ulog.crit() << myname << "(checkThreshold): " << ex << endl;
ucrit << myname << "(checkThreshold): " << ex << endl;
}
}
......@@ -839,14 +809,14 @@ IONotifyController::ThresholdExtList::iterator IONotifyController::findThreshold
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 )
return it;
}
}
}
ThresholdExtList::iterator it;
return it;
}
......@@ -860,12 +830,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const
if( it == askTMap.end() )
{
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);
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
......@@ -876,12 +844,10 @@ IONotifyController_i::ThresholdInfo IONotifyController::getThresholdInfo( const
}
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 << "'";
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
// --------------------------------------------------------------------------------------------------------------
......@@ -893,12 +859,10 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
if( it == askTMap.end() )
{
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);
if( ulog.is_info() )
ulog.info() << err.str() << endl;
uinfo << err.str() << endl;
throw IOController_i::NameNotFound(err.str().c_str());
}
......@@ -912,8 +876,7 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
}
catch( Exception& ex )
{
if( ulog.is_warn() )
ulog.warn() << myname << "(getThresholdsList): для датчика "
uwarn << myname << "(getThresholdsList): для датчика "
<< conf->oind->getNameById(it->second.si.id, it->second.si.node)
<< " " << ex << endl;
}
......@@ -937,8 +900,6 @@ IONotifyController_i::ThresholdList* IONotifyController::getThresholds( const IO
// --------------------------------------------------------------------------------------------------------------
IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList()
{
// ulog.info() << myname << "(getThresholdsList): ...\n";
IONotifyController_i::ThresholdsListSeq* res = new IONotifyController_i::ThresholdsListSeq();
res->length( askTMap.size() );
......@@ -956,8 +917,7 @@ IONotifyController_i::ThresholdsListSeq* IONotifyController::getThresholdsList()
}
catch(Exception& ex)
{
if( ulog.is_warn() )
ulog.warn() << myname << "(getThresholdsList): для датчика "
uwarn << myname << "(getThresholdsList): для датчика "
<< conf->oind->getNameById(it->second.si.id, it->second.si.node)
<< " " << ex << endl;
continue;
......@@ -989,7 +949,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
SensorMessage sm;
// эти поля можно копировать без lock, т.к. они не меняются
sm.id = it.si.id;
sm.id = it.si.id;
sm.node = it.si.node;
sm.undefined = it.undefined;
sm.priority = (Message::Priority)it.priority;
......@@ -1005,7 +965,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
} // unlock
try
{
{
if( !it.dbignore )
loggingInfo(sm);
}
......@@ -1014,7 +974,7 @@ void IONotifyController::onChangeUndefinedState( IOStateList::iterator& lit, IOC
AskMap::iterator it1 = askIOList.find( key(it.si.id,it.si.node) );
if( it1!=askIOList.end() )
{ // lock
uniset_rwmutex_rlock lock(askIOMutex);
uniset_rwmutex_rlock lock(askIOMutex);
send(it1->second, sm);
} // unlock
}
......@@ -1025,7 +985,7 @@ IDSeq* IONotifyController::askSensorsSeq( const UniSetTypes::IDSeq& lst,
UniversalIO::UIOCommand cmd)
{
UniSetTypes::IDList badlist; // cписок не найденных идентификаторов
IOController_i::SensorInfo si;
int size = lst.length();
......
......@@ -60,9 +60,9 @@ void IONotifyController_LT::callback()
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 @@
/*! \file
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include "Debug.h"
#include "Configuration.h"
......@@ -44,7 +44,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
{
UniSetTypes::KeyType k( key(inf.si.id,inf.si.node) );
// Проверка зарегистрирован-ли данный датчик
// Проверка зарегистрирован-ли данный датчик
// если такого дискретного датчика нет, то здесь сработает исключение...
if( !force )
{
......@@ -63,18 +63,17 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
case UniversalIO::AO:
ic->ioRegistration(inf);
break;
default:
if( ulog.is_crit() )
ulog.crit() << ic->getName() << "(askDumper::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА! -> "
ucrit << ic->getName() << "(askDumper::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА! -> "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
return;
break;
}
}
}
switch(inf.type)
{
case UniversalIO::DI:
......@@ -85,8 +84,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
break;
default:
if( ulog.is_crit() )
ulog.crit() << ic->getName() << "(NCRestorer::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА!-> "
ucrit << ic->getName() << "(NCRestorer::addlist): НЕИЗВЕСТНЫЙ ТИП ДАТЧИКА!-> "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
break;
}
......@@ -94,7 +92,7 @@ void NCRestorer::addlist( IONotifyController* ic, SInfo& inf, IONotifyController
// ------------------------------------------------------------------------------------------
void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyController::ThresholdExtList& lst, bool force )
{
// Проверка зарегистрирован-ли данный датчик
// Проверка зарегистрирован-ли данный датчик
// если такого дискретного датчика нет сдесь сработает исключение...
if( !force )
{
......@@ -154,15 +152,13 @@ void NCRestorer::addthresholdlist( IONotifyController* ic, SInfo& inf, IONotifyC
}
catch( Exception& ex )
{
if( ulog.is_warn() )
ulog.warn() << ic->getName() << "(NCRestorer::addthresholdlist): " << ex
uwarn << ic->getName() << "(NCRestorer::addthresholdlist): " << ex
<< " для " << conf->oind->getNameById(inf.si.id, inf.si.node) << endl;
throw;
}
catch( CORBA::SystemException& ex )
{
if( ulog.is_warn() )
ulog.warn() << ic->getName() << "(NCRestorer::addthresholdlist): "
uwarn << ic->getName() << "(NCRestorer::addthresholdlist): "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << " недоступен!!(CORBA::SystemException): "
<< ex.NP_minorString() << endl;
throw;
......@@ -198,14 +194,13 @@ void NCRestorer::init_depends_signals( IONotifyController* ic )
if( it->second.d_si.id == DefaultObjectId )
continue;
if( ulog.is_info() )
ulog.info() << ic->getName() << "(NCRestorer::init_depends_signals): "
uinfo << ic->getName() << "(NCRestorer::init_depends_signals): "
<< " init depend: '" << conf->oind->getMapName(it->second.si.id) << "'"
<< " dep_name=(" << it->second.d_si.id << ")'" << conf->oind->getMapName(it->second.d_si.id) << "'"
<< endl;
IOController::ChangeSignal s = ic->signal_change_value(it->second.d_si);
s.connect( sigc::mem_fun( &it->second, &IOController::USensorInfo::checkDepend) );
}
}
}
// -----------------------------------------------------------------------------
......@@ -20,7 +20,7 @@
/*! \file
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#include <sstream>
#include "Debug.h"
#include "Configuration.h"
......@@ -44,8 +44,8 @@ fname(fname)
init(fname);
}
NCRestorer_XML::NCRestorer_XML(const string& fname,
const std::string& f_field,
NCRestorer_XML::NCRestorer_XML(const string& fname,
const std::string& f_field,
const std::string& f_value):
s_filterField(f_field),
s_filterValue(f_value),
......@@ -78,8 +78,8 @@ NCRestorer_XML::~NCRestorer_XML()
// ------------------------------------------------------------------------------------------
void NCRestorer_XML::init( const std::string& fname )
{
/*!
\warning Файл открывается только при создании...
/*!
\warning Файл открывается только при создании...
Т.е. не будут учтены изменения в промежутке между записью(dump-а) файла
*/
try
......@@ -89,24 +89,22 @@ void NCRestorer_XML::init( const std::string& fname )
else
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)
{
if( ulog.is_warn() )
ulog.warn() << "NCRestorer_XML::dump NOT SUPPORT!!!!" << endl;
uwarn << "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)
{
if( ulog.is_warn() )
ulog.warn() << "NCRestorer_XML::dumpThreshold NOT SUPPORT!!!!" << endl;
uwarn << "NCRestorer_XML::dumpThreshold NOT SUPPORT!!!!" << endl;
}
// ------------------------------------------------------------------------------------------
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*
if( !getSensorInfo(xml,it,inf) )
{
if( ulog.is_warn() )
ulog.warn() << ic->getName() << "(read_list): не смог получить информацию по датчику " << endl;
uwarn << ic->getName() << "(read_list): не смог получить информацию по датчику " << endl;
continue;
}
......@@ -149,7 +146,7 @@ void NCRestorer_XML::read_list( UniXML& xml, xmlNode* node, IONotifyController*
}
catch(Exception& ex)
{
ulog.warn() << "(read_list): " << ex << endl;
uwarn << "(read_list): " << ex << endl;
}
}
break;
......@@ -198,7 +195,7 @@ void NCRestorer_XML::read( IONotifyController* ic, const string& fn )
void NCRestorer_XML::read( IONotifyController* ic, UniXML& xml )
{
xmlNode* node;
if( (&xml) == conf->getConfXML() )
node = conf->getXMLSensorsSection();
else
......@@ -223,8 +220,7 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
string sname( xml.getProp(it,"name"));
if( sname.empty() )
{
if( ulog.is_warn() )
ulog.warn() << "(getBaseInfo): не указано имя датчика... пропускаем..." << endl;
uwarn << "(getBaseInfo): не указано имя датчика... пропускаем..." << endl;
return false;
}
......@@ -239,11 +235,10 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
if( sid == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname << endl;
ucrit << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР датчика --> " << sname << endl;
return false;
}
ObjectId snode = conf->getLocalNode();
string snodename(xml.getProp(it,"node"));
if( !snodename.empty() )
......@@ -251,14 +246,13 @@ bool NCRestorer_XML::getBaseInfo( UniXML& xml, xmlNode* it, IOController_i::Sens
if( snode == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла --> " << snodename << endl;
ucrit << "(getBaseInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла --> " << snodename << endl;
return false;
}
si.id = sid;
si.id = sid;
si.node = snode;
return true;
return true;
}
// ------------------------------------------------------------------------------------------
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"));
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;
return false;
}
......@@ -317,8 +311,7 @@ bool NCRestorer_XML::getSensorInfo( UniXML& xml, xmlNode* it, SInfo& inf )
inf.d_si.id = conf->getSensorID(d_txt);
if( inf.d_si.id == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(NCRestorer_XML:getSensorInfo): sensor='"
ucrit << "(NCRestorer_XML:getSensorInfo): sensor='"
<< xml.getProp(it,"name") << "' err: "
<< " Unknown SensorID for depend='" << d_txt
<< endl;
......@@ -349,17 +342,12 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
NCRestorer_XML::SInfo inf;
if( !getSensorInfo(xml,it.getCurrent(),inf) )
{
ulog.warn() << ic->getName()
uwarn << ic->getName()
<< "(read_thresholds): не смог получить информацию по датчику" << endl;
continue;
}
if( ulog.is_info() )
{
ulog.info() << ic->getName() << "(read_thresholds): "
<< it.getProp("name") << endl;
// conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
}
uinfo << ic->getName() << "(read_thresholds): " << it.getProp("name") << endl;
UniXML_iterator tit(it);
if( !tit.goChildren() )
......@@ -371,21 +359,18 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
IONotifyController::ThresholdInfoExt ti(0,0,0,0);
if( !getThresholdInfo(xml,tit,ti) )
{
ulog.warn() << ic->getName()
uwarn << ic->getName()
<< "(read_thresholds): не смог получить информацию о пороге"
<< " для датчика "
<< conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
continue;
}
if( ulog.is_info() )
{
ulog.info() << "(read_thresholds): \tthreshold low="
<< ti.lowlimit << " \thi=" << ti.hilimit
<< " \t sid=" << ti.sid
<< " \t invert=" << ti.invert
<< endl << flush;
}
uinfo << "(read_thresholds): \tthreshold low="
<< ti.lowlimit << " \thi=" << ti.hilimit
<< " \t sid=" << ti.sid
<< " \t invert=" << ti.invert
<< endl << flush;
xmlNode* cnode = find_node(xml,tit,"consumers","");
if( cnode )
......@@ -395,9 +380,9 @@ void NCRestorer_XML::read_thresholds(UniXML& xml, xmlNode* node, IONotifyControl
{
if( !getConsumerList(xml,ask_it,ti.clst) )
{
ulog.warn() << ic->getName()
uwarn << ic->getName()
<< "(read_thresholds): не смог получить список заказчиков"
<< " для порога " << ti.id
<< " для порога " << ti.id
<< " датчика " << conf->oind->getNameById(inf.si.id,inf.si.node) << endl;
}
}
......@@ -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 )
{
// в новых ask-файлах список выделен <consumers>...</consumers>,
......@@ -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 )
{
UniXML_iterator it(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 )
{
UniXML_iterator uit(node);
......@@ -464,7 +449,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
ti.sid = conf->getSensorID(sid_name);
if( ti.sid == UniSetTypes::DefaultObjectId )
{
ulog.crit() << "(NCRestorer_XML:getThresholdInfo): "
ucrit << "(NCRestorer_XML:getThresholdInfo): "
<< " Not found ID for " << sid_name << endl;
}
else
......@@ -473,7 +458,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
// Пока что IONotifyController поддерживает работу только с '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;
return false;
}
......@@ -490,7 +475,7 @@ bool NCRestorer_XML::getThresholdInfo( UniXML& xml,xmlNode* node,
}
// ------------------------------------------------------------------------------------------
bool NCRestorer_XML::check_thresholds_item( UniXML_iterator& it )
{
{
return UniSetTypes::check_filter(it,t_filterField,t_filterValue);
}
// ------------------------------------------------------------------------------------------
......
......@@ -159,8 +159,7 @@ Configuration::Configuration( int argc, const char* const* argv, const string& f
void Configuration::initConfiguration( int argc, const char* const* argv )
{
// PassiveTimer pt(UniSetTimer::WaitUpTime);
if( ulog.is_system() )
ulog.system() << "*** configure from file: " << fileConfName << endl;
ulogsys << "*** configure from file: " << fileConfName << endl;
char curdir[FILENAME_MAX];
getcwd(curdir,FILENAME_MAX);
......@@ -184,8 +183,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
{
if( !unixml.isOpen() )
{
if( ulog.is_info() )
ulog.info() << "(Configuration): open from file " << fileConfName << endl;
uinfo << "(Configuration): open from file " << fileConfName << endl;
unixml.open(fileConfName);
}
}
......@@ -194,7 +192,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
ulog << "(Configuration): FAILED open configuration from " << fileConfName << endl;
throw;
}
// default value
heartbeat_msec = 5000;
......@@ -208,8 +206,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
UniXML_iterator it = unixml.findNode(unixml.getFirstNode(),"ObjectsMap");
if( it == NULL )
{
if( ulog.is_crit() )
ulog.crit()<< "(Configuration:init): not found <ObjectsMap> node in " << fileConfName << endl;
ucrit << "(Configuration:init): not found <ObjectsMap> node in " << fileConfName << endl;
throw SystemError("(Configuration:init): not found <ObjectsMap> node in " + fileConfName );
}
......@@ -222,8 +219,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
}
catch(Exception& ex )
{
if( ulog.is_crit() )
ulog.crit()<< "(Configuration:init): INIT FAILED! from " << fileConfName << endl;
ucrit << "(Configuration:init): INIT FAILED! from " << fileConfName << endl;
throw;
}
}
......@@ -232,9 +228,6 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
// Настраиваем отладочные логи
initDebug(ulog,"UniSetDebug");
// cerr << "*************** initConfiguration: oind: " << pt.getCurrent() << " msec " << endl;
// pt.reset();
// default init...
transientIOR = false;
localIOR = false;
......@@ -295,8 +288,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
param << "=corbaname::" << it->host << ":" << it->port;
new_argv[i+1] = strdup(param.str().c_str());
if( ulog.is_info() )
ulog.info() << "(Configuration): внесли параметр " << param.str() << endl;
uinfo << "(Configuration): внесли параметр " << param.str() << endl;
i+=2;
ostringstream uri;
......@@ -306,7 +298,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
assert( i < _argc );
}
// т..к _argc уже изменился, то и _argv надо обновить
// чтобы вызов getArgParam не привел к SIGSEGV
_argv = new_argv;
......@@ -315,7 +307,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
xmlNode* nsnode = getNode("NameService");
if( !nsnode )
{
ulog.warn() << "(Configuration): не нашли раздела 'NameService' \n";
uwarn << "(Configuration): не нашли раздела 'NameService' \n";
new_argv[i] = "";
new_argv[i+1] = "";
}
......@@ -323,14 +315,13 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
{
new_argv[i] = "-ORBInitRef";
new_argv[i+1] = ""; // сперва инициализиуем пустой строкой (т.к. будет вызываться getArgParam)
string defPort( getPort( getProp(nsnode,"port") ) ); // здесь вызывается getArgParam! проходящий по _argv
ostringstream param;
param << this << "NameService=corbaname::" << getProp(nsnode,"host") << ":" << defPort;
new_argv[i+1] = strdup(param.str().c_str());
if( ulog.is_info() )
ulog.info() << "(Configuration): внесли параметр " << param.str() << endl;
uinfo << "(Configuration): внесли параметр " << param.str() << endl;
{
ostringstream ns_name;
......@@ -341,7 +332,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
cerr << "**********************!!!! FAILED ADD name=" <<ns_name << " uri=" << uri.str() << endl;
}
}
_argv = new_argv;
// ------------- CORBA INIT -------------
// orb init
......@@ -350,7 +341,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
CORBA::PolicyList pl;
if( transientIOR == false )
{
pl.length(3);
......@@ -374,12 +365,12 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
}
catch( Exception& ex )
{
ulog.crit()<< "Configuration:" << ex << endl;
ucrit << "Configuration:" << ex << endl;
throw;
}
catch(...)
{
ulog.crit()<< "Configuration: INIT FAILED!!!!"<< endl;
ucrit << "Configuration: INIT FAILED!!!!"<< endl;
throw Exception("Configuration: INIT FAILED!!!!");
}
......@@ -422,23 +413,21 @@ void Configuration::initParameters()
xmlNode* root = unixml.findNode( unixml.getFirstNode(),"UniSet" );
if( !root )
{
if( ulog.is_crit() )
ulog.crit()<< "Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found"<< endl;
ucrit << "Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found"<< endl;
throw Exception("Configuration: INIT PARAM`s FAILED! <UniSet>...</UniSet> not found!");
}
UniXML_iterator it(root);
if( !it.goChildren() )
{
if( ulog.is_crit() )
ulog.crit()<< "Configuration: INIT PARAM`s FAILED!!!!"<< endl;
ucrit << "Configuration: INIT PARAM`s FAILED!!!!"<< endl;
throw Exception("Configuration: INIT PARAM`s FAILED!!!!");
}
for( ; it.getCurrent(); it.goNext() )
{
string name( it.getName() );
if( name == "LocalNode" )
{
if( localNode == UniSetTypes::DefaultObjectId )
......@@ -457,8 +446,7 @@ void Configuration::initParameters()
{
ostringstream msg;
msg << "Configuration: DBServer '" << secDB << "' not found ServiceID in <services>!";
if( ulog.is_crit() )
ulog.crit()<< msg.str() << endl;
ucrit << msg.str() << endl;
throw Exception(msg.str());
}
}
......@@ -536,8 +524,7 @@ void Configuration::setLocalNode( const string& nodename )
{
stringstream err;
err << "(Configuration::setLocalNode): Not found node '" << nodename << "'";
if( ulog.is_crit() )
ulog.crit()<< err.str() << endl;
ucrit << err.str() << endl;
throw Exception(err.str());
}
......@@ -604,8 +591,7 @@ void Configuration::createNodesList()
xmlNode* omapnode = unixml.findNode(unixml.getFirstNode(), "ObjectsMap");
if( !omapnode )
{
if( ulog.is_crit() )
ulog.crit()<< "(Configuration): <ObjectsMap> not found!!!" << endl;
ucrit << "(Configuration): <ObjectsMap> not found!!!" << endl;
throw Exception("(Configuration): <ObjectsMap> not found!");
}
......@@ -613,8 +599,7 @@ void Configuration::createNodesList()
xmlNode* node = unixml.findNode(omapnode, "nodes");
if(!node)
{
if( ulog.is_crit() )
ulog.crit()<< "(Configuration): <nodes> section not found!"<< endl;
ucrit << "(Configuration): <nodes> section not found!"<< endl;
throw Exception("(Configiuration): <nodes> section not found");
}
......@@ -630,8 +615,7 @@ void Configuration::createNodesList()
string sname(getProp(it,"name"));
if(sname.empty())
{
if( ulog.is_crit() )
ulog.crit()<< "Configuration(createNodesList): unknown name='' in <nodes> "<< endl;
ucrit << "Configuration(createNodesList): unknown name='' in <nodes> "<< endl;
throw Exception("Configuration(createNodesList: unknown name='' in <nodes>");
}
......@@ -641,15 +625,13 @@ void Configuration::createNodesList()
nodename = oind->mkFullNodeName(nodename,nodename);
NodeInfo ninf;
// ulog.info() << "Configuration(createNodesList): вносим узел " << nodename << endl;
ninf.id = oind->getIdByName(nodename);
if( ninf.id == DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit()<< "Configuration(createNodesList): Not found ID for node '" << nodename << "'" << endl;
ucrit << "Configuration(createNodesList): Not found ID for node '" << nodename << "'" << endl;
throw Exception("Configuration(createNodesList): Not found ID for node '"+nodename+"'");
}
ninf.host = getProp(it,"ip").c_str();
string tp(getProp(it,"port"));
if( tp.empty() )
......@@ -658,7 +640,7 @@ void Configuration::createNodesList()
ninf.port = tp.c_str();
string tmp(it.getProp("dbserver"));
if( tmp.empty() )
ninf.dbserver = UniSetTypes::DefaultObjectId;
else
......@@ -667,8 +649,7 @@ void Configuration::createNodesList()
ninf.dbserver = oind->getIdByName(dname);
if( ninf.dbserver == DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit()<< "Configuration(createNodesList): Not found ID for DBServer name='" << dname << "'" << endl;
ucrit << "Configuration(createNodesList): Not found ID for DBServer name='" << dname << "'" << endl;
throw Exception("Configuration(createNodesList: Not found ID for DBServer name='"+dname+"'");
}
}
......@@ -677,16 +658,13 @@ void Configuration::createNodesList()
localDBServer = ninf.dbserver;
ninf.connected = false;
initNode(ninf, it);
if( ulog.is_info() )
ulog.info() << "Configuration(createNodesList): add to list of nodes: node=" << nodename << " id=" << ninf.id << endl;
initNode(ninf, it);
uinfo << "Configuration(createNodesList): add to list of nodes: node=" << nodename << " id=" << ninf.id << endl;
lnodes.push_back(ninf);
}
}
if( ulog.is_info() )
ulog.info() << "Configuration(createNodesList): size of node list " << lnodes.size() << endl;
uinfo << "Configuration(createNodesList): size of node list " << lnodes.size() << endl;
}
// -------------------------------------------------------------------------
void Configuration::initNode( UniSetTypes::NodeInfo& ninfo, UniXML_iterator& it )
......@@ -748,12 +726,12 @@ xmlNode* Configuration::initDebug( DebugStream& deb, const string& _debname )
if( !debug_file.empty() )
deb.logFile(debug_file);
}
// теперь смотрим командную строку
string log_in("--"+debname+"-log-in-file");
string add_level("--"+debname+"-add-levels");
string del_level("--"+debname+"-del-levels");
// смотрим командную строку
for (int i=1; i < (_argc - 1); i++)
{
......@@ -782,8 +760,7 @@ void Configuration::initRepSections()
{
ostringstream msg;
msg << "Configuration(initRepSections): Not found section <RootSection> in " << fileConfName;
if( ulog.is_crit() )
ulog.crit()<< msg.str() << endl;
ucrit << msg.str() << endl;
throw SystemError(msg.str());
}
......@@ -801,8 +778,7 @@ string Configuration::getRepSectionName( const string& sec, xmlNode* secnode )
{
ostringstream msg;
msg << "Configuration(initRepSections): Not found section '" << sec << "' in " << fileConfName;
if( ulog.is_crit() )
ulog.crit()<< msg.str() << endl;
ucrit << msg.str() << endl;
throw SystemError(msg.str());
}
......@@ -842,8 +818,7 @@ void Configuration::setConfFileName( const string& fn )
msg << "\n\n***** CRIT: Unknown configure file." << endl
<< " Use --confile filename " << endl
<< " OR define enviropment variable UNISET_CONFILE" << endl;
if( ulog.is_crit() )
ulog.crit()<< msg.str();
ucrit << msg.str();
throw SystemError(msg.str());
}
}
......@@ -874,7 +849,7 @@ ObjectId Configuration::getSensorID( const std::string& name )
{
if( name.empty() )
return DefaultObjectId;
return oind->getIdByName(getSensorsSection()+"/"+name);
}
// -------------------------------------------------------------------------
......@@ -960,7 +935,7 @@ xmlNode* Configuration::getXMLNodesSection()
{
if( xmlNodesSec )
return xmlNodesSec;
xmlNodesSec = unixml.findNode(unixml.getFirstNode(),"nodes");
return xmlNodesSec;
}
......
......@@ -50,7 +50,7 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
{
{ // lock
uniset_rwmutex_rlock lock(lstMutex);
if( tlst.empty() )
{
sleepTime = UniSetTimer::WaitUpTime;
......@@ -69,18 +69,18 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
return sleepTime;
}
}
{ // lock
uniset_rwmutex_wrlock lock(lstMutex);
sleepTime = UniSetTimer::WaitUpTime;
for( TimersList::iterator li=tlst.begin();li!=tlst.end();++li)
{
if( li->tmr.checkTime() )
{
{
// помещаем себе в очередь сообщение
TransportMessage tm = TimerMessage(li->id, li->priority, obj->getId()).transport_msg();
obj->push(tm);
// Проверка на количество заданных тактов
if( !li->curTick )
{
......@@ -102,19 +102,19 @@ timeout_t LT_Object::checkTimers( UniSetObject* obj )
// ищем минимальное оставшееся время
if( li->curTimeMS < sleepTime || sleepTime == UniSetTimer::WaitUpTime )
sleepTime = li->curTimeMS;
}
}
if( sleepTime < UniSetTimer::MinQuantityTime )
sleepTime=UniSetTimer::MinQuantityTime;
} // unlock
} // unlock
tmLast.reset();
}
catch(Exception& ex)
{
ulog.crit() << "(checkTimers): " << ex << endl;
ucrit << "(checkTimers): " << ex << endl;
}
return sleepTime;
}
// ------------------------------------------------------------------------------------------
......@@ -125,7 +125,7 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
{
if( timeMS < UniSetTimer::MinQuantityTime )
{
ulog.crit() << "(LT_askTimer): [мс] попытка заказть таймер со временем срабатыания "
ucrit << "(LT_askTimer): [мс] попытка заказть таймер со временем срабатыания "
<< " меньше разрешённого " << UniSetTimer::MinQuantityTime << endl;
timeMS = UniSetTimer::MinQuantityTime;
}
......@@ -141,11 +141,8 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
{
li->curTick = ticks;
li->tmr.setTiming(timeMS);
if( ulog.is_info() )
{
ulog.info() << "(LT_askTimer): заказ на таймер(id="
uinfo << "(LT_askTimer): заказ на таймер(id="
<< timerid << ") " << timeMS << " [мс] уже есть..." << endl;
}
return sleepTime;
}
}
......@@ -156,19 +153,17 @@ timeout_t LT_Object::askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, c
newti.reset();
} // unlock
if( ulog.is_info() )
ulog.info() << "(LT_askTimer): поступил заказ на таймер(id="<< timerid << ") " << timeMS << " [мс]\n";
uinfo << "(LT_askTimer): поступил заказ на таймер(id="<< timerid << ") " << timeMS << " [мс]\n";
}
else // отказ (при timeMS == 0)
{
if( ulog.is_info() )
ulog.info() << "(LT_askTimer): поступил отказ по таймеру id="<< timerid << endl;
uinfo << "(LT_askTimer): поступил отказ по таймеру id="<< timerid << endl;
{ // lock
uniset_rwmutex_wrlock lock(lstMutex);
tlst.remove_if(Timer_eq(timerid)); // STL - способ
} // unlock
}
{ // lock
uniset_rwmutex_rlock lock(lstMutex);
......
......@@ -42,7 +42,7 @@ uniset_mutex::uniset_mutex():
}
// -----------------------------------------------------------------------------
uniset_mutex::uniset_mutex( string name ):
cnd(0),
cnd(0),
nm(name),
locked(0)
{
......@@ -112,9 +112,9 @@ uniset_mutex_lock::uniset_mutex_lock( uniset_mutex& m, int timeMS ):
mutex->mtx.lock();
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;
}
......@@ -134,7 +134,7 @@ bool uniset_mutex_lock::lock_ok()
}
uniset_mutex_lock::~uniset_mutex_lock()
{
{
if( mlock )
{
mlock = 0;
......@@ -181,7 +181,7 @@ const uniset_rwmutex &uniset_rwmutex::operator=( const uniset_rwmutex& r )
nm = s.str();
unlock();
}
return *this;
}
......@@ -209,7 +209,7 @@ void uniset_rwmutex::wrlock()
void uniset_rwmutex::rlock()
{
MUTEX_DEBUG(cerr << nm << " prepare RLocked.." << endl;)
while( wr_wait > 0 )
msleep(2);
......
......@@ -42,6 +42,7 @@ c_filterValue("")
// -----------------------------------------------------------------------------
Restorer_XML::~Restorer_XML()
{
}
// -----------------------------------------------------------------------------
void Restorer_XML::setItemFilter( const string& field, const string& val )
......@@ -65,8 +66,7 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
string cname( it.getProp("name"));
if( cname.empty() )
{
if( ulog.is_warn() )
ulog.warn() << "(Restorer_XML:getConsumerInfo): не указано имя заказчика..." << endl;
uwarn << "(Restorer_XML:getConsumerInfo): не указано имя заказчика..." << endl;
return false;
}
......@@ -79,19 +79,15 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
cname = conf->getServicesSection()+"/"+cname;
else
{
if( ulog.is_warn() )
{
ulog.warn() << "(Restorer_XML:getConsumerInfo): неизвестный тип объекта "
uwarn << "(Restorer_XML:getConsumerInfo): неизвестный тип объекта "
<< otype << endl;
}
return false;
}
cid = conf->oind->getIdByName(cname);
if( cid == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР заказчика -->"
ucrit << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР заказчика -->"
<< cname << endl;
return false;
}
......@@ -110,17 +106,12 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
if( cnode == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла -->"
ucrit << "(Restorer_XML:getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла -->"
<< cnodename << endl;
return false;
}
if( ulog.is_info() )
{
ulog.info() << "(Restorer_XML:getConsumerInfo): "
<< cname << ":" << cnodename << endl;
}
uinfo << "(Restorer_XML:getConsumerInfo): " << cname << ":" << cnodename << endl;
return true;
}
// -----------------------------------------------------------------------------
......
......@@ -42,18 +42,18 @@ RunLock::~RunLock()
bool RunLock::isLocked(const string& name)
{
FILE *out = fopen( string(name + ".lock" ).c_str(), "r" );
if( out )
if( out )
{
char ptr[10];
fscanf( out, "%9s", ptr );
DIR *d = opendir( "/proc" );
dirent *dir;
while((dir = readdir(d)))
{
if( !strcmp( ptr, dir->d_name ) )
{
// по хорошему здесь надо бы проверять
// по хорошему здесь надо бы проверять
// статус на зомби
/*
string path(dir->d_name);
......@@ -70,20 +70,19 @@ bool RunLock::isLocked(const string& name)
break;
}
}
*/
if( ulog.is_info() )
ulog.info() << "(RunLock): programm " << name << " already run" << endl;
*/
uinfo << "(RunLock): programm " << name << " already run" << endl;
fclose(out);
closedir(d);
return true;
}
}
}
fclose(out);
closedir(d);
}
return false;
}
// --------------------------------------------------------------------------
......@@ -91,7 +90,7 @@ bool RunLock::lock( const string& name )
{
if( !isLocked(name) )
{
FILE *out = fopen( string(name + ".lock" ).c_str(), "w+" );
FILE *out = fopen( string(name + ".lock" ).c_str(), "w+" );
if(out)
{
fprintf( out, "%d\n", getpid() );
......@@ -99,14 +98,14 @@ bool RunLock::lock( const string& name )
return true;
}
}
return false;
}
// --------------------------------------------------------------------------
bool RunLock::unlock(const string& name)
{
string fname(name + ".lock");
FILE *out = fopen( fname.c_str(), "r" );
FILE *out = fopen( fname.c_str(), "r" );
if( out )
{
fclose(out);
......
......@@ -60,7 +60,6 @@ UniXML::UniXML():
UniXML::~UniXML()
{
//ulog.< "UniXML destr" << endl;
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