/* */ #ifndef _D_ABSTRACT_BT_MESSAGE_H_ #define _D_ABSTRACT_BT_MESSAGE_H_ #include "BtMessage.h" #include "Peer.h" #include "Piece.h" #include "LogFactory.h" #include "Logger.h" #include "BtEvent.h" #include "BtEventListener.h" #include "BtContext.h" #include "BtRegistry.h" #include "BtMessageDispatcher.h" #include "PeerConnection.h" #include "BtRequestFactory.h" #include "BtMessageFactory.h" class AbstractBtMessage : public BtMessage { protected: bool sendingInProgress; bool invalidate; bool uploading; int32_t cuid; BtContextHandle btContext; PieceStorageHandle pieceStorage; PeerHandle peer; BtMessageDispatcherWeakHandle dispatcher; BtMessageFactoryWeakHandle messageFactory; BtRequestFactoryWeakHandle requestFactory; PeerConnectionWeakHandle peerConnection; BtMessageValidatorHandle validator; BtEventListeners listeners; const Logger* logger; public: AbstractBtMessage():sendingInProgress(false), invalidate(false), uploading(false), cuid(0), btContext(0), pieceStorage(0), peer(0), validator(0), logger(LogFactory::getInstance()) {} 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; } PeerHandle getPeer() const { return peer; } void setPeer(const PeerHandle& peer) { this->peer = peer; } virtual void doReceivedAction() {} virtual bool validate(Errors& errors) { if(validator.get()) { return validator->validate(errors); } else { return true; } } virtual void onQueued() {} virtual void handleEvent(const BtEventHandle& event) { for(BtEventListeners::iterator itr = listeners.begin(); itr != listeners.end(); ++itr) { (*itr)->handleEvent(event); } } void addEventListener(const BtEventListenerHandle& listener) { listeners.push_back(listener); } void setBtMessageValidator(const BtMessageValidatorHandle& validator) { this->validator = validator; } BtMessageValidatorHandle getBtMessageValidator() const { return validator; } void setBtContext(const BtContextHandle& btContext) { this->btContext = btContext; this->pieceStorage = PIECE_STORAGE(btContext); } BtContextHandle getBtContext() const { return btContext; } void setBtMessageDispatcher(const BtMessageDispatcherWeakHandle& dispatcher) { this->dispatcher = dispatcher; } void setPeerConnection(const PeerConnectionWeakHandle& peerConnection) { this->peerConnection = peerConnection; } void setBtMessageFactory(const BtMessageFactoryWeakHandle& factory) { this->messageFactory = factory; } void setBtRequestFactory(const BtRequestFactoryWeakHandle& factory) { this->requestFactory = factory; } }; typedef SharedHandle AbstractBtMessageHandle; #endif // _D_ABSTRACT_BT_MESSAGE_H_