/* */ #ifndef D_BT_RUNTIME_H #define D_BT_RUNTIME_H #include "common.h" #include "BtConstants.h" namespace aria2 { class BtRuntime { private: uint64_t uploadLengthAtStartup_; uint16_t port_; bool halt_; unsigned int connections_; bool ready_; // Maximum number of peers to hold connections at the same time. // 0 means unlimited. unsigned int maxPeers_; // Minimum number of peers. This value is used for getting more peers from // tracker. 0 means always the number of peers is under minimum. unsigned int minPeers_; static const unsigned int DEFAULT_MIN_PEERS = 40; public: BtRuntime(): uploadLengthAtStartup_(0), port_(0), halt_(false), connections_(0), ready_(false), maxPeers_(DEFAULT_MAX_PEERS), minPeers_(DEFAULT_MIN_PEERS) {} ~BtRuntime() {} uint64_t getUploadLengthAtStartup() const { return uploadLengthAtStartup_; } void setUploadLengthAtStartup(uint64_t length) { uploadLengthAtStartup_ = length; } void setListenPort(uint16_t port) { port_ = port; } uint16_t getListenPort() const { return port_; } bool isHalt() const { return halt_; } void setHalt(bool halt) { halt_ = halt; } unsigned int getConnections() const { return connections_; } void increaseConnections() { ++connections_; } void decreaseConnections() { --connections_; } bool lessThanMaxPeers() const { return maxPeers_ == 0 || connections_ < maxPeers_; } bool lessThanMinPeers() const { return minPeers_ == 0 || connections_ < minPeers_; } bool lessThanEqMinPeers() const { return minPeers_ == 0 || connections_ <= minPeers_; } bool ready() { return ready_; } void setReady(bool go) { ready_ = go; } void setMaxPeers(unsigned int maxPeers) { maxPeers_ = maxPeers; minPeers_ = static_cast(maxPeers*0.8); if(minPeers_ == 0 && maxPeers != 0) { minPeers_ = maxPeers; } } unsigned int getMaxPeers() const { return maxPeers_; } static const unsigned int DEFAULT_MAX_PEERS = 55; }; typedef SharedHandle BtRuntimeHandle; } // namespace aria2 #endif // D_BT_RUNTIME_H