/* */ #ifndef _D_COMMAND_H_ #define _D_COMMAND_H_ #include "common.h" #include namespace aria2 { class Logger; typedef int64_t cuid_t; class Command { public: enum STATUS { STATUS_ALL, STATUS_INACTIVE, STATUS_ACTIVE, STATUS_REALTIME, STATUS_ONESHOT_REALTIME }; private: STATUS status_; cuid_t cuid_; Logger* logger_; bool readEvent_; bool writeEvent_; bool errorEvent_; bool hupEvent_; protected: Logger* getLogger() const { return logger_; } bool readEventEnabled() const { return readEvent_; } bool writeEventEnabled() const { return writeEvent_; } bool errorEventEnabled() const { return errorEvent_; } bool hupEventEnabled() const { return hupEvent_; } public: Command(cuid_t cuid); virtual ~Command() {} virtual bool execute() = 0; cuid_t getCuid() const { return cuid_; } void setStatusActive() { status_ = STATUS_ACTIVE; } void setStatusInactive() { status_ = STATUS_INACTIVE; } void setStatusRealtime() { status_ = STATUS_REALTIME; } void setStatus(STATUS status); bool statusMatch(Command::STATUS statusFilter) const { return statusFilter <= status_; } void transitStatus(); void readEventReceived(); void writeEventReceived(); void errorEventReceived(); void hupEventReceived(); void clearIOEvents(); }; } // namespace aria2 #endif // _D_COMMAND_H_