summaryrefslogtreecommitdiff
path: root/src/PeerInteractionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-09 17:14:40 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-09 17:14:40 +0000
commitc064a2cd9e9034d6cd77bfdd70948cbef193d2cc (patch)
tree692e9d54e8032af919514f0d8608286ce47b74b9 /src/PeerInteractionCommand.cc
parent04a70520139efcfb287e329ae97e51ddf77605c6 (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/PeerInteractionCommand.cc')
-rw-r--r--src/PeerInteractionCommand.cc18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/PeerInteractionCommand.cc b/src/PeerInteractionCommand.cc
index 87e6bf52..4152b619 100644
--- a/src/PeerInteractionCommand.cc
+++ b/src/PeerInteractionCommand.cc
@@ -152,11 +152,10 @@ PeerInteractionCommand::PeerInteractionCommand(int32_t cuid,
peerObject->btRequestFactory = reqFactory;
peerObject->peerConnection = peerConnection;
- PEER_OBJECT_CLUSTER(btContext)->registerHandle(peer->getId(), peerObject);
+ PEER_OBJECT_CLUSTER(btContext)->registerHandle(peer->getID(), peerObject);
setUploadLimit(e->option->getAsInt(PREF_MAX_UPLOAD_LIMIT));
- peer->activate();
- peer->allocateBitfield(btContext->getPieceLength(), btContext->getTotalLength());
+ peer->allocateSessionResource(btContext->getPieceLength(), btContext->getTotalLength());
maxDownloadSpeedLimit = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
@@ -164,9 +163,8 @@ PeerInteractionCommand::PeerInteractionCommand(int32_t cuid,
}
PeerInteractionCommand::~PeerInteractionCommand() {
- peer->deallocateBitfield();
- peer->deactivate();
- PEER_OBJECT_CLUSTER(btContext)->unregisterHandle(peer->getId());
+ peer->releaseSessionResource();
+ PEER_OBJECT_CLUSTER(btContext)->unregisterHandle(peer->getID());
btRuntime->decreaseConnections();
//logger->debug("CUID#%d - unregistered message factory using ID:%s",
@@ -217,8 +215,8 @@ bool PeerInteractionCommand::executeInternal() {
if(btInteractive->countReceivedMessageInIteration() > 0) {
updateKeepAlive();
}
- if(peer->amInterested && !peer->peerChoking ||
- peer->peerInterested && !peer->amChoking) {
+ if(peer->amInterested() && !peer->peerChoking() ||
+ peer->peerInterested() && !peer->amChoking()) {
if(maxDownloadSpeedLimit > 0) {
TransferStat stat = peerStorage->calculateStat();
if(maxDownloadSpeedLimit < stat.downloadSpeed) {
@@ -246,9 +244,9 @@ bool PeerInteractionCommand::executeInternal() {
bool PeerInteractionCommand::prepareForNextPeer(int32_t wait) {
if(peerStorage->isPeerAvailable() && btRuntime->lessThanEqMinPeer()) {
PeerHandle peer = peerStorage->getUnusedPeer();
- peer->cuid = CUIDCounterSingletonHolder::instance()->newID();
+ peer->usedBy(CUIDCounterSingletonHolder::instance()->newID());
PeerInitiateConnectionCommand* command =
- new PeerInitiateConnectionCommand(peer->cuid,
+ new PeerInitiateConnectionCommand(peer->usedBy(),
_requestGroup,
peer,
e,