diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-02-09 17:14:40 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-02-09 17:14:40 +0000 |
| commit | c064a2cd9e9034d6cd77bfdd70948cbef193d2cc (patch) | |
| tree | 692e9d54e8032af919514f0d8608286ce47b74b9 /src/DefaultPeerStorage.cc | |
| parent | 04a70520139efcfb287e329ae97e51ddf77605c6 (diff) | |
2008-02-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Extract the Peer class's member variables, which are only needed
after
PeerInteractionCommand, into PeerSessionResource class.
This class is instantiated in PeerInteractionCommand class's
ctor and
released in its dtor.
This will make Peer class lightweight and uses less memory for
peers
which are not connected and wait in the queue.
* src/PeerChokeCommand.cc
* src/PeerSessionResource.{h, cc}
* src/PeerInteractionCommand.cc
* src/PeerAbstractCommand.cc: Note: 0 is given to onAbort()
function.
* src/DefaultBtInteractive.cc
* src/BtPieceMessage.cc
* src/BtInterestedMessage.cc
* src/BtUnchokeMessage.cc
* src/DefaultPeerStorage.{h, cc}
* src/PeerInitiateConnectionCommand.cc
* src/ActivePeerConnectionCommand.cc
* src/BtNotInterestedMessage.cc
* src/DefaultBtMessageDispatcher.cc
* src/BtChokeMessage.cc
* src/BtRequestMessage.cc
* src/Peer.{h, cc}
* src/BtRegistry.h
* src/TrackerWatcherCommand.cc
* src/PeerReceiveHandshakeCommand.cc
* test/BtExtendedMessageTest.cc
* test/BtAllowedFastMessageTest.cc
* test/BtCancelMessageTest.cc
* test/DefaultPieceStorageTest.cc
* test/BtBitfieldMessageTest.cc
* test/BtHaveMessageTest.cc
* test/BtNotInterestedMessageTest.cc
* test/BtRequestMessageTest.cc
* test/PeerSessionResourceTest.cc
* test/DefaultBtMessageDispatcherTest.cc
* test/PeerTest.cc
* test/BtInterestedMessageTest.cc
* test/BtRejectMessageTest.cc
* test/BtChokeMessageTest.cc
* test/DefaultPeerStorageTest.cc
* test/BtHaveNoneMessageTest.cc
* test/BtHaveAllMessageTest.cc
* test/DefaultExtensionMessageFactoryTest.cc
* test/BtUnchokeMessageTest.cc
* test/DefaultBtMessageFactoryTest.cc
* test/HandshakeExtensionMessageTest.cc
* test/UTPexExtensionMessageTest.cc
* test/DefaultBtRequestFactoryTest.cc
* test/BtPieceMessageTest.cc
Removed typedef PeerStats.
* src/PeerStat.h
* src/SegmentMan.cc
Diffstat (limited to 'src/DefaultPeerStorage.cc')
| -rw-r--r-- | src/DefaultPeerStorage.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc index a00409c1..c79a4dca 100644 --- a/src/DefaultPeerStorage.cc +++ b/src/DefaultPeerStorage.cc @@ -106,7 +106,7 @@ const Peers& DefaultPeerStorage::getPeers() { class FindFinePeer { public: bool operator()(const PeerHandle& peer) const { - return peer->cuid == 0 && peer->isGood(); + return peer->unused() && peer->isGood(); } }; @@ -184,9 +184,9 @@ public: if(peer->isActive()) { _stat.downloadSpeed += peer->calculateDownloadSpeed(_now); _stat.uploadSpeed += peer->calculateUploadSpeed(_now); + _stat.sessionDownloadLength += peer->getSessionDownloadLength(); + _stat.sessionUploadLength += peer->getSessionUploadLength(); } - _stat.sessionDownloadLength += peer->getSessionDownloadLength(); - _stat.sessionUploadLength += peer->getSessionUploadLength(); } const TransferStat& getTransferStat() { return _stat; } @@ -206,7 +206,7 @@ void DefaultPeerStorage::deleteUnusedPeer(int32_t delSize) { for(Peers::reverse_iterator itr = peers.rbegin(); itr != peers.rend(); ++itr) { const PeerHandle& p = *itr; - if(p->cuid == 0 && delSize > 0) { + if(p->unused() && delSize > 0) { // Update removedPeerSession******Length onErasingPeer(p); delSize--; @@ -217,10 +217,14 @@ void DefaultPeerStorage::deleteUnusedPeer(int32_t delSize) { peers = temp; } -void DefaultPeerStorage::onErasingPeer(const PeerHandle& peer) +void DefaultPeerStorage::onErasingPeer(const SharedHandle<Peer>& peer) {} + +void DefaultPeerStorage::onReturningPeer(const SharedHandle<Peer>& peer) { - removedPeerSessionDownloadLength += peer->getSessionDownloadLength(); - removedPeerSessionUploadLength += peer->getSessionUploadLength(); + if(peer->isActive()) { + removedPeerSessionDownloadLength += peer->getSessionDownloadLength(); + removedPeerSessionUploadLength += peer->getSessionUploadLength(); + } } void DefaultPeerStorage::returnPeer(const PeerHandle& peer) @@ -229,6 +233,7 @@ void DefaultPeerStorage::returnPeer(const PeerHandle& peer) if(itr == peers.end()) { logger->debug("Cannot find peer %s:%u in PeerStorage.", peer->ipaddr.c_str(), peer->port); } else { + onReturningPeer(peer); if((*itr)->port == 0) { onErasingPeer(*itr); peers.erase(itr); |
