|
UniSet
2.6.0
|
Классы | |
| struct | SessionInfo |
Открытые типы | |
| typedef std::list< SessionInfo > | Sessions |
| 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< UTCPSocket > | sock |
|
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. Но собственно реализаия функций одна на всех, это следует учитывать при реализации обработчиков, т.к.из многих "соединений" будут вызываться одни и теже обработатчики.
| size_t uniset::ModbusTCPServer::getCountSessions | ( | ) |
текущее количество подключений
| 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 |
Замещает 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.
| void uniset::ModbusTCPServer::setSessionTimeout | ( | timeout_t | msec | ) |
установить timeout для поддержания соединения с "клиентом" (Default: 10 сек)
1.7.6.1