/* */ #ifndef _D_BT_SEEDER_STATE_CHOKE_H_ #define _D_BT_SEEDER_STATE_CHOKE_H_ #include "common.h" #include #include "SharedHandle.h" #include "TimeA2.h" namespace aria2 { class Peer; class Logger; class BtSeederStateChoke { private: int _round; Time _lastRound; Logger* _logger; class PeerEntry { private: SharedHandle _peer; size_t _outstandingUpload; Time _lastAmUnchoking; bool _recentUnchoking; unsigned int _uploadSpeed; const static time_t TIME_FRAME = 20; public: PeerEntry(const SharedHandle& peer, const struct timeval& now); bool operator<(const PeerEntry& rhs) const; SharedHandle getPeer() const; unsigned int getUploadSpeed() const; }; void unchoke(std::deque& peers); friend class GenPeerEntry; friend class NotInterestedPeer; public: BtSeederStateChoke(); ~BtSeederStateChoke(); void executeChoke(const std::deque >& peerSet); const Time& getLastRound() const; }; } // namespace aria2 #endif // _D_BT_SEEDER_STATE_CHOKE_H_