UniSet  2.6.0
Классы | Открытые типы | Открытые члены | Защищенные типы | Защищенные члены | Защищенные данные | Полный список членов класса
Класс uniset::ModbusTCPServer
Граф наследования:uniset::ModbusTCPServer:
Inheritance graph
[см. легенду]
Граф связей класса uniset::ModbusTCPServer:
Collaboration graph
[см. легенду]

Классы

struct  SessionInfo

Открытые типы

typedef std::list< SessionInfoSessions
typedef sigc::signal< void > TimerSignal
- Открытые типы inherited from uniset::ModbusServer
typedef sigc::signal
< ModbusRTU::mbErrCode, const
std::unordered_set
< ModbusRTU::ModbusAddr >
, timeout_t > 
PreReceiveSignal
typedef sigc::signal< void,
ModbusRTU::mbErrCode > 
PostReceiveSignal
typedef std::unordered_map
< ModbusRTU::mbErrCode, size_t > 
ExchangeErrorMap

Открытые члены

 ModbusTCPServer (const std::string &addr, int port=502)
void run (const std::unordered_set< ModbusRTU::ModbusAddr > &vmbaddr, bool thread=false)
virtual bool isActive () const override
void setMaxSessions (size_t num)
size_t getMaxSessions ()
void setSessionTimeout (timeout_t msec)
timeout_t getSessionTimeout ()
size_t getCountSessions ()
void setIgnoreAddrMode (bool st)
bool getIgnoreAddrMode ()
virtual void terminate ()
void getSessions (Sessions &lst)
std::string getInetAddress ()
int getInetPort ()
TimerSignal signal_timer ()
void setTimer (timeout_t msec)
timeout_t getTimer ()
- Открытые члены inherited from uniset::EventLoopServer
bool evIsActive () const noexcept
- Открытые члены inherited from uniset::ModbusServer
void initLog (uniset::Configuration *conf, const std::string &name, const std::string &logfile="")
void setLog (std::shared_ptr< DebugStream > dlog)
std::shared_ptr< DebugStreamlog ()
ModbusRTU::mbErrCode receive (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, timeout_t msecTimeout)
virtual ModbusRTU::mbErrCode receive_one (const ModbusRTU::ModbusAddr addr, timeout_t msec)
PreReceiveSignal signal_pre_receive ()
PostReceiveSignal signal_post_receive ()
timeout_t setAfterSendPause (timeout_t msec)
timeout_t setReplyTimeout (timeout_t msec)
void setRecvTimeout (timeout_t msec)
void setSleepPause (timeout_t msec)
void setCRCNoCheckit (bool set)
bool isCRCNoCheckit () const
void setBroadcastMode (bool set)
bool getBroadcastMode () const
void setCleanBeforeSend (bool set)
bool getCleanBeforeSend ()
virtual void cleanupChannel ()
ExchangeErrorMap getErrorMap ()
size_t getErrCount (ModbusRTU::mbErrCode e)
size_t resetErrCount (ModbusRTU::mbErrCode e, size_t set=0)
size_t getAskCount () const
void resetAskCounter ()

Защищенные типы

typedef std::list
< std::shared_ptr
< ModbusTCPSession > > 
SessionList

Защищенные члены

virtual void iowait (timeout_t msec) override
virtual ModbusRTU::mbErrCode realReceive (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, timeout_t msecTimeout) override
virtual void evprepare () override
virtual void evfinish () override
virtual void ioAccept (ev::io &watcher, int revents)
void onTimer (ev::timer &t, int revents)
void sessionFinished (const ModbusTCPSession *s)
virtual size_t getNextData (unsigned char *buf, int len) override
virtual ModbusRTU::mbErrCode sendData (unsigned char *buf, int len) override
virtual void setChannelTimeout (timeout_t msec) override
- Защищенные члены inherited from uniset::EventLoopServer
void evrun (bool thread=true)
void evstop ()
- Защищенные члены inherited from uniset::ModbusServer
virtual ModbusRTU::mbErrCode readCoilStatus (ModbusRTU::ReadCoilMessage &query, ModbusRTU::ReadCoilRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readInputStatus (ModbusRTU::ReadInputStatusMessage &query, ModbusRTU::ReadInputStatusRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readOutputRegisters (ModbusRTU::ReadOutputMessage &query, ModbusRTU::ReadOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode readInputRegisters (ModbusRTU::ReadInputMessage &query, ModbusRTU::ReadInputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode forceSingleCoil (ModbusRTU::ForceSingleCoilMessage &query, ModbusRTU::ForceSingleCoilRetMessage &reply)=0
virtual ModbusRTU::mbErrCode writeOutputSingleRegister (ModbusRTU::WriteSingleOutputMessage &query, ModbusRTU::WriteSingleOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode forceMultipleCoils (ModbusRTU::ForceCoilsMessage &query, ModbusRTU::ForceCoilsRetMessage &reply)=0
virtual ModbusRTU::mbErrCode writeOutputRegisters (ModbusRTU::WriteOutputMessage &query, ModbusRTU::WriteOutputRetMessage &reply)=0
virtual ModbusRTU::mbErrCode diagnostics (ModbusRTU::DiagnosticMessage &query, ModbusRTU::DiagnosticRetMessage &reply)=0
virtual ModbusRTU::mbErrCode read4314 (ModbusRTU::MEIMessageRDI &query, ModbusRTU::MEIMessageRetRDI &reply)=0
virtual ModbusRTU::mbErrCode journalCommand (ModbusRTU::JournalCommandMessage &query, ModbusRTU::JournalCommandRetMessage &reply)=0
virtual ModbusRTU::mbErrCode setDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply)=0
virtual ModbusRTU::mbErrCode remoteService (ModbusRTU::RemoteServiceMessage &query, ModbusRTU::RemoteServiceRetMessage &reply)=0
virtual ModbusRTU::mbErrCode fileTransfer (ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply)=0
virtual ModbusRTU::mbErrCode send (ModbusRTU::ModbusMessage &buf)
virtual ModbusRTU::mbErrCode make_adu_header (ModbusRTU::ModbusMessage &request)
virtual ModbusRTU::mbErrCode post_send_request (ModbusRTU::ModbusMessage &request)
virtual ModbusRTU::mbErrCode processing (ModbusRTU::ModbusMessage &buf)
ModbusRTU::mbErrCode recv (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, ModbusRTU::ModbusMessage &buf, timeout_t timeout)
ModbusRTU::mbErrCode recv_pdu (ModbusRTU::ModbusMessage &rbuf, timeout_t timeout)
void printProcessingTime ()

Защищенные данные

int port = { 0 }
std::string iaddr
std::string myname
std::queue< unsigned char > qrecv
ModbusRTU::ADUHeader curQueryHeader
std::mutex sMutex
SessionList slist
bool ignoreAddr = { false }
size_t maxSessions = { 100 }
size_t sessCount = { 0 }
timeout_t sessTimeout = { 10000 }
ev::io io
ev::timer ioTimer
std::shared_ptr< UTCPSocketsock
const std::unordered_set
< ModbusRTU::ModbusAddr > * 
vmbaddr = { nullptr }
TimerSignal m_timer_signal
timeout_t tmTime_msec = { UniSetTimer::WaitUpTime }
double tmTime = { 0.0 }
PassiveTimer ptWait
- Защищенные данные inherited from uniset::EventLoopServer
ev::dynamic_loop loop
- Защищенные данные inherited from uniset::ModbusServer
std::timed_mutex recvMutex
timeout_t recvTimeOut_ms = { 50 }
timeout_t replyTimeout_ms = { 2000 }
timeout_t aftersend_msec = { 0 }
timeout_t sleepPause_msec = { 10 }
bool onBroadcast = { false }
bool crcNoCheckit = { false }
bool cleanBeforeSend = { false }
PassiveTimer tmProcessing
std::shared_ptr< DebugStreamdlog
size_t askCount = { 0 }
ExchangeErrorMap errmap
PreReceiveSignal m_pre_signal
PostReceiveSignal m_post_signal

Additional Inherited Members

- Открытые статические члены inherited from uniset::ModbusServer
static std::unordered_set
< ModbusRTU::ModbusAddr > 
addr2vaddr (ModbusRTU::ModbusAddr &mbaddr)
static bool checkAddr (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr, const ModbusRTU::ModbusAddr addr)
static std::string vaddr2str (const std::unordered_set< ModbusRTU::ModbusAddr > &vaddr)
static ModbusRTU::mbErrCode replySetDateTime (ModbusRTU::SetDateTimeMessage &query, ModbusRTU::SetDateTimeRetMessage &reply, std::shared_ptr< DebugStream > dlog=nullptr)
static ModbusRTU::mbErrCode replyFileTransfer (const std::string &fname, ModbusRTU::FileTransferMessage &query, ModbusRTU::FileTransferRetMessage &reply, std::shared_ptr< DebugStream > dlog=nullptr)

Подробное описание

ModbusTCPServer Реализация сервера на основе libev. Подерживается "много" соединений (постоянных). Хоть класс и наследуется от ModbusServer на самом деле он не реализует его функции, каждое соединение обслуживается классом ModbusTCPSession. Но собственно реализаия функций одна на всех, это следует учитывать при реализации обработчиков, т.к.из многих "соединений" будут вызываться одни и теже обработатчики.

Методы

size_t uniset::ModbusTCPServer::getCountSessions ( )

текущее количество подключений

virtual size_t uniset::ModbusTCPServer::getNextData ( unsigned char *  buf,
int  len 
)
inlineoverrideprotectedvirtual

get next data block from channel or recv buffer

Аргументы
begin- get from position
buf- buffer for data
len- size of buf
Возвращает
real data lenght ( must be <= len )

Замещает uniset::ModbusServer.

mbErrCode uniset::ModbusTCPServer::realReceive ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vaddr,
timeout_t  msecTimeout 
)
overrideprotectedvirtual

реализация получения очередного сообщения

Замещает uniset::ModbusServer.

void uniset::ModbusTCPServer::run ( const std::unordered_set< ModbusRTU::ModbusAddr > &  vmbaddr,
bool  thread = false 
)

Запуск сервера

Аргументы
thread- создавать ли отдельный поток
virtual void uniset::ModbusTCPServer::setChannelTimeout ( timeout_t  msec)
inlineoverrideprotectedvirtual

set timeout for receive data

Замещает uniset::ModbusServer.

void uniset::ModbusTCPServer::setSessionTimeout ( timeout_t  msec)

установить timeout для поддержания соединения с "клиентом" (Default: 10 сек)