/* */ #ifndef _D_PEER_STORAGE_H_ #define _D_PEER_STORAGE_H_ #include "common.h" #include "SharedHandle.h" #include "TransferStat.h" #include 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::deque >& peers) = 0; /** * Returns internal peer list. */ virtual const std::deque >& getPeers() = 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::deque >& peers) = 0; /** * Calculates current download/upload statistics. */ virtual TransferStat calculateStat() = 0; virtual void updateTransferStatFor(const SharedHandle& peer) = 0; virtual TransferStat getTransferStatFor(const SharedHandle& peer) = 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; }; typedef SharedHandle PeerStorageHandle; } // namespace aria2 #endif // _D_PEER_STORAGE_H_