/* */ #ifndef D_PEER_STORAGE_H #define D_PEER_STORAGE_H #include "common.h" #include #include #include "SharedHandle.h" #include "TransferStat.h" namespace aria2 { class Peer; class PeerStorage { public: virtual ~PeerStorage() {} /** * Adds new peer to the internal peer list. * If the peer is added successfully, returns true. Otherwise returns false. */ virtual bool addPeer(const SharedHandle& peer) = 0; /** * Adds all peers in peers to internal peer list. */ virtual void addPeer(const std::vector >& peers) = 0; /** * Returns internal peer list. */ virtual const std::deque >& getPeers() = 0; /** * Returns the number of peers. */ virtual size_t countPeer() const = 0; /** * Returns internal dropped peer list. */ virtual const std::deque >& getDroppedPeers() = 0; /** * Returns one of the unused peers. */ virtual SharedHandle getUnusedPeer() = 0; /** * Returns true if at least one unused peer exists. * Otherwise returns false. */ virtual bool isPeerAvailable() = 0; /** * Returns the list of peers which are currently connected from localhost. */ virtual void getActivePeers(std::vector >& peers) = 0; /** * Returns true if peer with ipaddr should be ignored because, for * example, it sends bad data. */ virtual bool isBadPeer(const std::string& ipaddr) = 0; /** * Adds peer with ipaddr in bad peer set. */ virtual void addBadPeer(const std::string& ipaddr) = 0; /** * Tells PeerStorage object that peer is no longer used in the session. */ virtual void returnPeer(const SharedHandle& peer) = 0; virtual bool chokeRoundIntervalElapsed() = 0; virtual void executeChoke() = 0; }; } // namespace aria2 #endif // D_PEER_STORAGE_H