/* */ #ifndef _D_ABSTRACT_BT_MESSAGE_H_ #define _D_ABSTRACT_BT_MESSAGE_H_ #include "BtMessage.h" namespace aria2 { class PieceStorage; class Peer; class BtMessageDispatcher; class BtMessageFactory; class BtRequestFactory; class PeerConnection; class BtMessageValidator; class Logger; class AbstractBtMessage : public BtMessage { protected: bool sendingInProgress; bool invalidate; bool uploading; int32_t cuid; std::string _name; SharedHandle pieceStorage; SharedHandle peer; WeakHandle dispatcher; WeakHandle messageFactory; WeakHandle requestFactory; WeakHandle peerConnection; SharedHandle validator; bool _metadataGetMode; Logger* logger; public: AbstractBtMessage(uint8_t id, const std::string& name); virtual ~AbstractBtMessage(); virtual bool isSendingInProgress() { return sendingInProgress; } void setSendingInProgress(bool sendingInProgress) { this->sendingInProgress = sendingInProgress; } virtual bool isInvalidate() { return invalidate; } void setInvalidate(bool invalidate) { this->invalidate = invalidate; } virtual bool isUploading() { return uploading; } void setUploading(bool uploading) { this->uploading = uploading; } int32_t getCuid() const { return cuid; } void setCuid(int32_t cuid) { this->cuid = cuid; } const SharedHandle& getPeer() const { return peer; } void setPeer(const SharedHandle& peer); virtual void doReceivedAction() {} virtual void validate(); virtual void onQueued() {} virtual void onAbortOutstandingRequestEvent (const BtAbortOutstandingRequestEvent& event) {} virtual void onCancelSendingPieceEvent (const BtCancelSendingPieceEvent& event) {} virtual void onChokingEvent(const BtChokingEvent& event) {} void setBtMessageValidator(const SharedHandle& validator); void setPieceStorage(const SharedHandle& pieceStorage); void setBtMessageDispatcher(const WeakHandle& dispatcher); void setPeerConnection(const WeakHandle& peerConnection); void setBtMessageFactory(const WeakHandle& factory); void setBtRequestFactory(const WeakHandle& factory); const std::string& getName() const { return _name; } void enableMetadataGetMode() { _metadataGetMode = true; } }; typedef SharedHandle AbstractBtMessageHandle; } // namespace aria2 #endif // _D_ABSTRACT_BT_MESSAGE_H_