summaryrefslogtreecommitdiff
path: root/src/PeerMessageFactory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/PeerMessageFactory.cc')
-rw-r--r--src/PeerMessageFactory.cc40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/PeerMessageFactory.cc b/src/PeerMessageFactory.cc
index 1c031075..95709c8e 100644
--- a/src/PeerMessageFactory.cc
+++ b/src/PeerMessageFactory.cc
@@ -33,7 +33,6 @@
*/
/* copyright --> */
#include "PeerMessageFactory.h"
-#include "PeerInteraction.h"
#include "PeerMessageUtil.h"
#include "ChokeMessage.h"
#include "UnchokeMessage.h"
@@ -54,11 +53,16 @@
#include "SuggestPieceMessage.h"
#include "RequestSlot.h"
#include "DlAbortEx.h"
+#include "BtRegistry.h"
+#include "PeerInteraction.h"
PeerMessageFactory::PeerMessageFactory(int cuid,
+ const BtContextHandle& btContext,
PeerInteraction* peerInteraction,
const PeerHandle& peer)
:cuid(cuid),
+ btContext(btContext),
+ pieceStorage(PIECE_STORAGE(btContext)),
peerInteraction(peerInteraction),
peer(peer) {}
@@ -86,29 +90,26 @@ PeerMessageHandle PeerMessageFactory::createPeerMessage(const char* msg, int msg
break;
case HaveMessage::ID:
peerMessage = HaveMessage::create(msg, msgLength);
- ((HaveMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->
- pieces);
+ ((HaveMessage*)peerMessage)->setPieces(btContext->getNumPieces());
break;
case BitfieldMessage::ID:
peerMessage = BitfieldMessage::create(msg, msgLength);
- ((BitfieldMessage*)peerMessage)->setPieces(peerInteraction->
- getTorrentMan()->pieces);
+ ((BitfieldMessage*)peerMessage)->setPieces(btContext->getNumPieces());
break;
case RequestMessage::ID:
peerMessage = RequestMessage::create(msg, msgLength);
- ((RequestMessage*)peerMessage)->setPieces(peerInteraction->
- getTorrentMan()->pieces);
- ((RequestMessage*)peerMessage)->setPieceLength(peerInteraction->getTorrentMan()->getPieceLength(((RequestMessage*)peerMessage)->getIndex()));
+ ((RequestMessage*)peerMessage)->setPieces(btContext->getNumPieces());
+ ((RequestMessage*)peerMessage)->setPieceLength(pieceStorage->getPieceLength(((RequestMessage*)peerMessage)->getIndex()));
break;
case CancelMessage::ID:
peerMessage = CancelMessage::create(msg, msgLength);
- ((CancelMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->pieces);
- ((CancelMessage*)peerMessage)->setPieceLength(peerInteraction->getTorrentMan()->getPieceLength(((CancelMessage*)peerMessage)->getIndex()));
+ ((CancelMessage*)peerMessage)->setPieces(btContext->getNumPieces());
+ ((CancelMessage*)peerMessage)->setPieceLength(pieceStorage->getPieceLength(((CancelMessage*)peerMessage)->getIndex()));
break;
case PieceMessage::ID:
peerMessage = PieceMessage::create(msg, msgLength);
- ((PieceMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->pieces);
- ((PieceMessage*)peerMessage)->setPieceLength(peerInteraction->getTorrentMan()->getPieceLength(((PieceMessage*)peerMessage)->getIndex()));
+ ((PieceMessage*)peerMessage)->setPieces(btContext->getNumPieces());
+ ((PieceMessage*)peerMessage)->setPieceLength(pieceStorage->getPieceLength(((PieceMessage*)peerMessage)->getIndex()));
break;
case PortMessage::ID:
peerMessage = PortMessage::create(msg, msgLength);
@@ -121,16 +122,16 @@ PeerMessageHandle PeerMessageFactory::createPeerMessage(const char* msg, int msg
break;
case RejectMessage::ID:
peerMessage = RejectMessage::create(msg, msgLength);
- ((RejectMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->pieces);
- ((RejectMessage*)peerMessage)->setPieceLength(peerInteraction->getTorrentMan()->getPieceLength(((RejectMessage*)peerMessage)->getIndex()));
+ ((RejectMessage*)peerMessage)->setPieces(btContext->getNumPieces());
+ ((RejectMessage*)peerMessage)->setPieceLength(pieceStorage->getPieceLength(((RejectMessage*)peerMessage)->getIndex()));
break;
case SuggestPieceMessage::ID:
peerMessage = SuggestPieceMessage::create(msg, msgLength);
- ((SuggestPieceMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->pieces);
+ ((SuggestPieceMessage*)peerMessage)->setPieces(btContext->getNumPieces());
break;
case AllowedFastMessage::ID:
peerMessage = AllowedFastMessage::create(msg, msgLength);
- ((AllowedFastMessage*)peerMessage)->setPieces(peerInteraction->getTorrentMan()->pieces);
+ ((AllowedFastMessage*)peerMessage)->setPieces(btContext->getNumPieces());
break;
default:
throw new DlAbortEx("Invalid message id. id = %d", id);
@@ -167,6 +168,7 @@ PeerMessageFactory::setPeerMessageCommonProperty(PeerMessageHandle& peerMessage)
peerMessage->setPeer(peer);
peerMessage->setCuid(cuid);
peerMessage->setPeerInteraction(peerInteraction);
+ peerMessage->setBtContext(btContext);
}
PeerMessageHandle PeerMessageFactory::createRequestMessage(const Piece& piece,
@@ -235,10 +237,8 @@ PeerMessageHandle PeerMessageFactory::createNotInterestedMessage() const {
PeerMessageHandle PeerMessageFactory::createBitfieldMessage() const {
PeerMessageHandle handle =
- PeerMessageHandle(new BitfieldMessage(peerInteraction->getTorrentMan()->
- getBitfield(),
- peerInteraction->getTorrentMan()->
- getBitfieldLength()));
+ PeerMessageHandle(new BitfieldMessage(pieceStorage->getBitfield(),
+ pieceStorage->getBitfieldLength()));
setPeerMessageCommonProperty(handle);
return handle;
}