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() { void DefaultBtMessageDispatcher::sendMessages()
// First flush any pending data in the buffer. {
peerConnection_->sendPendingData(); if(peerConnection_->getBufferEntrySize() < A2_IOV_MAX) {
if(!peerConnection_->sendBufferIsEmpty()) {
return;
}
sendMessagesInternal(); sendMessagesInternal();
}
peerConnection_->sendPendingData(); peerConnection_->sendPendingData();
} }

View File

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

View File

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

View File

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