Commit b93be6d3 authored by Pavel Vainerman's avatar Pavel Vainerman

(MOdbusTCPMaster): небольшая оптимизация на вызов setKeepAlive()

parent 30f4fa70
...@@ -65,6 +65,7 @@ class ModbusTCPMaster: ...@@ -65,6 +65,7 @@ class ModbusTCPMaster:
std::string iaddr = { "" }; std::string iaddr = { "" };
int port = { 0 }; int port = { 0 };
bool force_disconnect = { false }; bool force_disconnect = { false };
int keepAliveTimeout = { 1000 };
}; };
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
#endif // ModbusTCPMaster_H_ #endif // ModbusTCPMaster_H_
......
...@@ -65,7 +65,14 @@ void ModbusTCPMaster::setChannelTimeout( timeout_t msec ) ...@@ -65,7 +65,14 @@ void ModbusTCPMaster::setChannelTimeout( timeout_t msec )
return; return;
tcp->setTimeout(msec); tcp->setTimeout(msec);
tcp->setKeepAliveParams((msec > 1000 ? msec / 1000 : 1));
int oldKeepAlive = keepAliveTimeout;
keepAliveTimeout = (msec > 1000 ? msec / 1000 : 1);
// т.к. каждый раз не вызывать дорогой системный вызов
// смотрим меняется ли значение
if( oldKeepAlive != keepAliveTimeout )
tcp->setKeepAliveParams(keepAliveTimeout);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
mbErrCode ModbusTCPMaster::sendData( unsigned char* buf, size_t len ) mbErrCode ModbusTCPMaster::sendData( unsigned char* buf, size_t len )
...@@ -118,7 +125,6 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg, ...@@ -118,7 +125,6 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
if( res != erNoError ) if( res != erNoError )
return res; return res;
if( tcp->isPending(ost::Socket::pendingOutput, timeout) )
break; break;
} }
......
...@@ -508,6 +508,7 @@ Utilities/codegen/skel.src.xml ...@@ -508,6 +508,7 @@ Utilities/codegen/skel.src.xml
Utilities/MBTester/Makefile.am Utilities/MBTester/Makefile.am
Utilities/MBTester/mbrtuslave.cc Utilities/MBTester/mbrtuslave.cc
Utilities/MBTester/mbrtutester.cc Utilities/MBTester/mbrtutester.cc
Utilities/MBTester/mbtcptester.cc
Utilities/MBTester/MBSlave.cc Utilities/MBTester/MBSlave.cc
Utilities/MBTester/mbslave.cc Utilities/MBTester/mbslave.cc
Utilities/MBTester/MBSlave.h Utilities/MBTester/MBSlave.h
......
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