/* */ #ifndef _D_ABSTRACT_BT_MESSAGE_H_ #define _D_ABSTRACT_BT_MESSAGE_H_ #include "BtMessage.h" #include namespace aria2 { class BtContext; class PieceStorage; class Peer; class BtMessageDispatcher; class BtMessageFactory; class BtRequestFactory; class PeerConnection; class BtMessageValidator; class BtEventListener; class Logger; class AbstractBtMessage : public BtMessage { protected: bool sendingInProgress; bool invalidate; bool uploading; int32_t cuid; SharedHandle btContext; SharedHandle pieceStorage; SharedHandle peer; WeakHandle dispatcher; WeakHandle messageFactory; WeakHandle requestFactory; WeakHandle peerConnection; SharedHandle validator; std::deque > listeners; Logger* logger; public: AbstractBtMessage(); 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; } SharedHandle getPeer() const; void setPeer(const SharedHandle& peer); virtual void doReceivedAction() {} virtual bool validate(std::deque& errors); virtual void onQueued() {} virtual void handleEvent(const SharedHandle& event); void addEventListener(const SharedHandle& listener); void setBtMessageValidator(const SharedHandle& validator); SharedHandle getBtMessageValidator() const; void setBtContext(const SharedHandle& btContext); SharedHandle getBtContext() const; 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); }; typedef SharedHandle AbstractBtMessageHandle; } // namespace aria2 #endif // _D_ABSTRACT_BT_MESSAGE_H_