From 7e63143d3dd6f39ff651c1711aad37fb21d8f460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Tue, 21 Mar 2023 10:16:04 +0100 Subject: [PATCH] Remove loopback network example It doesn't showcase anything interesting that other examples don't already show off. Change-Id: Ie95c3ddb3ff52b3beab54bd6fa75fb75ae5c7ba5 Reviewed-by: Timur Pocheptsov Reviewed-by: Konrad Kujawa (cherry picked from commit 826b606a5d8f274c55f525119299aef2fe143aaf) Reviewed-by: Qt Cherry-pick Bot --- doc/global/manifest-meta.qdocconf | 1 - examples/network/CMakeLists.txt | 1 - .../network/doc/images/loopback-example.png | Bin 6195 -> 0 bytes examples/network/doc/src/loopback.qdoc | 14 -- examples/network/loopback/CMakeLists.txt | 38 ----- examples/network/loopback/dialog.cpp | 155 ------------------ examples/network/loopback/dialog.h | 51 ------ examples/network/loopback/loopback.pro | 9 - examples/network/loopback/main.cpp | 14 -- examples/network/network.pro | 1 - src/network/doc/src/examples.qdoc | 1 - src/network/socket/qtcpserver.cpp | 2 +- src/network/socket/qtcpsocket.cpp | 2 +- 13 files changed, 2 insertions(+), 287 deletions(-) delete mode 100644 examples/network/doc/images/loopback-example.png delete mode 100644 examples/network/doc/src/loopback.qdoc delete mode 100644 examples/network/loopback/CMakeLists.txt delete mode 100644 examples/network/loopback/dialog.cpp delete mode 100644 examples/network/loopback/dialog.h delete mode 100644 examples/network/loopback/loopback.pro delete mode 100644 examples/network/loopback/main.cpp diff --git a/doc/global/manifest-meta.qdocconf b/doc/global/manifest-meta.qdocconf index d808296897d..cd75d348e98 100644 --- a/doc/global/manifest-meta.qdocconf +++ b/doc/global/manifest-meta.qdocconf @@ -157,7 +157,6 @@ manifestmeta.ios.names = "QtCore/Contiguous Cache Example" \ "QtCore/Queued Custom Type Example" \ "QtGui/OpenGL Window Example" \ "QtGui/Raster Window Example" \ - "QtNetwork/Loopback Example" \ "QtNetwork/Network Chat Example" \ "QtNetwork/Torrent Example" \ "QtOpenGL/2D Painting Example" \ diff --git a/examples/network/CMakeLists.txt b/examples/network/CMakeLists.txt index 8c6587693c8..4e19a2dffd3 100644 --- a/examples/network/CMakeLists.txt +++ b/examples/network/CMakeLists.txt @@ -12,7 +12,6 @@ if(TARGET Qt6::Widgets) qt_internal_add_example(broadcastreceiver) qt_internal_add_example(broadcastsender) qt_internal_add_example(http) - qt_internal_add_example(loopback) qt_internal_add_example(threadedfortuneserver) qt_internal_add_example(torrent) qt_internal_add_example(multicastreceiver) diff --git a/examples/network/doc/images/loopback-example.png b/examples/network/doc/images/loopback-example.png deleted file mode 100644 index 2b1bd4a0f2ab65c8369c871e76ca298abf0c903b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6195 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 diff --git a/examples/network/doc/src/loopback.qdoc b/examples/network/doc/src/loopback.qdoc deleted file mode 100644 index 657e2959bf8..00000000000 --- a/examples/network/doc/src/loopback.qdoc +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \example loopback - \title Loopback Example - \ingroup examples-network - \brief Demonstrates the client-server communication on a local host. - - The example demonstrates how the clients and servers on a local host - communicate with each other. - - \image loopback-example.png -*/ diff --git a/examples/network/loopback/CMakeLists.txt b/examples/network/loopback/CMakeLists.txt deleted file mode 100644 index e12416a1393..00000000000 --- a/examples/network/loopback/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(loopback LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/network/loopback") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Network Widgets) - -qt_standard_project_setup() - -qt_add_executable(loopback - dialog.cpp dialog.h - main.cpp -) - -set_target_properties(loopback PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(loopback PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Network - Qt6::Widgets -) - -install(TARGETS loopback - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/network/loopback/dialog.cpp b/examples/network/loopback/dialog.cpp deleted file mode 100644 index f2391fd5b8c..00000000000 --- a/examples/network/loopback/dialog.cpp +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "dialog.h" - -#include -#include - -static const int TotalBytes = 50 * 1024 * 1024; -static const int PayloadSize = 64 * 1024; // 64 KB - -Dialog::Dialog(QWidget *parent) - : QDialog(parent) -{ - clientProgressBar = new QProgressBar; - clientStatusLabel = new QLabel(tr("Client ready")); - serverProgressBar = new QProgressBar; - serverStatusLabel = new QLabel(tr("Server ready")); - - startButton = new QPushButton(tr("&Start")); - quitButton = new QPushButton(tr("&Quit")); - - buttonBox = new QDialogButtonBox; - buttonBox->addButton(startButton, QDialogButtonBox::ActionRole); - buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); - - connect(startButton, &QAbstractButton::clicked, this, &Dialog::start); - connect(quitButton, &QAbstractButton::clicked, qApp, &QCoreApplication::quit); - connect(&tcpServer, &QTcpServer::newConnection, - this, &Dialog::acceptConnection); - connect(&tcpClient, &QAbstractSocket::connected, this, &Dialog::startTransfer); - connect(&tcpClient, &QIODevice::bytesWritten, - this, &Dialog::updateClientProgress); - connect(&tcpClient, &QAbstractSocket::errorOccurred, - this, &Dialog::displayError); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(clientProgressBar); - mainLayout->addWidget(clientStatusLabel); - mainLayout->addWidget(serverProgressBar); - mainLayout->addWidget(serverStatusLabel); - mainLayout->addStretch(1); - mainLayout->addSpacing(10); - mainLayout->addWidget(buttonBox); - setLayout(mainLayout); - - setWindowTitle(tr("Loopback")); -} - -void Dialog::start() -{ - startButton->setEnabled(false); - -#ifndef QT_NO_CURSOR - QGuiApplication::setOverrideCursor(Qt::WaitCursor); -#endif - - bytesWritten = 0; - bytesReceived = 0; - - while (!tcpServer.isListening() && !tcpServer.listen()) { - QMessageBox::StandardButton ret = QMessageBox::critical(this, - tr("Loopback"), - tr("Unable to start the test: %1.") - .arg(tcpServer.errorString()), - QMessageBox::Retry - | QMessageBox::Cancel); - if (ret == QMessageBox::Cancel) - return; - } - - serverStatusLabel->setText(tr("Listening")); - clientStatusLabel->setText(tr("Connecting")); - tcpClient.connectToHost(QHostAddress::LocalHost, tcpServer.serverPort()); -} - -void Dialog::acceptConnection() -{ - tcpServerConnection = tcpServer.nextPendingConnection(); - if (!tcpServerConnection) { - serverStatusLabel->setText(tr("Error: got invalid pending connection!")); - return; - } - - connect(tcpServerConnection, &QIODevice::readyRead, - this, &Dialog::updateServerProgress); - connect(tcpServerConnection, &QAbstractSocket::errorOccurred, - this, &Dialog::displayError); - connect(tcpServerConnection, &QTcpSocket::disconnected, - tcpServerConnection, &QTcpSocket::deleteLater); - - serverStatusLabel->setText(tr("Accepted connection")); - tcpServer.close(); -} - -void Dialog::startTransfer() -{ - // called when the TCP client connected to the loopback server - bytesToWrite = TotalBytes - int(tcpClient.write(QByteArray(PayloadSize, '@'))); - clientStatusLabel->setText(tr("Connected")); -} - -void Dialog::updateServerProgress() -{ - bytesReceived += int(tcpServerConnection->bytesAvailable()); - tcpServerConnection->readAll(); - - serverProgressBar->setMaximum(TotalBytes); - serverProgressBar->setValue(bytesReceived); - serverStatusLabel->setText(tr("Received %1MB") - .arg(bytesReceived / (1024 * 1024))); - - if (bytesReceived == TotalBytes) { - tcpServerConnection->close(); - startButton->setEnabled(true); -#ifndef QT_NO_CURSOR - QGuiApplication::restoreOverrideCursor(); -#endif - } -} - -void Dialog::updateClientProgress(qint64 numBytes) -{ - // called when the TCP client has written some bytes - bytesWritten += int(numBytes); - - // only write more if not finished and when the Qt write buffer is below a certain size. - if (bytesToWrite > 0 && tcpClient.bytesToWrite() <= 4 * PayloadSize) - bytesToWrite -= tcpClient.write(QByteArray(qMin(bytesToWrite, PayloadSize), '@')); - - clientProgressBar->setMaximum(TotalBytes); - clientProgressBar->setValue(bytesWritten); - clientStatusLabel->setText(tr("Sent %1MB").arg(bytesWritten / (1024 * 1024))); -} - -void Dialog::displayError(QAbstractSocket::SocketError socketError) -{ - if (socketError == QTcpSocket::RemoteHostClosedError) - return; - - QMessageBox::information(this, tr("Network error"), - tr("The following error occurred: %1.") - .arg(tcpClient.errorString())); - - tcpClient.close(); - tcpServer.close(); - clientProgressBar->reset(); - serverProgressBar->reset(); - clientStatusLabel->setText(tr("Client ready")); - serverStatusLabel->setText(tr("Server ready")); - startButton->setEnabled(true); -#ifndef QT_NO_CURSOR - QGuiApplication::restoreOverrideCursor(); -#endif -} diff --git a/examples/network/loopback/dialog.h b/examples/network/loopback/dialog.h deleted file mode 100644 index c39ffb00ce1..00000000000 --- a/examples/network/loopback/dialog.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef DIALOG_H -#define DIALOG_H - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QDialogButtonBox; -class QLabel; -class QProgressBar; -class QPushButton; -QT_END_NAMESPACE - -class Dialog : public QDialog -{ - Q_OBJECT - -public: - Dialog(QWidget *parent = nullptr); - -public slots: - void start(); - void acceptConnection(); - void startTransfer(); - void updateServerProgress(); - void updateClientProgress(qint64 numBytes); - void displayError(QAbstractSocket::SocketError socketError); - -private: - QProgressBar *clientProgressBar = nullptr; - QProgressBar *serverProgressBar = nullptr; - QLabel *clientStatusLabel = nullptr; - QLabel *serverStatusLabel = nullptr; - - QPushButton *startButton = nullptr; - QPushButton *quitButton = nullptr; - QDialogButtonBox *buttonBox = nullptr; - - QTcpServer tcpServer; - QTcpSocket tcpClient; - QTcpSocket *tcpServerConnection = nullptr; - int bytesToWrite = 0; - int bytesWritten = 0; - int bytesReceived = 0; -}; - -#endif diff --git a/examples/network/loopback/loopback.pro b/examples/network/loopback/loopback.pro deleted file mode 100644 index 14b22daa57f..00000000000 --- a/examples/network/loopback/loopback.pro +++ /dev/null @@ -1,9 +0,0 @@ -QT += network widgets - -HEADERS = dialog.h -SOURCES = dialog.cpp \ - main.cpp - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/network/loopback -INSTALLS += target diff --git a/examples/network/loopback/main.cpp b/examples/network/loopback/main.cpp deleted file mode 100644 index 3eb7cbf57df..00000000000 --- a/examples/network/loopback/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "dialog.h" - -#include - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - Dialog dialog; - dialog.show(); - return app.exec(); -} diff --git a/examples/network/network.pro b/examples/network/network.pro index fcd38d3116a..79815609434 100644 --- a/examples/network/network.pro +++ b/examples/network/network.pro @@ -9,7 +9,6 @@ qtHaveModule(widgets) { broadcastreceiver \ broadcastsender \ http \ - loopback \ threadedfortuneserver \ torrent \ multicastreceiver \ diff --git a/src/network/doc/src/examples.qdoc b/src/network/doc/src/examples.qdoc index 7202c28d6d9..ee9084c74cb 100644 --- a/src/network/doc/src/examples.qdoc +++ b/src/network/doc/src/examples.qdoc @@ -26,7 +26,6 @@ \li \l{network/fortuneclient}{Fortune Client}\raisedaster \li \l{network/fortuneserver}{Fortune Server}\raisedaster \li \l{network/http}{HTTP} - \li \l{network/loopback}{Loopback} \li \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster \li \l{network/torrent}{Torrent} \li \l{network/securesocketclient}{Secure Socket Client} diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 31a3242d71b..eb2d757a08e 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -44,7 +44,7 @@ connection is available or a timeout expires. \sa QTcpSocket, {Fortune Server}, {Threaded Fortune Server}, - {Loopback Example}, {Torrent Example} + {Torrent Example} */ /*! \fn void QTcpServer::newConnection() diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp index b99a61aecd6..979382f26c5 100644 --- a/src/network/socket/qtcpsocket.cpp +++ b/src/network/socket/qtcpsocket.cpp @@ -25,7 +25,7 @@ \sa QTcpServer, QUdpSocket, QNetworkAccessManager, {Fortune Server}, {Fortune Client}, {Threaded Fortune Server}, {Blocking Fortune Client}, - {Loopback Example}, {Torrent Example} + {Torrent Example} */ #include "qtcpsocket.h"