/* */ #ifndef _D_ABSTRACT_BT_MESSAGE_H_ #define _D_ABSTRACT_BT_MESSAGE_H_ #include "BtMessage.h" #include "Command.h" namespace aria2 { class PieceStorage; class Peer; class BtMessageDispatcher; class BtMessageFactory; class BtRequestFactory; class PeerConnection; class BtMessageValidator; class Logger; class AbstractBtMessage : public BtMessage { private: bool _sendingInProgress; bool _invalidate; bool _uploading; cuid_t _cuid; std::string _name; SharedHandle _pieceStorage; SharedHandle _peer; WeakHandle _dispatcher; WeakHandle _messageFactory; WeakHandle _requestFactory; WeakHandle _peerConnection; SharedHandle _validator; bool _metadataGetMode; Logger* _logger; protected: Logger* getLogger() const { return _logger; } const SharedHandle& getPieceStorage() const { return _pieceStorage; } const WeakHandle& getPeerConnection() const { return _peerConnection; } const WeakHandle& getBtMessageDispatcher() const { return _dispatcher; } const WeakHandle& getBtRequestFactory() const { return _requestFactory; } const WeakHandle& getBtMessageFactory() const { return _messageFactory; } bool isMetadataGetMode() const { return _metadataGetMode; } public: AbstractBtMessage(uint8_t id, const std::string& name); virtual ~AbstractBtMessage(); virtual bool isSendingInProgress() { return _sendingInProgress; } void setSendingInProgress(bool sendingInProgress) { _sendingInProgress = sendingInProgress; } virtual bool isInvalidate() { return _invalidate; } void setInvalidate(bool invalidate) { _invalidate = invalidate; } virtual bool isUploading() { return _uploading; } void setUploading(bool uploading) { _uploading = uploading; } cuid_t getCuid() const { return _cuid; } void setCuid(cuid_t cuid) { _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_