/* */ #include "Peer.h" PeerHandle nullPeer = PeerHandle(new Peer("", 0, 0, 0)); void Peer::updateBitfield(int index, int operation) { if(operation == 1) { bitfield->setBit(index); } else if(operation == 0) { bitfield->unsetBit(index); } } #define THRESHOLD 1024*1024*2 bool Peer::shouldBeChoking() const { if(optUnchoking) { return false; } return chokingRequired; } bool Peer::hasPiece(int index) const { return bitfield->isBitSet(index); } bool Peer::isSeeder() const { return bitfield->isAllBitSet(); } void Peer::resetStatus() { tryCount = 0; cuid = 0; amChoking = true; amInterested = false; peerChoking = true; peerInterested = false; resetDeltaUpload(); resetDeltaDownload(); chokingRequired = true; optUnchoking = false; snubbing = false; fastExtensionEnabled = false; latency = DEFAULT_LATENCY; fastSet.clear(); } bool Peer::isInFastSet(int index) const { return find(fastSet.begin(), fastSet.end(), index) != fastSet.end(); } void Peer::addFastSetIndex(int index) { if(!isInFastSet(index)) { fastSet.push_back(index); } } void Peer::setAllBitfield() { bitfield->setAllBit(); } void Peer::updateLatency(int latency) { this->latency = (this->latency*20+latency*80)/200; }