We don't need to call PeerConnection::sendPendingData() twice when

sending piece message.
pull/1/head
Tatsuhiro Tsujikawa 2011-01-08 17:55:53 +09:00
parent 3020087a75
commit acfb290eca
2 changed files with 4 additions and 7 deletions

View File

@ -180,18 +180,16 @@ void BtPieceMessage::send()
A2_LOG_DEBUG(fmt("msglength = %lu bytes", A2_LOG_DEBUG(fmt("msglength = %lu bytes",
static_cast<unsigned long>(msgHdrLen+blockLength_))); static_cast<unsigned long>(msgHdrLen+blockLength_)));
getPeerConnection()->pushBytes(msgHdr, msgHdrLen); getPeerConnection()->pushBytes(msgHdr, msgHdrLen);
getPeerConnection()->sendPendingData();
off_t pieceDataOffset = off_t pieceDataOffset =
(off_t)index_*downloadContext_->getPieceLength()+begin_; (off_t)index_*downloadContext_->getPieceLength()+begin_;
writtenLength = sendPieceData(pieceDataOffset, blockLength_); pushPieceData(pieceDataOffset, blockLength_);
} else {
writtenLength = getPeerConnection()->sendPendingData();
} }
writtenLength = getPeerConnection()->sendPendingData();
getPeer()->updateUploadLength(writtenLength); getPeer()->updateUploadLength(writtenLength);
setSendingInProgress(!getPeerConnection()->sendBufferIsEmpty()); setSendingInProgress(!getPeerConnection()->sendBufferIsEmpty());
} }
size_t BtPieceMessage::sendPieceData(off_t offset, size_t length) const void BtPieceMessage::pushPieceData(off_t offset, size_t length) const
{ {
assert(length <= 16*1024); assert(length <= 16*1024);
unsigned char* buf = new unsigned char[length]; unsigned char* buf = new unsigned char[length];
@ -204,7 +202,6 @@ size_t BtPieceMessage::sendPieceData(off_t offset, size_t length) const
} }
if(r == static_cast<ssize_t>(length)) { if(r == static_cast<ssize_t>(length)) {
getPeerConnection()->pushBytes(buf, length); getPeerConnection()->pushBytes(buf, length);
return getPeerConnection()->sendPendingData();
} else { } else {
throw DL_ABORT_EX(EX_DATA_READ); throw DL_ABORT_EX(EX_DATA_READ);
} }

View File

@ -64,7 +64,7 @@ private:
void erasePieceOnDisk(const SharedHandle<Piece>& piece); void erasePieceOnDisk(const SharedHandle<Piece>& piece);
size_t sendPieceData(off_t offset, size_t length) const; void pushPieceData(off_t offset, size_t length) const;
public: public:
BtPieceMessage(size_t index = 0, uint32_t begin = 0, size_t blockLength = 0); BtPieceMessage(size_t index = 0, uint32_t begin = 0, size_t blockLength = 0);