/* */ #ifndef _D_ANNOUNCE_TIER_H_ #define _D_ANNOUNCE_TIER_H_ #include "common.h" #include "SharedHandle.h" #include #include namespace aria2 { class AnnounceTier { public: enum AnnounceEvent { STARTED, STARTED_AFTER_COMPLETION, DOWNLOADING, STOPPED, COMPLETED, SEEDING, HALTED }; AnnounceEvent event; std::deque urls; AnnounceTier(const std::deque& urls):event(STARTED), urls(urls) {} void nextEvent() { switch(event) { case STARTED: event = DOWNLOADING; break; case STARTED_AFTER_COMPLETION: event = SEEDING; break; case STOPPED: event = HALTED; break; case COMPLETED: event = SEEDING; break; default: break; } } void nextEventIfAfterStarted() { switch(event) { case STOPPED: event = HALTED; break; case COMPLETED: event = SEEDING; break; default: break; } } }; typedef SharedHandle AnnounceTierHandle; typedef std::deque AnnounceTiers; } // namespace aria2 #endif // _D_ANNOUNCE_TIER_H_