mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Remove deprecated API for emulated network stats
Bug: None Change-Id: Ib70a117d67002d108474214490ed1a8bb61da463 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283140 Commit-Queue: Artem Titov <titovartem@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38619}
This commit is contained in:
parent
31364615d7
commit
5f42cdcb31
8 changed files with 50 additions and 93 deletions
|
@ -144,10 +144,6 @@ class EmulatedNetworkManagerInterface {
|
||||||
// Passes summarized network stats for endpoints for this manager into
|
// Passes summarized network stats for endpoints for this manager into
|
||||||
// specified `stats_callback`. Callback will be executed on network emulation
|
// specified `stats_callback`. Callback will be executed on network emulation
|
||||||
// internal task queue.
|
// internal task queue.
|
||||||
// Deprecated.
|
|
||||||
virtual void GetStats(
|
|
||||||
std::function<void(std::unique_ptr<EmulatedNetworkStats>)> stats_callback)
|
|
||||||
const = 0;
|
|
||||||
virtual void GetStats(
|
virtual void GetStats(
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) const = 0;
|
std::function<void(EmulatedNetworkStats)> stats_callback) const = 0;
|
||||||
};
|
};
|
||||||
|
@ -332,11 +328,6 @@ class NetworkEmulationManager {
|
||||||
// Passes combined network stats for all specified `endpoints` into specified
|
// Passes combined network stats for all specified `endpoints` into specified
|
||||||
// `stats_callback`. Callback will be executed on network emulation
|
// `stats_callback`. Callback will be executed on network emulation
|
||||||
// internal task queue.
|
// internal task queue.
|
||||||
// Deprecated.
|
|
||||||
virtual void GetStats(
|
|
||||||
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
|
||||||
std::function<void(std::unique_ptr<EmulatedNetworkStats>)>
|
|
||||||
stats_callback) = 0;
|
|
||||||
virtual void GetStats(
|
virtual void GetStats(
|
||||||
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) = 0;
|
std::function<void(EmulatedNetworkStats)> stats_callback) = 0;
|
||||||
|
|
|
@ -84,15 +84,6 @@ void EmulatedNetworkManager::StopUpdating() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmulatedNetworkManager::GetStats(
|
|
||||||
std::function<void(std::unique_ptr<EmulatedNetworkStats>)> stats_callback)
|
|
||||||
const {
|
|
||||||
task_queue_->PostTask([stats_callback, this]() {
|
|
||||||
stats_callback(std::make_unique<EmulatedNetworkStats>(
|
|
||||||
endpoints_container_->GetStats()));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void EmulatedNetworkManager::GetStats(
|
void EmulatedNetworkManager::GetStats(
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) const {
|
std::function<void(EmulatedNetworkStats)> stats_callback) const {
|
||||||
task_queue_->PostTask([stats_callback, this]() {
|
task_queue_->PostTask([stats_callback, this]() {
|
||||||
|
|
|
@ -58,8 +58,6 @@ class EmulatedNetworkManager : public rtc::NetworkManagerBase,
|
||||||
std::vector<EmulatedEndpoint*> endpoints() const override {
|
std::vector<EmulatedEndpoint*> endpoints() const override {
|
||||||
return endpoints_container_->GetEndpoints();
|
return endpoints_container_->GetEndpoints();
|
||||||
}
|
}
|
||||||
void GetStats(std::function<void(std::unique_ptr<EmulatedNetworkStats>)>
|
|
||||||
stats_callback) const override;
|
|
||||||
void GetStats(
|
void GetStats(
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) const override;
|
std::function<void(EmulatedNetworkStats)> stats_callback) const override;
|
||||||
|
|
||||||
|
|
|
@ -303,24 +303,6 @@ NetworkEmulationManagerImpl::CreateEmulatedNetworkManagerInterface(
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkEmulationManagerImpl::GetStats(
|
|
||||||
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
|
||||||
std::function<void(std::unique_ptr<EmulatedNetworkStats>)> stats_callback) {
|
|
||||||
task_queue_.PostTask([endpoints, stats_callback,
|
|
||||||
stats_gathering_mode = stats_gathering_mode_]() {
|
|
||||||
EmulatedNetworkStatsBuilder stats_builder(stats_gathering_mode);
|
|
||||||
for (auto* endpoint : endpoints) {
|
|
||||||
// It's safe to cast here because EmulatedEndpointImpl can be the only
|
|
||||||
// implementation of EmulatedEndpoint, because only it has access to
|
|
||||||
// EmulatedEndpoint constructor.
|
|
||||||
auto endpoint_impl = static_cast<EmulatedEndpointImpl*>(endpoint);
|
|
||||||
stats_builder.AddEmulatedNetworkStats(endpoint_impl->stats());
|
|
||||||
}
|
|
||||||
stats_callback(
|
|
||||||
std::make_unique<EmulatedNetworkStats>(stats_builder.Build()));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkEmulationManagerImpl::GetStats(
|
void NetworkEmulationManagerImpl::GetStats(
|
||||||
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) {
|
std::function<void(EmulatedNetworkStats)> stats_callback) {
|
||||||
|
|
|
@ -79,9 +79,6 @@ class NetworkEmulationManagerImpl : public NetworkEmulationManager {
|
||||||
EmulatedNetworkManagerInterface* CreateEmulatedNetworkManagerInterface(
|
EmulatedNetworkManagerInterface* CreateEmulatedNetworkManagerInterface(
|
||||||
const std::vector<EmulatedEndpoint*>& endpoints) override;
|
const std::vector<EmulatedEndpoint*>& endpoints) override;
|
||||||
|
|
||||||
void GetStats(rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
|
||||||
std::function<void(std::unique_ptr<EmulatedNetworkStats>)>
|
|
||||||
stats_callback) override;
|
|
||||||
void GetStats(
|
void GetStats(
|
||||||
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
rtc::ArrayView<EmulatedEndpoint* const> endpoints,
|
||||||
std::function<void(EmulatedNetworkStats)> stats_callback) override;
|
std::function<void(EmulatedNetworkStats)> stats_callback) override;
|
||||||
|
|
|
@ -255,19 +255,19 @@ TEST(NetworkEmulationManagerTest, Run) {
|
||||||
|
|
||||||
const int64_t single_packet_size = data.size() + kOverheadIpv4Udp;
|
const int64_t single_packet_size = data.size() + kOverheadIpv4Udp;
|
||||||
std::atomic<int> received_stats_count{0};
|
std::atomic<int> received_stats_count{0};
|
||||||
nt1->GetStats([&](std::unique_ptr<EmulatedNetworkStats> st) {
|
nt1->GetStats([&](EmulatedNetworkStats st) {
|
||||||
EXPECT_EQ(st->PacketsSent(), 2000l);
|
EXPECT_EQ(st.PacketsSent(), 2000l);
|
||||||
EXPECT_EQ(st->BytesSent().bytes(), single_packet_size * 2000l);
|
EXPECT_EQ(st.BytesSent().bytes(), single_packet_size * 2000l);
|
||||||
EXPECT_THAT(st->local_addresses,
|
EXPECT_THAT(st.local_addresses,
|
||||||
ElementsAreArray({alice_endpoint->GetPeerLocalAddress()}));
|
ElementsAreArray({alice_endpoint->GetPeerLocalAddress()}));
|
||||||
EXPECT_EQ(st->PacketsReceived(), 2000l);
|
EXPECT_EQ(st.PacketsReceived(), 2000l);
|
||||||
EXPECT_EQ(st->BytesReceived().bytes(), single_packet_size * 2000l);
|
EXPECT_EQ(st.BytesReceived().bytes(), single_packet_size * 2000l);
|
||||||
EXPECT_EQ(st->PacketsDiscardedNoReceiver(), 0l);
|
EXPECT_EQ(st.PacketsDiscardedNoReceiver(), 0l);
|
||||||
EXPECT_EQ(st->BytesDiscardedNoReceiver().bytes(), 0l);
|
EXPECT_EQ(st.BytesDiscardedNoReceiver().bytes(), 0l);
|
||||||
|
|
||||||
rtc::IPAddress bob_ip = bob_endpoint->GetPeerLocalAddress();
|
rtc::IPAddress bob_ip = bob_endpoint->GetPeerLocalAddress();
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
||||||
st->incoming_stats_per_source;
|
st.incoming_stats_per_source;
|
||||||
ASSERT_EQ(source_st.size(), 1lu);
|
ASSERT_EQ(source_st.size(), 1lu);
|
||||||
EXPECT_EQ(source_st.at(bob_ip).packets_received, 2000l);
|
EXPECT_EQ(source_st.at(bob_ip).packets_received, 2000l);
|
||||||
EXPECT_EQ(source_st.at(bob_ip).bytes_received.bytes(),
|
EXPECT_EQ(source_st.at(bob_ip).bytes_received.bytes(),
|
||||||
|
@ -276,17 +276,17 @@ TEST(NetworkEmulationManagerTest, Run) {
|
||||||
EXPECT_EQ(source_st.at(bob_ip).bytes_discarded_no_receiver.bytes(), 0l);
|
EXPECT_EQ(source_st.at(bob_ip).bytes_discarded_no_receiver.bytes(), 0l);
|
||||||
|
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
||||||
st->outgoing_stats_per_destination;
|
st.outgoing_stats_per_destination;
|
||||||
ASSERT_EQ(dest_st.size(), 1lu);
|
ASSERT_EQ(dest_st.size(), 1lu);
|
||||||
EXPECT_EQ(dest_st.at(bob_ip).packets_sent, 2000l);
|
EXPECT_EQ(dest_st.at(bob_ip).packets_sent, 2000l);
|
||||||
EXPECT_EQ(dest_st.at(bob_ip).bytes_sent.bytes(),
|
EXPECT_EQ(dest_st.at(bob_ip).bytes_sent.bytes(),
|
||||||
single_packet_size * 2000l);
|
single_packet_size * 2000l);
|
||||||
|
|
||||||
// No debug stats are collected by default.
|
// No debug stats are collected by default.
|
||||||
EXPECT_TRUE(st->SentPacketsSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.SentPacketsSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(st->sent_packets_queue_wait_time_us.IsEmpty());
|
EXPECT_TRUE(st.sent_packets_queue_wait_time_us.IsEmpty());
|
||||||
EXPECT_TRUE(st->ReceivedPacketsSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.ReceivedPacketsSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(st->PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(dest_st.at(bob_ip).sent_packets_size.IsEmpty());
|
EXPECT_TRUE(dest_st.at(bob_ip).sent_packets_size.IsEmpty());
|
||||||
EXPECT_TRUE(source_st.at(bob_ip).received_packets_size.IsEmpty());
|
EXPECT_TRUE(source_st.at(bob_ip).received_packets_size.IsEmpty());
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
|
@ -294,22 +294,22 @@ TEST(NetworkEmulationManagerTest, Run) {
|
||||||
|
|
||||||
received_stats_count++;
|
received_stats_count++;
|
||||||
});
|
});
|
||||||
nt2->GetStats([&](std::unique_ptr<EmulatedNetworkStats> st) {
|
nt2->GetStats([&](EmulatedNetworkStats st) {
|
||||||
EXPECT_EQ(st->PacketsSent(), 2000l);
|
EXPECT_EQ(st.PacketsSent(), 2000l);
|
||||||
EXPECT_EQ(st->BytesSent().bytes(), single_packet_size * 2000l);
|
EXPECT_EQ(st.BytesSent().bytes(), single_packet_size * 2000l);
|
||||||
EXPECT_THAT(st->local_addresses,
|
EXPECT_THAT(st.local_addresses,
|
||||||
ElementsAreArray({bob_endpoint->GetPeerLocalAddress()}));
|
ElementsAreArray({bob_endpoint->GetPeerLocalAddress()}));
|
||||||
EXPECT_EQ(st->PacketsReceived(), 2000l);
|
EXPECT_EQ(st.PacketsReceived(), 2000l);
|
||||||
EXPECT_EQ(st->BytesReceived().bytes(), single_packet_size * 2000l);
|
EXPECT_EQ(st.BytesReceived().bytes(), single_packet_size * 2000l);
|
||||||
EXPECT_EQ(st->PacketsDiscardedNoReceiver(), 0l);
|
EXPECT_EQ(st.PacketsDiscardedNoReceiver(), 0l);
|
||||||
EXPECT_EQ(st->BytesDiscardedNoReceiver().bytes(), 0l);
|
EXPECT_EQ(st.BytesDiscardedNoReceiver().bytes(), 0l);
|
||||||
EXPECT_GT(st->FirstReceivedPacketSize(), DataSize::Zero());
|
EXPECT_GT(st.FirstReceivedPacketSize(), DataSize::Zero());
|
||||||
EXPECT_TRUE(st->FirstPacketReceivedTime().IsFinite());
|
EXPECT_TRUE(st.FirstPacketReceivedTime().IsFinite());
|
||||||
EXPECT_TRUE(st->LastPacketReceivedTime().IsFinite());
|
EXPECT_TRUE(st.LastPacketReceivedTime().IsFinite());
|
||||||
|
|
||||||
rtc::IPAddress alice_ip = alice_endpoint->GetPeerLocalAddress();
|
rtc::IPAddress alice_ip = alice_endpoint->GetPeerLocalAddress();
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
||||||
st->incoming_stats_per_source;
|
st.incoming_stats_per_source;
|
||||||
ASSERT_EQ(source_st.size(), 1lu);
|
ASSERT_EQ(source_st.size(), 1lu);
|
||||||
EXPECT_EQ(source_st.at(alice_ip).packets_received, 2000l);
|
EXPECT_EQ(source_st.at(alice_ip).packets_received, 2000l);
|
||||||
EXPECT_EQ(source_st.at(alice_ip).bytes_received.bytes(),
|
EXPECT_EQ(source_st.at(alice_ip).bytes_received.bytes(),
|
||||||
|
@ -318,17 +318,17 @@ TEST(NetworkEmulationManagerTest, Run) {
|
||||||
EXPECT_EQ(source_st.at(alice_ip).bytes_discarded_no_receiver.bytes(), 0l);
|
EXPECT_EQ(source_st.at(alice_ip).bytes_discarded_no_receiver.bytes(), 0l);
|
||||||
|
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
||||||
st->outgoing_stats_per_destination;
|
st.outgoing_stats_per_destination;
|
||||||
ASSERT_EQ(dest_st.size(), 1lu);
|
ASSERT_EQ(dest_st.size(), 1lu);
|
||||||
EXPECT_EQ(dest_st.at(alice_ip).packets_sent, 2000l);
|
EXPECT_EQ(dest_st.at(alice_ip).packets_sent, 2000l);
|
||||||
EXPECT_EQ(dest_st.at(alice_ip).bytes_sent.bytes(),
|
EXPECT_EQ(dest_st.at(alice_ip).bytes_sent.bytes(),
|
||||||
single_packet_size * 2000l);
|
single_packet_size * 2000l);
|
||||||
|
|
||||||
// No debug stats are collected by default.
|
// No debug stats are collected by default.
|
||||||
EXPECT_TRUE(st->SentPacketsSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.SentPacketsSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(st->sent_packets_queue_wait_time_us.IsEmpty());
|
EXPECT_TRUE(st.sent_packets_queue_wait_time_us.IsEmpty());
|
||||||
EXPECT_TRUE(st->ReceivedPacketsSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.ReceivedPacketsSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(st->PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
EXPECT_TRUE(st.PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(dest_st.at(alice_ip).sent_packets_size.IsEmpty());
|
EXPECT_TRUE(dest_st.at(alice_ip).sent_packets_size.IsEmpty());
|
||||||
EXPECT_TRUE(source_st.at(alice_ip).received_packets_size.IsEmpty());
|
EXPECT_TRUE(source_st.at(alice_ip).received_packets_size.IsEmpty());
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
|
@ -409,23 +409,22 @@ TEST(NetworkEmulationManagerTest, DebugStatsCollectedInDebugMode) {
|
||||||
|
|
||||||
const int64_t single_packet_size = data.size() + kOverheadIpv4Udp;
|
const int64_t single_packet_size = data.size() + kOverheadIpv4Udp;
|
||||||
std::atomic<int> received_stats_count{0};
|
std::atomic<int> received_stats_count{0};
|
||||||
nt1->GetStats([&](std::unique_ptr<EmulatedNetworkStats> st) {
|
nt1->GetStats([&](EmulatedNetworkStats st) {
|
||||||
rtc::IPAddress bob_ip = bob_endpoint->GetPeerLocalAddress();
|
rtc::IPAddress bob_ip = bob_endpoint->GetPeerLocalAddress();
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
std::map<rtc::IPAddress, EmulatedNetworkIncomingStats> source_st =
|
||||||
st->incoming_stats_per_source;
|
st.incoming_stats_per_source;
|
||||||
ASSERT_EQ(source_st.size(), 1lu);
|
ASSERT_EQ(source_st.size(), 1lu);
|
||||||
|
|
||||||
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
std::map<rtc::IPAddress, EmulatedNetworkOutgoingStats> dest_st =
|
||||||
st->outgoing_stats_per_destination;
|
st.outgoing_stats_per_destination;
|
||||||
ASSERT_EQ(dest_st.size(), 1lu);
|
ASSERT_EQ(dest_st.size(), 1lu);
|
||||||
|
|
||||||
// No debug stats are collected by default.
|
// No debug stats are collected by default.
|
||||||
EXPECT_EQ(st->SentPacketsSizeCounter().NumSamples(), 2000l);
|
EXPECT_EQ(st.SentPacketsSizeCounter().NumSamples(), 2000l);
|
||||||
EXPECT_EQ(st->ReceivedPacketsSizeCounter().GetAverage(),
|
EXPECT_EQ(st.ReceivedPacketsSizeCounter().GetAverage(), single_packet_size);
|
||||||
single_packet_size);
|
EXPECT_EQ(st.sent_packets_queue_wait_time_us.NumSamples(), 2000l);
|
||||||
EXPECT_EQ(st->sent_packets_queue_wait_time_us.NumSamples(), 2000l);
|
EXPECT_LT(st.sent_packets_queue_wait_time_us.GetMax(), 1);
|
||||||
EXPECT_LT(st->sent_packets_queue_wait_time_us.GetMax(), 1);
|
EXPECT_TRUE(st.PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
||||||
EXPECT_TRUE(st->PacketsDiscardedNoReceiverSizeCounter().IsEmpty());
|
|
||||||
EXPECT_EQ(dest_st.at(bob_ip).sent_packets_size.NumSamples(), 2000l);
|
EXPECT_EQ(dest_st.at(bob_ip).sent_packets_size.NumSamples(), 2000l);
|
||||||
EXPECT_EQ(dest_st.at(bob_ip).sent_packets_size.GetAverage(),
|
EXPECT_EQ(dest_st.at(bob_ip).sent_packets_size.GetAverage(),
|
||||||
single_packet_size);
|
single_packet_size);
|
||||||
|
@ -504,14 +503,14 @@ TEST(NetworkEmulationManagerTest, ThroughputStats) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::atomic<int> received_stats_count{0};
|
std::atomic<int> received_stats_count{0};
|
||||||
nt1->GetStats([&](std::unique_ptr<EmulatedNetworkStats> st) {
|
nt1->GetStats([&](EmulatedNetworkStats st) {
|
||||||
EXPECT_EQ(st->PacketsSent(), kNumPacketsSent);
|
EXPECT_EQ(st.PacketsSent(), kNumPacketsSent);
|
||||||
EXPECT_EQ(st->BytesSent().bytes(), kSinglePacketSize * kNumPacketsSent);
|
EXPECT_EQ(st.BytesSent().bytes(), kSinglePacketSize * kNumPacketsSent);
|
||||||
|
|
||||||
const double tolerance = 0.95; // Accept 5% tolerance for timing.
|
const double tolerance = 0.95; // Accept 5% tolerance for timing.
|
||||||
EXPECT_GE(st->LastPacketSentTime() - st->FirstPacketSentTime(),
|
EXPECT_GE(st.LastPacketSentTime() - st.FirstPacketSentTime(),
|
||||||
(kNumPacketsSent - 1) * kDelay * tolerance);
|
(kNumPacketsSent - 1) * kDelay * tolerance);
|
||||||
EXPECT_GT(st->AverageSendRate().bps(), 0);
|
EXPECT_GT(st.AverageSendRate().bps(), 0);
|
||||||
received_stats_count++;
|
received_stats_count++;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -110,8 +110,8 @@ EmulatedNetworkStats NetworkQualityMetricsReporter::PopulateStats(
|
||||||
EmulatedNetworkManagerInterface* network) {
|
EmulatedNetworkManagerInterface* network) {
|
||||||
rtc::Event wait;
|
rtc::Event wait;
|
||||||
EmulatedNetworkStats stats;
|
EmulatedNetworkStats stats;
|
||||||
network->GetStats([&](std::unique_ptr<EmulatedNetworkStats> s) {
|
network->GetStats([&](EmulatedNetworkStats s) {
|
||||||
stats = *s;
|
stats = std::move(s);
|
||||||
wait.Set();
|
wait.Set();
|
||||||
});
|
});
|
||||||
bool stats_received = wait.Wait(kStatsWaitTimeout);
|
bool stats_received = wait.Wait(kStatsWaitTimeout);
|
||||||
|
|
|
@ -55,11 +55,10 @@ EmulatedNetworkStats PopulateStats(std::vector<EmulatedEndpoint*> endpoints,
|
||||||
NetworkEmulationManager* network_emulation) {
|
NetworkEmulationManager* network_emulation) {
|
||||||
rtc::Event stats_loaded;
|
rtc::Event stats_loaded;
|
||||||
EmulatedNetworkStats stats;
|
EmulatedNetworkStats stats;
|
||||||
network_emulation->GetStats(endpoints,
|
network_emulation->GetStats(endpoints, [&](EmulatedNetworkStats s) {
|
||||||
[&](std::unique_ptr<EmulatedNetworkStats> s) {
|
stats = std::move(s);
|
||||||
stats = *s;
|
stats_loaded.Set();
|
||||||
stats_loaded.Set();
|
});
|
||||||
});
|
|
||||||
bool stats_received = stats_loaded.Wait(kStatsWaitTimeout);
|
bool stats_received = stats_loaded.Wait(kStatsWaitTimeout);
|
||||||
RTC_CHECK(stats_received);
|
RTC_CHECK(stats_received);
|
||||||
return stats;
|
return stats;
|
||||||
|
|
Loading…
Reference in a new issue