quint16 port;
QHostAddress address;
- QAbstractSocket::SocketState state;
QAbstractSocketEngine *socketEngine;
- QAbstractSocket::SocketError serverSocketError;
- QString serverSocketErrorString;
-
int maxConnections;
// from QAbstractSocketEngineReceiver
*/
QTcpServerPrivate::QTcpServerPrivate()
: port(0),
- state(QAbstractSocket::UnconnectedState),
socketEngine(nullptr),
- serverSocketError(QAbstractSocket::UnknownSocketError),
maxConnections(30)
{
}
bool QTcpServer::listen(const QHostAddress &address, quint16 port)
{
Q_D(QTcpServer);
- if (Q_UNLIKELY(d->state == QAbstractSocket::ListeningState)) {
+ if (Q_UNLIKELY(isListening())) {
qWarning("QTcpServer::listen() called when already listening");
return false;
}
delete d->socketEngine;
d->socketEngine = new QAbstractSocketEngine(this);
if (!d->socketEngine->initialize(QAbstractSocket::TcpSocket, address.protocol())) {
- d->serverSocketError = d->socketEngine->error();
- d->serverSocketErrorString = d->socketEngine->errorString();
return false;
}
d->socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1);
if (!d->socketEngine->bind(address, port)) {
- d->serverSocketError = d->socketEngine->error();
- d->serverSocketErrorString = d->socketEngine->errorString();
return false;
}
if (!d->socketEngine->listen()) {
- d->serverSocketError = d->socketEngine->error();
- d->serverSocketErrorString = d->socketEngine->errorString();
return false;
}
d->socketEngine->setReceiver(d);
d->socketEngine->setReadNotificationEnabled(true);
- d->state = QAbstractSocket::ListeningState;
d->address = d->socketEngine->localAddress();
d->port = d->socketEngine->localPort();
d->socketEngine->deleteLater();
d->socketEngine = 0;
}
-
- d->state = QAbstractSocket::UnconnectedState;
}
/*!
delete d->socketEngine;
d->socketEngine = new QAbstractSocketEngine(this);
if (!d->socketEngine->initialize(socketDescriptor, QAbstractSocket::ListeningState)) {
- d->serverSocketError = d->socketEngine->error();
- d->serverSocketErrorString = d->socketEngine->errorString();
#if defined (QTCPSERVER_DEBUG)
qDebug("QTcpServer::setSocketDescriptor(%i) failed (%s)", socketDescriptor,
- d->serverSocketErrorString.toLatin1().constData());
+ d->socketEngine->errorString().toLatin1().constData());
#endif
return false;
}
d->socketEngine->setReceiver(d);
d->socketEngine->setReadNotificationEnabled(true);
- d->state = d->socketEngine->state();
d->address = d->socketEngine->localAddress();
d->port = d->socketEngine->localPort();
bool QTcpServer::waitForNewConnection(int msec, bool *timedOut)
{
Q_D(QTcpServer);
- if (d->state != QAbstractSocket::ListeningState)
+ if (!isListening())
return false;
if (!d->socketEngine->waitForRead(msec, timedOut)) {
- d->serverSocketError = d->socketEngine->error();
- d->serverSocketErrorString = d->socketEngine->errorString();
return false;
}
*/
QAbstractSocket::SocketError QTcpServer::serverError() const
{
- return d_func()->serverSocketError;
+ Q_D(const QTcpServer);
+ Q_CHECK_SOCKETENGINE(QAbstractSocket::UnknownSocketError);
+ return d_func()->socketEngine->error();
}
/*!
*/
QString QTcpServer::errorString() const
{
- return d_func()->serverSocketErrorString;
+ Q_D(const QTcpServer);
+ Q_CHECK_SOCKETENGINE(tr("Unknown error"));
+ return d->socketEngine->errorString();
}
QT_END_NAMESPACE