Index: webrtc/tools/network_tester/packet_sender.cc |
diff --git a/webrtc/tools/network_tester/packet_sender.cc b/webrtc/tools/network_tester/packet_sender.cc |
index a0629d9de83467af7d530de73506d3038a443cfb..6bd4dd075cf1cc7a2c11b6b5f976c1f54c913820 100644 |
--- a/webrtc/tools/network_tester/packet_sender.cc |
+++ b/webrtc/tools/network_tester/packet_sender.cc |
@@ -10,6 +10,7 @@ |
#include "webrtc/tools/network_tester/packet_sender.h" |
+#include <algorithm> |
#include <string> |
#include <utility> |
@@ -24,20 +25,23 @@ namespace { |
class SendPacketTask : public rtc::QueuedTask { |
public: |
explicit SendPacketTask(PacketSender* packet_sender) |
- : packet_sender_(packet_sender) {} |
+ : target_time_ms_(rtc::TimeMillis()), packet_sender_(packet_sender) {} |
private: |
bool Run() override { |
if (packet_sender_->IsSending()) { |
packet_sender_->SendPacket(); |
+ target_time_ms_ += packet_sender_->GetSendIntervalMs(); |
+ int64_t delay_ms = std::max(static_cast<int64_t>(0), |
+ target_time_ms_ - rtc::TimeMillis()); |
rtc::TaskQueue::Current()->PostDelayedTask( |
- std::unique_ptr<QueuedTask>(this), |
- packet_sender_->GetSendIntervalMs()); |
+ std::unique_ptr<QueuedTask>(this), delay_ms); |
return false; |
} else { |
return true; |
} |
} |
+ int64_t target_time_ms_; |
PacketSender* const packet_sender_; |
}; |