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

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

 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 ()

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

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

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

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

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

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


Методы

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

virtual size_t uniset::ModbusTCPServer::getNextData ( unsigned char *  buf,
int  len 
) [inline, override, protected, virtual]

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 
) [override, protected, virtual]

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

Замещает 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) [inline, override, protected, virtual]

set timeout for receive data

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

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