diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-11-03 06:49:02 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-11-03 06:49:02 +0000 |
| commit | 7cf589e78483e6ca7daff2ddd1a30af8091a4448 (patch) | |
| tree | d595de6899aa7ddad9ad6242c9f50dd6c2a85e22 /src/PeerInitiateConnectionCommand.cc | |
| parent | 93edc7bd202df92174cc4ce3b8c0c0c7684170fd (diff) | |
2008-11-03 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Made BtRegistry non-static object. Now DownloadEngine has a
reference to its object.
* src/AbstractBtMessage.cc
* src/ActivePeerConnectionCommand.cc
* src/ActivePeerConnectionCommand.h
* src/BtContextAwareCommand.cc
* src/BtContextAwareCommand.h
* src/BtExtendedMessage.cc
* src/BtExtendedMessage.h
* src/BtInterestedMessage.cc
* src/BtInterestedMessage.h
* src/BtNotInterestedMessage.cc
* src/BtNotInterestedMessage.h
* src/BtRegistry.cc
* src/BtRegistry.h
* src/BtSeederStateChoke.cc
* src/BtSetup.cc
* src/DHTGetPeersCommand.cc
* src/DHTGetPeersCommand.h
* src/DHTPeerAnnounceEntry.cc
* src/DHTPeerAnnounceEntry.h
* src/DHTPeerAnnounceStorage.cc
* src/DHTPeerAnnounceStorage.h
* src/DHTPeerLookupTask.cc
* src/DHTPeerLookupTask.h
* src/DHTSetup.cc
* src/DHTSetup.h
* src/DHTTaskFactory.h
* src/DHTTaskFactoryImpl.cc
* src/DHTTaskFactoryImpl.h
* src/DefaultBtAnnounce.cc
* src/DefaultBtInteractive.cc
* src/DefaultBtInteractive.h
* src/DefaultBtMessageDispatcher.cc
* src/DefaultBtMessageDispatcher.h
* src/DefaultBtMessageFactory.cc
* src/DefaultBtMessageFactory.h
* src/DefaultBtMessageReceiver.cc
* src/DefaultBtProgressInfoFile.cc
* src/DefaultBtProgressInfoFile.h
* src/DefaultBtRequestFactory.cc
* src/DefaultBtRequestFactory.h
* src/DefaultExtensionMessageFactory.cc
* src/DefaultExtensionMessageFactory.h
* src/DefaultPeerStorage.cc
* src/DefaultPeerStorage.h
* src/DownloadEngine.cc
* src/DownloadEngine.h
* src/InitiatorMSEHandshakeCommand.cc
* src/InitiatorMSEHandshakeCommand.h
* src/MSEHandshake.cc
* src/MSEHandshake.h
* src/Makefile.am
* src/Makefile.in
* src/PeerChokeCommand.cc
* src/PeerChokeCommand.h
* src/PeerInitiateConnectionCommand.cc
* src/PeerInitiateConnectionCommand.h
* src/PeerInteractionCommand.cc
* src/PeerInteractionCommand.h
* src/PeerObject.h
* src/PeerReceiveHandshakeCommand.cc
* src/PeerReceiveHandshakeCommand.h
* src/ReceiverMSEHandshakeCommand.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/RequestGroupMan.cc
* src/RequestGroupMan.h
* src/SeedCheckCommand.cc
* src/SeedCheckCommand.h
* src/ShareRatioSeedCriteria.h
* src/SimpleBtMessage.cc
* src/TrackerWatcherCommand.cc
* src/TrackerWatcherCommand.h
* src/UTPexExtensionMessage.cc
* src/UTPexExtensionMessage.h
* test/BtCancelMessageTest.cc
* test/BtChokeMessageTest.cc
* test/BtExtendedMessageTest.cc
* test/BtInterestedMessageTest.cc
* test/BtNotInterestedMessageTest.cc
* test/BtPieceMessageTest.cc
* test/BtPortMessageTest.cc
* test/BtRegistryTest.cc
* test/BtRejectMessageTest.cc
* test/BtRequestMessageTest.cc
* test/DHTPeerAnnounceEntryTest.cc
* test/DHTPeerAnnounceStorageTest.cc
* test/DefaultBtMessageDispatcherTest.cc
* test/DefaultBtMessageFactoryTest.cc
* test/DefaultBtProgressInfoFileTest.cc
* test/DefaultBtRequestFactoryTest.cc
* test/DefaultExtensionMessageFactoryTest.cc
* test/MSEHandshakeTest.cc
* test/MockDHTTaskFactory.h
* test/ShareRatioSeedCriteriaTest.cc
* test/UTPexExtensionMessageTest.cc
Diffstat (limited to 'src/PeerInitiateConnectionCommand.cc')
| -rw-r--r-- | src/PeerInitiateConnectionCommand.cc | 80 |
1 files changed, 50 insertions, 30 deletions
diff --git a/src/PeerInitiateConnectionCommand.cc b/src/PeerInitiateConnectionCommand.cc index a9570250..1c74eba5 100644 --- a/src/PeerInitiateConnectionCommand.cc +++ b/src/PeerInitiateConnectionCommand.cc @@ -43,33 +43,35 @@ #include "Socket.h" #include "Logger.h" #include "Peer.h" -#include "PeerConnection.h" #include "BtContext.h" #include "BtRuntime.h" -#include "PieceStorage.h" #include "PeerStorage.h" -#include "BtAnnounce.h" -#include "BtProgressInfoFile.h" +#include "PieceStorage.h" +#include "PeerConnection.h" namespace aria2 { -PeerInitiateConnectionCommand::PeerInitiateConnectionCommand(int cuid, - RequestGroup* requestGroup, - const PeerHandle& peer, - DownloadEngine* e, - const BtContextHandle& btContext, - bool mseHandshakeEnabled) - :PeerAbstractCommand(cuid, peer, e), - BtContextAwareCommand(btContext), - RequestGroupAware(requestGroup), - _mseHandshakeEnabled(mseHandshakeEnabled) +PeerInitiateConnectionCommand::PeerInitiateConnectionCommand +(int cuid, + RequestGroup* requestGroup, + const PeerHandle& peer, + DownloadEngine* e, + const SharedHandle<BtContext>& btContext, + const SharedHandle<BtRuntime>& btRuntime, + bool mseHandshakeEnabled) + : + PeerAbstractCommand(cuid, peer, e), + RequestGroupAware(requestGroup), + _btContext(btContext), + _btRuntime(btRuntime), + _mseHandshakeEnabled(mseHandshakeEnabled) { - btRuntime->increaseConnections(); + _btRuntime->increaseConnections(); } PeerInitiateConnectionCommand::~PeerInitiateConnectionCommand() { - btRuntime->decreaseConnections(); + _btRuntime->decreaseConnections(); } bool PeerInitiateConnectionCommand::executeInternal() { @@ -77,40 +79,58 @@ bool PeerInitiateConnectionCommand::executeInternal() { peer->port); socket.reset(new SocketCore()); socket->establishConnection(peer->ipaddr, peer->port); - Command* command; if(_mseHandshakeEnabled) { - command = - new InitiatorMSEHandshakeCommand(cuid, _requestGroup, peer, e, btContext, - socket); + InitiatorMSEHandshakeCommand* c = + new InitiatorMSEHandshakeCommand(cuid, _requestGroup, peer, e, _btContext, + _btRuntime, socket); + c->setPeerStorage(_peerStorage); + c->setPieceStorage(_pieceStorage); + e->commands.push_back(c); } else { - command = - new PeerInteractionCommand(cuid, _requestGroup, peer, e, btContext, socket, - PeerInteractionCommand::INITIATOR_SEND_HANDSHAKE); + PeerInteractionCommand* command = + new PeerInteractionCommand + (cuid, _requestGroup, peer, e, _btContext, _btRuntime, _pieceStorage, + socket, PeerInteractionCommand::INITIATOR_SEND_HANDSHAKE); + command->setPeerStorage(_peerStorage); + e->commands.push_back(command); } - e->commands.push_back(command); return true; } // TODO this method removed when PeerBalancerCommand is implemented bool PeerInitiateConnectionCommand::prepareForNextPeer(time_t wait) { - if(peerStorage->isPeerAvailable() && btRuntime->lessThanEqMinPeers()) { - PeerHandle peer = peerStorage->getUnusedPeer(); + if(_peerStorage->isPeerAvailable() && _btRuntime->lessThanEqMinPeers()) { + PeerHandle peer = _peerStorage->getUnusedPeer(); peer->usedBy(CUIDCounterSingletonHolder::instance()->newID()); - Command* command = + PeerInitiateConnectionCommand* command = new PeerInitiateConnectionCommand(peer->usedBy(), _requestGroup, peer, e, - btContext); + _btContext, _btRuntime); + command->setPeerStorage(_peerStorage); + command->setPieceStorage(_pieceStorage); e->commands.push_back(command); } return true; } void PeerInitiateConnectionCommand::onAbort() { - peerStorage->returnPeer(peer); + _peerStorage->returnPeer(peer); } bool PeerInitiateConnectionCommand::exitBeforeExecute() { - return btRuntime->isHalt(); + return _btRuntime->isHalt(); +} + +void PeerInitiateConnectionCommand::setPeerStorage +(const SharedHandle<PeerStorage>& peerStorage) +{ + _peerStorage = peerStorage; +} + +void PeerInitiateConnectionCommand::setPieceStorage +(const SharedHandle<PieceStorage>& pieceStorage) +{ + _pieceStorage = pieceStorage; } } // namespace aria2 |
