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/network/torrent/trackerclient.cpp | |
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/network/torrent/trackerclient.cpp')
-rw-r--r-- | examples/network/torrent/trackerclient.cpp | 49 |
1 files changed, 23 insertions, 26 deletions
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); } |