Buffer up at most A2_IOV_MAX buffer entries for BtMessages

pull/43/head
Tatsuhiro Tsujikawa 2013-01-11 18:46:36 +09:00
parent e0ea88ebcf
commit c04df672d1
4 changed files with 15 additions and 6 deletions

View File

@ -116,13 +116,11 @@ void DefaultBtMessageDispatcher::sendMessagesInternal()
}
}
void DefaultBtMessageDispatcher::sendMessages() {
// First flush any pending data in the buffer.
peerConnection_->sendPendingData();
if(!peerConnection_->sendBufferIsEmpty()) {
return;
void DefaultBtMessageDispatcher::sendMessages()
{
if(peerConnection_->getBufferEntrySize() < A2_IOV_MAX) {
sendMessagesInternal();
}
sendMessagesInternal();
peerConnection_->sendPendingData();
}

View File

@ -253,6 +253,11 @@ bool PeerConnection::sendBufferIsEmpty() const
return socketBuffer_.sendBufferIsEmpty();
}
size_t PeerConnection::getBufferEntrySize() const
{
return socketBuffer_.getBufferEntrySize();
}
ssize_t PeerConnection::sendPendingData()
{
ssize_t writtenLength = socketBuffer_.send();

View File

@ -119,6 +119,8 @@ public:
bool sendBufferIsEmpty() const;
size_t getBufferEntrySize() const;
ssize_t sendPendingData();
const unsigned char* getBuffer() const

View File

@ -144,6 +144,10 @@ public:
// Returns true if queue is empty.
bool sendBufferIsEmpty() const;
size_t getBufferEntrySize() const
{
return bufq_.size();
}
};
} // namespace aria2