Add better handling of RTT for STREAM_P2P

This commit is contained in:
RipleyTom 2020-10-08 01:25:35 +02:00 committed by Ivan
parent bbda618beb
commit 2babe4c236

View file

@ -282,12 +282,25 @@ public:
{ {
std::lock_guard lock(data_mutex); std::lock_guard lock(data_mutex);
rtts[sock_id].num_retries = 0; rtts[sock_id].num_retries = 0;
// TODO: reduce RTT?
const auto now = std::chrono::system_clock::now();
for (auto it = msgs.begin(); it != msgs.end();) for (auto it = msgs.begin(); it != msgs.end();)
{ {
auto& msg = it->second; auto& msg = it->second;
if (msg.sock_id == sock_id && msg.seq < ack) if (msg.sock_id == sock_id && msg.seq < ack)
{ {
// Decreases RTT if msg is early
if (now < it->first)
{
const auto actual_rtt = std::chrono::duration_cast<std::chrono::milliseconds>(now - it->second.initial_sendtime);
const auto cur_rtt = rtts[sock_id].rtt_time;
if (cur_rtt > actual_rtt)
{
rtts[sock_id].rtt_time = (actual_rtt + cur_rtt) / 2;
}
}
it = msgs.erase(it); it = msgs.erase(it);
continue; continue;
} }