diff options
author | Topi Reinio <topi.reinio@digia.com> | 2013-04-03 11:21:18 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-04 08:37:04 +0200 |
commit | 87f890295bdd857571e5289687ffb5ff61d88ed9 (patch) | |
tree | 0fb25f49b57fc855d3443a6ae207036b88b3f963 /examples | |
parent | 05b0565e97f011cd26651654c29e295183344c30 (diff) |
Doc: Fix network/torrent example to work on Qt 5
This change fixes two issues in the torrent example:
- Correctly use a query constructed from the announce url to fetch
the list of peers (using QUrlQuery).
- Reimplement QAbstractSocket's connectToHost() and
disconnectFromHost() which are virtual in Qt 5, instead of
of using the protected connectToHostImplementation() /
disconnectFromHostImplementation() slots.
Also removes a warning about deprecation of QHttp class as it's no
longer used in this example.
Task-number: QTBUG-30329
Change-Id: I9230cd2204bfc1a66f2ea3e98940b09681df250e
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/network/torrent/main.cpp | 1 | ||||
-rw-r--r-- | examples/network/torrent/peerwireclient.cpp | 8 | ||||
-rw-r--r-- | examples/network/torrent/peerwireclient.h | 9 | ||||
-rw-r--r-- | examples/network/torrent/trackerclient.cpp | 49 |
4 files changed, 31 insertions, 36 deletions
diff --git a/examples/network/torrent/main.cpp b/examples/network/torrent/main.cpp index 13b40d28cc..9cdca69122 100644 --- a/examples/network/torrent/main.cpp +++ b/examples/network/torrent/main.cpp @@ -45,7 +45,6 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); - qWarning("The usage of QHttp is not recommended anymore, please use QNetworkAccessManager."); qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); Q_INIT_RESOURCE(icons); diff --git a/examples/network/torrent/peerwireclient.cpp b/examples/network/torrent/peerwireclient.cpp index ade465ab47..0f77ba10d3 100644 --- a/examples/network/torrent/peerwireclient.cpp +++ b/examples/network/torrent/peerwireclient.cpp @@ -386,15 +386,15 @@ bool PeerWireClient::canTransferMore() const || !outgoingBuffer.isEmpty() || !pendingBlocks.isEmpty(); } -void PeerWireClient::connectToHostImplementation(const QString &hostName, - quint16 port, OpenMode openMode) +void PeerWireClient::connectToHost(const QHostAddress &address, + quint16 port, OpenMode openMode) { setOpenMode(openMode); - socket.connectToHost(hostName, port, openMode); + socket.connectToHost(address, port, openMode); } -void PeerWireClient::diconnectFromHostImplementation() +void PeerWireClient::diconnectFromHost() { socket.disconnectFromHost(); } diff --git a/examples/network/torrent/peerwireclient.h b/examples/network/torrent/peerwireclient.h index 7cd08d90cb..35e4cc6ffb 100644 --- a/examples/network/torrent/peerwireclient.h +++ b/examples/network/torrent/peerwireclient.h @@ -118,6 +118,10 @@ public: void setReadBufferSize(qint64 size); + void connectToHost(const QHostAddress &address, + quint16 port, OpenMode openMode = ReadWrite); + void diconnectFromHost(); + signals: void infoHashReceived(const QByteArray &infoHash); void readyToTransfer(); @@ -133,11 +137,6 @@ signals: void bytesReceived(qint64 size); -protected slots: - void connectToHostImplementation(const QString &hostName, - quint16 port, OpenMode openMode = ReadWrite); - void diconnectFromHostImplementation(); - protected: void timerEvent(QTimerEvent *event); diff --git a/examples/network/torrent/trackerclient.cpp b/examples/network/torrent/trackerclient.cpp index d714050fa7..fef3c7d596 100644 --- a/examples/network/torrent/trackerclient.cpp +++ b/examples/network/torrent/trackerclient.cpp @@ -97,14 +97,10 @@ void TrackerClient::timerEvent(QTimerEvent *event) void TrackerClient::fetchPeerList() { - // Prepare connection details - QString fullUrl = metaInfo.announceUrl(); - QUrl url(fullUrl); - QString passkey = "?"; - if (fullUrl.contains("?passkey")) { - passkey = metaInfo.announceUrl().mid(fullUrl.indexOf("?passkey"), -1); - passkey += '&'; - } + QUrl url(metaInfo.announceUrl()); + + // Base the query on announce url to include a passkey (if any) + QUrlQuery query(url); // Percent encode the hash QByteArray infoHash = torrentDownloader->infoHash(); @@ -115,43 +111,44 @@ void TrackerClient::fetchPeerList() } bool seeding = (torrentDownloader->state() == TorrentClient::Seeding); - QByteArray query; - query += url.path().toLatin1(); - query += passkey; - query += "info_hash=" + encodedSum; - query += "&peer_id=" + ConnectionManager::instance()->clientId(); - query += "&port=" + QByteArray::number(TorrentServer::instance()->serverPort()); - query += "&compact=1"; - query += "&uploaded=" + QByteArray::number(torrentDownloader->uploadedBytes()); + + query.addQueryItem("info_hash", encodedSum); + query.addQueryItem("peer_id", ConnectionManager::instance()->clientId()); + query.addQueryItem("port", QByteArray::number(TorrentServer::instance()->serverPort())); + query.addQueryItem("compact", "1"); + query.addQueryItem("uploaded", QByteArray::number(torrentDownloader->uploadedBytes())); if (!firstSeeding) { - query += "&downloaded=0"; - query += "&left=0"; + query.addQueryItem("downloaded", "0"); + query.addQueryItem("left", "0"); } else { - query += "&downloaded=" + QByteArray::number( - torrentDownloader->downloadedBytes()); + query.addQueryItem("downloaded", + QByteArray::number(torrentDownloader->downloadedBytes())); int left = qMax<int>(0, metaInfo.totalSize() - torrentDownloader->downloadedBytes()); - query += "&left=" + QByteArray::number(seeding ? 0 : left); + query.addQueryItem("left", QByteArray::number(seeding ? 0 : left)); } if (seeding && firstSeeding) { - query += "&event=completed"; + query.addQueryItem("event", "completed"); firstSeeding = false; } else if (firstTrackerRequest) { firstTrackerRequest = false; - query += "&event=started"; + query.addQueryItem("event", "started"); } else if(lastTrackerRequest) { - query += "&event=stopped"; + query.addQueryItem("event", "stopped"); } if (!trackerId.isEmpty()) - query += "&trackerid=" + trackerId; + query.addQueryItem("trackerid", trackerId); + + url.setQuery(query); QNetworkRequest req(url); if (!url.userName().isEmpty()) { uname = url.userName(); pwd = url.password(); - connect(&http, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(provideAuthentication(QNetworkReply*,QAuthenticator*))); + connect(&http, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), + this, SLOT(provideAuthentication(QNetworkReply*,QAuthenticator*))); } http.get(req); } |