summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTopi Reinio <topi.reinio@digia.com>2013-04-03 11:21:18 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-04 08:37:04 +0200
commit87f890295bdd857571e5289687ffb5ff61d88ed9 (patch)
tree0fb25f49b57fc855d3443a6ae207036b88b3f963
parent05b0565e97f011cd26651654c29e295183344c30 (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>
-rw-r--r--examples/network/torrent/main.cpp1
-rw-r--r--examples/network/torrent/peerwireclient.cpp8
-rw-r--r--examples/network/torrent/peerwireclient.h9
-rw-r--r--examples/network/torrent/trackerclient.cpp49
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);
}