2 #ifndef ModbusTCPSession_H_
3 #define ModbusTCPSession_H_
7 #include <unordered_map>
9 #include "ModbusServerSlot.h"
10 #include "ModbusServer.h"
11 #include "PassiveTimer.h"
13 #include "UTCPStream.h"
39 ModbusTCPSession(
const Poco::Net::StreamSocket& s,
const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t timeout );
42 void cleanInputStream();
44 virtual void cleanupChannel()
override;
45 virtual void terminate()
override;
47 typedef sigc::slot<void, const ModbusTCPSession*> FinalSlot;
49 void connectFinalSession( FinalSlot sl );
51 inline std::string getClientAddress()
const
56 void setSessionTimeout(
double t );
59 void run( ev::loop_ref& loop );
61 virtual bool isActive()
const override;
63 void iowait( timeout_t msec );
67 virtual ModbusRTU::mbErrCode
realReceive(
const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout )
override;
69 void callback( ev::io& watcher,
int revents );
70 void onTimeout( ev::timer& watcher,
int revents );
71 virtual void readEvent( ev::io& watcher );
72 virtual void writeEvent( ev::io& watcher );
75 virtual size_t getNextData(
unsigned char* buf,
int len )
override;
77 virtual ModbusRTU::mbErrCode sendData(
unsigned char* buf,
int len )
override;
125 std::queue<unsigned char> qrecv;
126 std::unordered_set<ModbusRTU::ModbusAddr> vaddr;
129 timeout_t timeout = { 0 };
135 std::shared_ptr<UTCPStream> sock;
136 std::queue<UTCPCore::Buffer*> qsend;
137 double sessTimeout = { 10.0 };
139 bool ignoreAddr = {
false };
140 std::string peername = {
"" };
142 std::string caddr = {
"" };
146 std::atomic_bool cancelled = {
false };
153 #endif // ModbusTCPSession_H_
Пассивный таймер
Definition: PassiveTimer.h:90
virtual ModbusRTU::mbErrCode remoteService(ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply)
Definition: ModbusTCPSession.cc:561
Definition: ModbusTypes.h:1436
virtual ModbusRTU::mbErrCode readOutputRegisters(ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply)
Definition: ModbusTCPSession.cc:464
Definition: ModbusTypes.h:1013
Definition: CallbackTimer.h:29
Definition: ModbusTypes.h:1059
virtual ModbusRTU::mbErrCode readCoilStatus(ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply)
Definition: ModbusTCPSession.cc:443
Definition: ModbusTypes.h:824
Definition: ModbusTypes.h:1469
virtual ModbusRTU::mbErrCode setDateTime(ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply)
Definition: ModbusTCPSession.cc:552
virtual ModbusRTU::mbErrCode journalCommand(ModbusRTU::JournalCommandMessage &query, ModbusRTU::JournalCommandRetMessage &reply)
Definition: ModbusTCPSession.cc:543
Definition: ModbusTypes.h:325
Definition: ModbusTypes.h:784
virtual ModbusRTU::mbErrCode readInputRegisters(ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply)
Definition: ModbusTCPSession.cc:474
Definition: ModbusTypes.h:878
Definition: ModbusTypes.h:1555
Definition: ModbusTypes.h:1098
Definition: ModbusTypes.h:1168
Definition: ModbusTypes.h:1583
Definition: ModbusTypes.h:968
Definition: ModbusTypes.h:1156
Definition: ModbusTypes.h:356
Definition: ModbusTypes.h:1223
The ModbusTCPSession class Класс рассчитан на совместную работу с ModbusTCPServer, т.к. построен на основе libev, и главный цикл (default_loop) находиться там.
Definition: ModbusTCPSession.h:33
virtual ModbusRTU::mbErrCode fileTransfer(ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply)
Definition: ModbusTCPSession.cc:570
virtual ModbusRTU::mbErrCode read4314(ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply)
Definition: ModbusTCPSession.cc:514
Definition: ModbusTypes.h:705
Definition: ModbusServer.h:33
virtual ModbusRTU::mbErrCode writeOutputRegisters(ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply)
Definition: ModbusTCPSession.cc:495
Definition: ModbusTypes.h:1290
virtual ModbusRTU::mbErrCode forceMultipleCoils(ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply)
Definition: ModbusTCPSession.cc:484
Definition: ModbusTypes.h:555
virtual size_t getNextData(unsigned char *buf, int len) override
Definition: ModbusTCPSession.cc:294
Definition: ModbusTypes.h:190
virtual ModbusRTU::mbErrCode writeOutputSingleRegister(ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply)
Definition: ModbusTCPSession.cc:533
virtual ModbusRTU::mbErrCode readInputStatus(ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply)
Definition: ModbusTCPSession.cc:453
Definition: ModbusTypes.h:526
Definition: ModbusTypes.h:1378
virtual ModbusRTU::mbErrCode forceSingleCoil(ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply)
Definition: ModbusTCPSession.cc:523
Definition: ModbusTypes.h:917
Definition: ModbusTypes.h:1416
virtual void setChannelTimeout(timeout_t msec)
Definition: ModbusTCPSession.cc:579
virtual ModbusRTU::mbErrCode diagnostics(ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply)
Definition: ModbusTCPSession.cc:505
virtual ModbusRTU::mbErrCode realReceive(const std::unordered_set< ModbusRTU::ModbusAddr > &vmbaddr, timeout_t msecTimeout) override
Definition: ModbusTCPSession.cc:206
Definition: ModbusTypes.h:1313
Definition: ModbusServerSlot.h:13