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 std::string getClientAddress()
const;
53 void setSessionTimeout(
double t );
56 void run( ev::loop_ref& loop );
58 virtual bool isActive()
const override;
62 virtual void iowait( timeout_t msec )
override;
64 virtual ModbusRTU::mbErrCode
realReceive(
const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout )
override;
66 void callback( ev::io& watcher,
int revents );
67 void onTimeout( ev::timer& watcher,
int revents );
68 virtual void readEvent( ev::io& watcher );
69 virtual void writeEvent( ev::io& watcher );
72 virtual size_t getNextData(
unsigned char* buf,
int len )
override;
74 virtual ModbusRTU::mbErrCode sendData(
unsigned char* buf,
int len )
override;
122 std::queue<unsigned char> qrecv;
123 std::unordered_set<ModbusRTU::ModbusAddr> vaddr;
126 timeout_t timeout = { 0 };
132 std::shared_ptr<UTCPStream> sock;
133 std::queue<UTCPCore::Buffer*> qsend;
134 double sessTimeout = { 10.0 };
136 bool ignoreAddr = {
false };
137 std::string peername = {
"" };
139 std::string caddr = {
"" };
143 std::atomic_bool cancelled = {
false };
Definition ModbusServer.h:33
Definition ModbusServerSlot.h:14
The ModbusTCPSession class Класс рассчитан на совместную работу с ModbusTCPServer,...
Definition ModbusTCPSession.h:36
virtual ModbusRTU::mbErrCode readInputStatus(const ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply) override
Definition ModbusTCPSession.cc:453
virtual ModbusRTU::mbErrCode fileTransfer(const ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply) override
Definition ModbusTCPSession.cc:570
virtual ModbusRTU::mbErrCode writeOutputSingleRegister(const ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply) override
Definition ModbusTCPSession.cc:533
virtual ModbusRTU::mbErrCode realReceive(const std::unordered_set< ModbusRTU::ModbusAddr > &vmbaddr, timeout_t msecTimeout) override
Definition ModbusTCPSession.cc:211
virtual ModbusRTU::mbErrCode read4314(const ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply) override
Definition ModbusTCPSession.cc:514
virtual ModbusRTU::mbErrCode readCoilStatus(const ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply) override
Definition ModbusTCPSession.cc:443
virtual ModbusRTU::mbErrCode readInputRegisters(const ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply) override
Definition ModbusTCPSession.cc:474
virtual ModbusRTU::mbErrCode forceMultipleCoils(const ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply) override
Definition ModbusTCPSession.cc:484
virtual ModbusRTU::mbErrCode setDateTime(const ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply) override
Definition ModbusTCPSession.cc:552
virtual ModbusRTU::mbErrCode journalCommand(const ModbusRTU::JournalCommandMessage &query, ModbusRTU::JournalCommandRetMessage &reply) override
Definition ModbusTCPSession.cc:543
virtual size_t getNextData(unsigned char *buf, int len) override
Definition ModbusTCPSession.cc:298
virtual ModbusRTU::mbErrCode forceSingleCoil(const ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply) override
Definition ModbusTCPSession.cc:523
virtual ModbusRTU::mbErrCode writeOutputRegisters(const ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply) override
Definition ModbusTCPSession.cc:495
virtual void setChannelTimeout(timeout_t msec) override
Definition ModbusTCPSession.cc:579
virtual ModbusRTU::mbErrCode readOutputRegisters(const ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply) override
Definition ModbusTCPSession.cc:464
virtual ModbusRTU::mbErrCode diagnostics(const ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply) override
Definition ModbusTCPSession.cc:505
virtual ModbusRTU::mbErrCode remoteService(const ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply) override
Definition ModbusTCPSession.cc:561
Пассивный таймер
Definition PassiveTimer.h:94
Definition AccessConfig.h:30
Definition ModbusTypes.h:1176
Definition ModbusTypes.h:1238
Definition ModbusTypes.h:1665
Definition ModbusTypes.h:1698
Definition ModbusTypes.h:764
Definition ModbusTypes.h:842
Definition ModbusTypes.h:984
Definition ModbusTypes.h:1037
Definition ModbusTypes.h:1380
Definition ModbusTypes.h:1405
Definition ModbusTypes.h:1250
Definition ModbusTypes.h:1310
Definition ModbusTypes.h:211
Definition ModbusTypes.h:422
Definition ModbusTypes.h:458
Definition ModbusTypes.h:569
Definition ModbusTypes.h:602
Definition ModbusTypes.h:1538
Definition ModbusTypes.h:1573
Definition ModbusTypes.h:1474
Definition ModbusTypes.h:1515
Definition ModbusTypes.h:886
Definition ModbusTypes.h:941
Definition ModbusTypes.h:1085
Definition ModbusTypes.h:1133