summaryrefslogtreecommitdiff
path: root/src/DefaultBtRequestFactory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DefaultBtRequestFactory.cc')
-rw-r--r--src/DefaultBtRequestFactory.cc151
1 files changed, 76 insertions, 75 deletions
diff --git a/src/DefaultBtRequestFactory.cc b/src/DefaultBtRequestFactory.cc
index beaac7de..29b12b99 100644
--- a/src/DefaultBtRequestFactory.cc
+++ b/src/DefaultBtRequestFactory.cc
@@ -53,38 +53,43 @@
namespace aria2 {
DefaultBtRequestFactory::DefaultBtRequestFactory()
- : pieceStorage_(nullptr),
- dispatcher_(nullptr),
- messageFactory_(nullptr),
- cuid_(0)
-{}
+ : pieceStorage_(nullptr),
+ dispatcher_(nullptr),
+ messageFactory_(nullptr),
+ cuid_(0)
+{
+}
DefaultBtRequestFactory::~DefaultBtRequestFactory() {}
-void DefaultBtRequestFactory::addTargetPiece(const std::shared_ptr<Piece>& piece)
+void DefaultBtRequestFactory::addTargetPiece(
+ const std::shared_ptr<Piece>& piece)
{
pieces_.push_back(piece);
}
namespace {
-class AbortCompletedPieceRequest
-{
+class AbortCompletedPieceRequest {
private:
BtMessageDispatcher* dispatcher_;
+
public:
- AbortCompletedPieceRequest(BtMessageDispatcher* dispatcher):
- dispatcher_(dispatcher) {}
+ AbortCompletedPieceRequest(BtMessageDispatcher* dispatcher)
+ : dispatcher_(dispatcher)
+ {
+ }
void operator()(const std::shared_ptr<Piece>& piece)
{
- if(piece->pieceComplete()) {
+ if (piece->pieceComplete()) {
dispatcher_->doAbortOutstandingRequestAction(piece);
}
}
};
} // namespace
-void DefaultBtRequestFactory::removeCompletedPiece() {
+void DefaultBtRequestFactory::removeCompletedPiece()
+{
std::for_each(pieces_.begin(), pieces_.end(),
AbortCompletedPieceRequest(dispatcher_));
pieces_.erase(std::remove_if(pieces_.begin(), pieces_.end(),
@@ -92,12 +97,12 @@ void DefaultBtRequestFactory::removeCompletedPiece() {
pieces_.end());
}
-void DefaultBtRequestFactory::removeTargetPiece
-(const std::shared_ptr<Piece>& piece)
+void DefaultBtRequestFactory::removeTargetPiece(
+ const std::shared_ptr<Piece>& piece)
{
- pieces_.erase(std::remove_if(pieces_.begin(), pieces_.end(),
- derefEqual(piece)),
- pieces_.end());
+ pieces_.erase(
+ std::remove_if(pieces_.begin(), pieces_.end(), derefEqual(piece)),
+ pieces_.end());
dispatcher_->doAbortOutstandingRequestAction(piece);
pieceStorage_->cancelPiece(piece, cuid_);
}
@@ -108,18 +113,17 @@ private:
std::shared_ptr<Peer> peer_;
PieceStorage* pieceStorage_;
cuid_t cuid_;
+
public:
- ProcessChokedPiece(std::shared_ptr<Peer> peer,
- PieceStorage* pieceStorage,
- cuid_t cuid):
- peer_(std::move(peer)),
- pieceStorage_(pieceStorage),
- cuid_(cuid)
- {}
+ ProcessChokedPiece(std::shared_ptr<Peer> peer, PieceStorage* pieceStorage,
+ cuid_t cuid)
+ : peer_(std::move(peer)), pieceStorage_(pieceStorage), cuid_(cuid)
+ {
+ }
void operator()(const std::shared_ptr<Piece>& piece)
{
- if(!peer_->isInPeerAllowedIndexSet(piece->getIndex())) {
+ if (!peer_->isInPeerAllowedIndexSet(piece->getIndex())) {
pieceStorage_->cancelPiece(piece, cuid_);
}
}
@@ -130,8 +134,9 @@ namespace {
class FindChokedPiece {
private:
std::shared_ptr<Peer> peer_;
+
public:
- FindChokedPiece(std::shared_ptr<Peer> peer):peer_(std::move(peer)) {}
+ FindChokedPiece(std::shared_ptr<Peer> peer) : peer_(std::move(peer)) {}
bool operator()(const std::shared_ptr<Piece>& piece)
{
@@ -144,13 +149,14 @@ void DefaultBtRequestFactory::doChokedAction()
{
std::for_each(pieces_.begin(), pieces_.end(),
ProcessChokedPiece(peer_, pieceStorage_, cuid_));
- pieces_.erase(std::remove_if(pieces_.begin(), pieces_.end(),
- FindChokedPiece(peer_)),
- pieces_.end());
+ pieces_.erase(
+ std::remove_if(pieces_.begin(), pieces_.end(), FindChokedPiece(peer_)),
+ pieces_.end());
}
-void DefaultBtRequestFactory::removeAllTargetPiece() {
- for(auto & elem : pieces_) {
+void DefaultBtRequestFactory::removeAllTargetPiece()
+{
+ for (auto& elem : pieces_) {
dispatcher_->doAbortOutstandingRequestAction(elem);
pieceStorage_->cancelPiece(elem, cuid_);
}
@@ -160,26 +166,26 @@ void DefaultBtRequestFactory::removeAllTargetPiece() {
std::vector<std::unique_ptr<BtRequestMessage>>
DefaultBtRequestFactory::createRequestMessages(size_t max, bool endGame)
{
- if(endGame) {
+ if (endGame) {
return createRequestMessagesOnEndGame(max);
}
auto requests = std::vector<std::unique_ptr<BtRequestMessage>>{};
- size_t getnum = max-requests.size();
+ size_t getnum = max - requests.size();
auto blockIndexes = std::vector<size_t>{};
blockIndexes.reserve(getnum);
- for(auto itr = std::begin(pieces_), eoi = std::end(pieces_);
- itr != eoi && getnum; ++itr) {
+ for (auto itr = std::begin(pieces_), eoi = std::end(pieces_);
+ itr != eoi && getnum; ++itr) {
auto& piece = *itr;
- if(piece->getMissingUnusedBlockIndex(blockIndexes, getnum)) {
+ if (piece->getMissingUnusedBlockIndex(blockIndexes, getnum)) {
getnum -= blockIndexes.size();
- for(auto i = std::begin(blockIndexes), eoi2 = std::end(blockIndexes);
- i != eoi2; ++i) {
- A2_LOG_DEBUG
- (fmt("Creating RequestMessage index=%lu, begin=%u,"
- " blockIndex=%lu",
- static_cast<unsigned long>(piece->getIndex()),
- static_cast<unsigned int>((*i)*piece->getBlockLength()),
- static_cast<unsigned long>(*i)));
+ for (auto i = std::begin(blockIndexes), eoi2 = std::end(blockIndexes);
+ i != eoi2; ++i) {
+ A2_LOG_DEBUG(
+ fmt("Creating RequestMessage index=%lu, begin=%u,"
+ " blockIndex=%lu",
+ static_cast<unsigned long>(piece->getIndex()),
+ static_cast<unsigned int>((*i) * piece->getBlockLength()),
+ static_cast<unsigned long>(*i)));
requests.push_back(messageFactory_->createRequestMessage(piece, *i));
}
blockIndexes.clear();
@@ -192,8 +198,8 @@ std::vector<std::unique_ptr<BtRequestMessage>>
DefaultBtRequestFactory::createRequestMessagesOnEndGame(size_t max)
{
auto requests = std::vector<std::unique_ptr<BtRequestMessage>>{};
- for(auto itr = std::begin(pieces_), eoi = std::end(pieces_);
- itr != eoi && requests.size() < max; ++itr) {
+ for (auto itr = std::begin(pieces_), eoi = std::end(pieces_);
+ itr != eoi && requests.size() < max; ++itr) {
auto& piece = *itr;
const size_t mislen = piece->getBitfieldLength();
auto misbitfield = make_unique<unsigned char[]>(mislen);
@@ -202,31 +208,30 @@ DefaultBtRequestFactory::createRequestMessagesOnEndGame(size_t max)
auto missingBlockIndexes = std::vector<size_t>{};
size_t blockIndex = 0;
- for(size_t i = 0; i < mislen; ++i) {
+ for (size_t i = 0; i < mislen; ++i) {
unsigned char bits = misbitfield[i];
unsigned char mask = 128;
- for(size_t bi = 0; bi < 8; ++bi, mask >>= 1, ++blockIndex) {
- if(bits & mask) {
+ for (size_t bi = 0; bi < 8; ++bi, mask >>= 1, ++blockIndex) {
+ if (bits & mask) {
missingBlockIndexes.push_back(blockIndex);
}
}
}
std::shuffle(std::begin(missingBlockIndexes), std::end(missingBlockIndexes),
*SimpleRandomizer::getInstance());
- for(auto bitr = std::begin(missingBlockIndexes),
- eoi2 = std::end(missingBlockIndexes);
- bitr != eoi2 && requests.size() < max; ++bitr) {
+ for (auto bitr = std::begin(missingBlockIndexes),
+ eoi2 = std::end(missingBlockIndexes);
+ bitr != eoi2 && requests.size() < max; ++bitr) {
size_t blockIndex = *bitr;
- if(!dispatcher_->isOutstandingRequest(piece->getIndex(),
- blockIndex)) {
- A2_LOG_DEBUG
- (fmt("Creating RequestMessage index=%lu, begin=%u,"
- " blockIndex=%lu",
- static_cast<unsigned long>(piece->getIndex()),
- static_cast<unsigned int>(blockIndex*piece->getBlockLength()),
- static_cast<unsigned long>(blockIndex)));
- requests.push_back(messageFactory_->createRequestMessage
- (piece, blockIndex));
+ if (!dispatcher_->isOutstandingRequest(piece->getIndex(), blockIndex)) {
+ A2_LOG_DEBUG(
+ fmt("Creating RequestMessage index=%lu, begin=%u,"
+ " blockIndex=%lu",
+ static_cast<unsigned long>(piece->getIndex()),
+ static_cast<unsigned int>(blockIndex * piece->getBlockLength()),
+ static_cast<unsigned long>(blockIndex)));
+ requests.push_back(
+ messageFactory_->createRequestMessage(piece, blockIndex));
}
}
}
@@ -234,17 +239,14 @@ DefaultBtRequestFactory::createRequestMessagesOnEndGame(size_t max)
}
namespace {
-class CountMissingBlock
-{
+class CountMissingBlock {
private:
size_t numMissingBlock_;
+
public:
- CountMissingBlock():numMissingBlock_(0) {}
+ CountMissingBlock() : numMissingBlock_(0) {}
- size_t getNumMissingBlock()
- {
- return numMissingBlock_;
- }
+ size_t getNumMissingBlock() { return numMissingBlock_; }
void operator()(const std::shared_ptr<Piece>& piece)
{
@@ -255,12 +257,11 @@ public:
size_t DefaultBtRequestFactory::countMissingBlock()
{
- return std::for_each(pieces_.begin(), pieces_.end(),
- CountMissingBlock()).getNumMissingBlock();
+ return std::for_each(pieces_.begin(), pieces_.end(), CountMissingBlock())
+ .getNumMissingBlock();
}
-std::vector<size_t>
-DefaultBtRequestFactory::getTargetPieceIndexes() const
+std::vector<size_t> DefaultBtRequestFactory::getTargetPieceIndexes() const
{
auto res = std::vector<size_t>{};
res.reserve(pieces_.size());
@@ -279,8 +280,8 @@ void DefaultBtRequestFactory::setPeer(const std::shared_ptr<Peer>& peer)
peer_ = peer;
}
-void DefaultBtRequestFactory::setBtMessageDispatcher
-(BtMessageDispatcher* dispatcher)
+void DefaultBtRequestFactory::setBtMessageDispatcher(
+ BtMessageDispatcher* dispatcher)
{
dispatcher_ = dispatcher;
}