Commit 6c6012c9 authored by Pavel Vainerman's avatar Pavel Vainerman

(MBSlave): добавил вывод в лог сообщения с ошибкой при неудачном запуске

процесса (не удалось открыть сокет например). setbug #10711
parent 571a1c02
......@@ -180,6 +180,11 @@ MBSlave::MBSlave(UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, const
ostringstream n;
n << prefix << "-exchangelog";
auto l = loga->create(n.str());
if( mblog->is_crit() )
l->addLevel(Debug::CRIT);
if( mblog->is_warn() )
l->addLevel(Debug::WARN);
rs->setLog(l);
conf->initLogStream(l, prefix + "-exchangelog");
}
......@@ -196,7 +201,6 @@ MBSlave::MBSlave(UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, const
ost::InetAddress ia(iaddr.c_str());
tcpserver = make_shared<ModbusTCPServerSlot>(ia, port);
tcpserver->setAfterSendPause(aftersend_pause);
tcpserver->setReplyTimeout(reply_tout);
......@@ -208,6 +212,12 @@ MBSlave::MBSlave(UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, const
ostringstream n;
n << prefix << "-exchangelog";
auto l = loga->create(n.str());
if( mblog->is_crit() )
l->addLevel(Debug::CRIT);
if( mblog->is_warn() )
l->addLevel(Debug::WARN);
tcpserver->setLog(l);
conf->initLogStream(l, prefix + "-exchangelog");
......@@ -619,7 +629,42 @@ void MBSlave::execute_tcp()
tcpCancelled = false;
tcpserver->run( vaddr, true );
ost::Thread::setException(ost::Thread::throwException);
try
{
tcpserver->run( vaddr, true );
}
catch( ModbusRTU::mbException& ex )
{
mbcrit << myname << "(execute_tcp): catch excaption: "
<< tcpserver->getInetAddress()
<< ":" << tcpserver->getInetPort() << " err: " << ex << endl;
throw ex;
}
catch( const ost::Exception& e )
{
mbcrit << myname << "(execute_tcp): Can`t create socket "
<< tcpserver->getInetAddress()
<< ":" << tcpserver->getInetPort()
<< " err: " << e.getString() << endl;
throw e;
}
catch( const std::exception& e )
{
mbcrit << myname << "(execute_tcp): Can`t create socket "
<< tcpserver->getInetAddress()
<< ":" << tcpserver->getInetPort()
<< " err: " << e.what() << endl;
throw e;
}
catch(...)
{
mbcrit << myname << "(execute_tcp): catch exception ... ("
<< tcpserver->getInetAddress()
<< ":" << tcpserver->getInetPort()
<< endl;
throw;
}
// tcpCancelled = true;
// mbinfo << myname << "(execute_tcp): tcpserver stopped.." << endl;
......@@ -1948,7 +1993,7 @@ ModbusRTU::mbErrCode MBSlave::much_real_read(RegMap& rmap, const ModbusRTU::Modb
int mbfunc = checkMBFunc ? fn : default_mbfunc;
ModbusRTU::RegID regID = genRegID(reg, mbfunc);
// ищем регистр.. "пропуская дырки"..
// ищем первый регистр из запроса... пропуская несуществующие..
// ведь запросить могут начиная с "несуществующего регистра"
for( ; i < count; i++ )
{
......
......@@ -90,6 +90,7 @@ bool ModbusTCPServer::isActive() const
// -------------------------------------------------------------------------
void ModbusTCPServer::evprepare()
{
ost::Thread::setException(ost::Thread::throwException);
try
{
sock = make_shared<UTCPSocket>(iaddr, port);
......@@ -97,7 +98,14 @@ void ModbusTCPServer::evprepare()
catch( const ost::SockException& ex )
{
ostringstream err;
err << "(ModbusTCPServer::mainLoop): connect " << iaddr << ":" << port << " err: " << ex.what();
err << "(ModbusTCPServer::evprepare): connect " << iaddr << ":" << port << " err: " << ex.what();
dlog->crit() << err.str() << endl;
throw SystemError(err.str());
}
catch( const std::exception& ex )
{
ostringstream err;
err << "(ModbusTCPServer::evprepare): connect " << iaddr << ":" << port << " err: " << ex.what();
dlog->crit() << err.str() << endl;
throw SystemError(err.str());
}
......
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