diff options
Diffstat (limited to 'src/serialbus/qmodbustcpserver.cpp')
-rw-r--r-- | src/serialbus/qmodbustcpserver.cpp | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/src/serialbus/qmodbustcpserver.cpp b/src/serialbus/qmodbustcpserver.cpp index 39aeda8..3a15e9e 100644 --- a/src/serialbus/qmodbustcpserver.cpp +++ b/src/serialbus/qmodbustcpserver.cpp @@ -110,7 +110,7 @@ bool QModbusTcpServer::open() return false; } - if (d->m_tcpServer->listen(QHostAddress(url.host()), url.port())) + if (d->m_tcpServer->listen(QHostAddress(url.host()), quint16(url.port()))) setState(QModbusDevice::ConnectedState); else setError(d->m_tcpServer->errorString(), QModbusDevice::ConnectionError); @@ -171,4 +171,66 @@ QModbusResponse QModbusTcpServer::processRequest(const QModbusPdu &request) return QModbusServer::processRequest(request); } +/*! + Installs an \a observer that can be used to obtain notifications when a + new TCP client connects to this server instance. In addition, the \a observer + can be used to reject the incoming TCP connection. + + QModbusTcpServer takes ownership of the given \a observer. Any previously set + observer will be deleted. The observer can be uninstalled by calling this + function with \c nullptr as parameter. + + \sa QModbusTcpConnectionObserver + \since 5.13 +*/ +void QModbusTcpServer::installConnectionObserver(QModbusTcpConnectionObserver *observer) +{ + Q_D(QModbusTcpServer); + + d->m_observer.reset(observer); +} + +/*! + \class QModbusTcpConnectionObserver + \inmodule QtSerialBus + \since 5.13 + + \brief The QModbusTcpConnectionObserver class represents the interface for + objects that can be passed to \l QModbusTcpServer::installConnectionObserver. + + The interface must be implemented by the developer to be able to monitor + every incoming TCP connection from another Modbus client. + + \sa QModbusTcpServer::installConnectionObserver +*/ + +QModbusTcpConnectionObserver::~QModbusTcpConnectionObserver() +{ +} + +/*! + \fn bool QModbusTcpConnectionObserver::acceptNewConnection(QTcpSocket *newClient) + + This function is a callback for every incoming TCP connection. The user should + provide \a newClient to receive a notification when a new client connection + is established and to determine whether the connection is to be accepted. + + The function should return \c true if the connection is to be accepted. Otherwise, + the socket is closed/rejected. +*/ + +/*! + \fn void QModbusTcpServer::modbusClientDisconnected(QTcpSocket *modbusClient) + + This signal is emitted when a current TCP based \a modbusClient disconnects + from this Modbus TCP server. Note that there might be several TCP clients + connected at the same time. + + Notifications on incoming new connections can be received by installing a + QModbusTcpConnectionObserver via \l installConnectionObserver(). + + \sa installConnectionObserver + \since 5.13 +*/ + QT_END_NAMESPACE |