From 5983e3e9d9942411fb787d98da84fab3823287e3 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 12 May 2009 16:16:13 +0000 Subject: [PATCH] 2009-05-13 Tatsuhiro Tsujikawa Added "downloadSpeed" and uploadSpeed" key in getPeers response. * src/DefaultPeerStorage.cc * src/DefaultPeerStorage.h * src/PeerStorage.h * src/XmlRpcMethodImpl.cc * test/MockPeerStorage.h --- ChangeLog | 9 +++++++++ src/DefaultPeerStorage.cc | 6 ++++++ src/DefaultPeerStorage.h | 2 ++ src/PeerStorage.h | 2 ++ src/XmlRpcMethodImpl.cc | 3 +++ test/MockPeerStorage.h | 5 +++++ 6 files changed, 27 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5adacc5c..6b29e62c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-05-13 Tatsuhiro Tsujikawa + + Added "downloadSpeed" and uploadSpeed" key in getPeers response. + * src/DefaultPeerStorage.cc + * src/DefaultPeerStorage.h + * src/PeerStorage.h + * src/XmlRpcMethodImpl.cc + * test/MockPeerStorage.h + 2009-05-13 Tatsuhiro Tsujikawa Put a call to Socket::isReadable() in try block. diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc index a8e8df8e..74ca3c87 100644 --- a/src/DefaultPeerStorage.cc +++ b/src/DefaultPeerStorage.cc @@ -246,6 +246,12 @@ void DefaultPeerStorage::updateTransferStatFor(const SharedHandle& peer) _peerTransferStatMap[peer->getID()] = s; } +TransferStat DefaultPeerStorage::getTransferStatFor +(const SharedHandle& peer) +{ + return _peerTransferStatMap[peer->getID()]; +} + void DefaultPeerStorage::deleteUnusedPeer(size_t delSize) { Peers temp; for(Peers::reverse_iterator itr = peers.rbegin(); diff --git a/src/DefaultPeerStorage.h b/src/DefaultPeerStorage.h index cd8f519f..21f4b7ef 100644 --- a/src/DefaultPeerStorage.h +++ b/src/DefaultPeerStorage.h @@ -98,6 +98,8 @@ public: virtual void updateTransferStatFor(const SharedHandle& peer); + virtual TransferStat getTransferStatFor(const SharedHandle& peer); + virtual void returnPeer(const SharedHandle& peer); virtual bool chokeRoundIntervalElapsed(); diff --git a/src/PeerStorage.h b/src/PeerStorage.h index 61813cf5..4227db73 100644 --- a/src/PeerStorage.h +++ b/src/PeerStorage.h @@ -87,6 +87,8 @@ public: virtual void updateTransferStatFor(const SharedHandle& peer) = 0; + virtual TransferStat getTransferStatFor(const SharedHandle& peer) = 0; + /** * Tells PeerStorage object that peer is no longer used in the session. */ diff --git a/src/XmlRpcMethodImpl.cc b/src/XmlRpcMethodImpl.cc index 3575eb8c..173a1e72 100644 --- a/src/XmlRpcMethodImpl.cc +++ b/src/XmlRpcMethodImpl.cc @@ -210,6 +210,9 @@ static void gatherPeer(BDE& peers, const SharedHandle& ps) (*i)->getBitfieldLength()); peerEntry["amChoking"] = (*i)->amChoking()?BDE("true"):BDE("false"); peerEntry["peerChoking"] = (*i)->peerChoking()?BDE("true"):BDE("false"); + TransferStat stat = ps->getTransferStatFor(*i); + peerEntry["downloadSpeed"] = Util::uitos(stat.getDownloadSpeed()); + peerEntry["uploadSpeed"] = Util::uitos(stat.getUploadSpeed()); peers << peerEntry; } } diff --git a/test/MockPeerStorage.h b/test/MockPeerStorage.h index c4f39784..42a4c2af 100644 --- a/test/MockPeerStorage.h +++ b/test/MockPeerStorage.h @@ -73,6 +73,11 @@ public: virtual void updateTransferStatFor(const SharedHandle& peer) {} + virtual TransferStat getTransferStatFor(const SharedHandle& peer) + { + return TransferStat(); + } + int getNumChokeExecuted() const { return _numChokeExecuted;