diff --git a/api/test/simulated_network.h b/api/test/simulated_network.h index 7612923c2b..0d5c6613a6 100644 --- a/api/test/simulated_network.h +++ b/api/test/simulated_network.h @@ -87,6 +87,8 @@ class SimulatedNetworkInterface : public NetworkBehaviorInterface { public: // Sets a new configuration. This won't affect packets already in the pipe. virtual void SetConfig(const BuiltInNetworkBehaviorConfig& config) = 0; + virtual void UpdateConfig( + std::function config_modifier) = 0; virtual void PauseTransmissionUntil(int64_t until_us) = 0; }; diff --git a/call/simulated_network.cc b/call/simulated_network.cc index 0412129d0c..b298fdb4e2 100644 --- a/call/simulated_network.cc +++ b/call/simulated_network.cc @@ -111,6 +111,12 @@ void SimulatedNetwork::SetConfig(const Config& config) { } } +void SimulatedNetwork::UpdateConfig( + std::function config_modifier) { + rtc::CritScope crit(&config_lock_); + config_modifier(&config_state_.config); +} + void SimulatedNetwork::PauseTransmissionUntil(int64_t until_us) { rtc::CritScope crit(&config_lock_); config_state_.pause_transmission_until_us = until_us; diff --git a/call/simulated_network.h b/call/simulated_network.h index fa72762b44..2ff90ec284 100644 --- a/call/simulated_network.h +++ b/call/simulated_network.h @@ -62,6 +62,8 @@ class SimulatedNetwork : public SimulatedNetworkInterface { // Sets a new configuration. This won't affect packets already in the pipe. void SetConfig(const Config& config) override; + void UpdateConfig(std::function + config_modifier) override; void PauseTransmissionUntil(int64_t until_us) override; // NetworkBehaviorInterface