optimize socket send buffers a bit

This commit is contained in:
Arvid Norberg 2011-10-19 02:40:37 +00:00
parent a9b51e1579
commit d3fb55e1da
3 changed files with 7 additions and 8 deletions

View File

@ -538,7 +538,7 @@ namespace libtorrent
// these functions are virtual to let bt_peer_connection hook into them
// and encrypt the content
enum message_type_flags { message_type_request = 1 };
enum message_type_flags { message_type_request = 1, cork_message = 2 };
virtual void send_buffer(char const* begin, int size, int flags = 0
, void (*fun)(char*, int, void*) = 0, void* userdata = 0);
virtual void setup_send();

View File

@ -2339,12 +2339,12 @@ namespace libtorrent
char* ptr = msg;
detail::write_int32(r.length + 1 + 4 + 4 + 4 + piece_list_buf.size(), ptr);
send_buffer(msg, 17);
send_buffer(&piece_list_buf[0], piece_list_buf.size());
send_buffer(msg, 17, cork_message);
send_buffer(&piece_list_buf[0], piece_list_buf.size(), cork_message);
}
else
{
send_buffer(msg, 13);
send_buffer(msg, 13, cork_message);
}
append_send_buffer(buffer.get(), r.length

View File

@ -4458,7 +4458,6 @@ namespace libtorrent
if (j.buffer) m_ses.m_disk_thread.rename_buffer(j.buffer, "dispatched send buffer");
#endif
write_piece(r, buffer);
setup_send();
}
void peer_connection::assign_bandwidth(int channel, int amount)
@ -5005,7 +5004,7 @@ namespace libtorrent
, boost::bind(&session_impl::free_buffer, boost::ref(m_ses), _1));
++i;
}
setup_send();
if ((flags & cork_message) == 0) setup_send();
}
template<class T>
@ -5030,7 +5029,7 @@ namespace libtorrent
++m_ses.m_num_messages[aux::session_impl::on_read_counter];
int size = 8;
int index = 0;
while (bytes_transferred > size) { size <<= 1; ++index; }
while (bytes_transferred > size + 13) { size <<= 1; ++index; }
int num_max = sizeof(m_ses.m_recv_buffer_sizes)/sizeof(m_ses.m_recv_buffer_sizes[0]);
if (index >= num_max) index = num_max - 1;
++m_ses.m_recv_buffer_sizes[index];
@ -5378,7 +5377,7 @@ namespace libtorrent
++m_ses.m_num_messages[aux::session_impl::on_write_counter];
int size = 8;
int index = 0;
while (bytes_transferred > size) { size <<= 1; ++index; }
while (bytes_transferred > size + 13) { size <<= 1; ++index; }
int num_max = sizeof(m_ses.m_send_buffer_sizes)/sizeof(m_ses.m_send_buffer_sizes[0]);
if (index >= num_max) index = num_max - 1;
++m_ses.m_send_buffer_sizes[index];