summaryrefslogtreecommitdiff
path: root/src/PeerInitiateConnectionCommand.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-11-03 06:49:02 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-11-03 06:49:02 +0000
commit7cf589e78483e6ca7daff2ddd1a30af8091a4448 (patch)
treed595de6899aa7ddad9ad6242c9f50dd6c2a85e22 /src/PeerInitiateConnectionCommand.cc
parent93edc7bd202df92174cc4ce3b8c0c0c7684170fd (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.cc80
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