From 70e3935c38c077e35629a6651479a8a9f9e9f528 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Fri, 16 Jan 2015 16:46:03 +0200 Subject: QTcpServerPrivate: move class definition to the separate header This allows further QTcpServer inheritance in library. Also, add protected c'tor for this purpose. Change-Id: I1a5c0cdedd64bcd41b028e09d7752248506296c7 Reviewed-by: Thiago Macieira --- src/network/socket/qtcpserver.cpp | 47 ++++------------- src/network/socket/qtcpserver.h | 2 + src/network/socket/qtcpserver_p.h | 105 ++++++++++++++++++++++++++++++++++++++ src/network/socket/socket.pri | 3 +- 4 files changed, 118 insertions(+), 39 deletions(-) create mode 100644 src/network/socket/qtcpserver_p.h (limited to 'src/network') diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index abb00ed9db..dd916ad5c0 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -92,7 +92,8 @@ */ #include "qtcpserver.h" -#include "private/qobject_p.h" +#include "qtcpserver_p.h" + #include "qalgorithms.h" #include "qhostaddress.h" #include "qlist.h" @@ -108,43 +109,6 @@ QT_BEGIN_NAMESPACE return returnValue; \ } } while (0) -class QTcpServerPrivate : public QObjectPrivate, public QAbstractSocketEngineReceiver -{ - Q_DECLARE_PUBLIC(QTcpServer) -public: - QTcpServerPrivate(); - ~QTcpServerPrivate(); - - QList pendingConnections; - - quint16 port; - QHostAddress address; - - QAbstractSocket::SocketState state; - QAbstractSocketEngine *socketEngine; - - QAbstractSocket::SocketError serverSocketError; - QString serverSocketErrorString; - - int maxConnections; - -#ifndef QT_NO_NETWORKPROXY - QNetworkProxy proxy; - QNetworkProxy resolveProxy(const QHostAddress &address, quint16 port); -#endif - - // from QAbstractSocketEngineReceiver - void readNotification() Q_DECL_OVERRIDE; - void closeNotification() Q_DECL_OVERRIDE { readNotification(); } - inline void writeNotification() {} - inline void exceptionNotification() {} - inline void connectionNotification() {} -#ifndef QT_NO_NETWORKPROXY - inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *) {} -#endif - -}; - /*! \internal */ QTcpServerPrivate::QTcpServerPrivate() @@ -257,6 +221,13 @@ QTcpServer::~QTcpServer() close(); } +/*! \internal +*/ +QTcpServer::QTcpServer(QTcpServerPrivate &dd, QObject *parent) + : QObject(dd, parent) +{ +} + /*! Tells the server to listen for incoming connections on address \a address and port \a port. If \a port is 0, a port is chosen diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h index 2098a3b97d..1c66326660 100644 --- a/src/network/socket/qtcpserver.h +++ b/src/network/socket/qtcpserver.h @@ -87,6 +87,8 @@ protected: virtual void incomingConnection(qintptr handle); void addPendingConnection(QTcpSocket* socket); + QTcpServer(QTcpServerPrivate &dd, QObject *parent = 0); + Q_SIGNALS: void newConnection(); void acceptError(QAbstractSocket::SocketError socketError); diff --git a/src/network/socket/qtcpserver_p.h b/src/network/socket/qtcpserver_p.h new file mode 100644 index 0000000000..3c46cec9c4 --- /dev/null +++ b/src/network/socket/qtcpserver_p.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTCPSERVER_P_H +#define QTCPSERVER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include "QtNetwork/qtcpserver.h" +#include "private/qobject_p.h" +#include "private/qabstractsocketengine_p.h" +#include "QtNetwork/qabstractsocket.h" +#include "qnetworkproxy.h" +#include "QtCore/qlist.h" +#include "qhostaddress.h" + +QT_BEGIN_NAMESPACE + +class QTcpServerPrivate : public QObjectPrivate, public QAbstractSocketEngineReceiver +{ + Q_DECLARE_PUBLIC(QTcpServer) +public: + QTcpServerPrivate(); + ~QTcpServerPrivate(); + + QList pendingConnections; + + quint16 port; + QHostAddress address; + + QAbstractSocket::SocketState state; + QAbstractSocketEngine *socketEngine; + + QAbstractSocket::SocketError serverSocketError; + QString serverSocketErrorString; + + int maxConnections; + +#ifndef QT_NO_NETWORKPROXY + QNetworkProxy proxy; + QNetworkProxy resolveProxy(const QHostAddress &address, quint16 port); +#endif + + // from QAbstractSocketEngineReceiver + void readNotification() Q_DECL_OVERRIDE; + void closeNotification() Q_DECL_OVERRIDE { readNotification(); } + inline void writeNotification() {} + inline void exceptionNotification() {} + inline void connectionNotification() {} +#ifndef QT_NO_NETWORKPROXY + inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *) {} +#endif + +}; + +QT_END_NAMESPACE + +#endif // QTCPSERVER_P_H diff --git a/src/network/socket/socket.pri b/src/network/socket/socket.pri index 7e3a54e303..3fb85160ea 100644 --- a/src/network/socket/socket.pri +++ b/src/network/socket/socket.pri @@ -12,7 +12,8 @@ HEADERS += socket/qabstractsocketengine_p.h \ socket/qlocalserver.h \ socket/qlocalserver_p.h \ socket/qlocalsocket.h \ - socket/qlocalsocket_p.h + socket/qlocalsocket_p.h \ + socket/qtcpserver_p.h SOURCES += socket/qabstractsocketengine.cpp \ socket/qhttpsocketengine.cpp \ -- cgit v1.2.3