mirror of https://github.com/aria2/aria2
Buffer up at most A2_IOV_MAX buffer entries for BtMessages
parent
e0ea88ebcf
commit
c04df672d1
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue