/* */ #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_