Adds CreateTaskQueueFactory to TimeController
Bug: webrtc:11255
Change-Id: I02bdc944c7081590f40a77b315f64c63adbc6ff8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166921
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30349}
diff --git a/api/test/time_controller.cc b/api/test/time_controller.cc
index 26fe69c..b3b2f46 100644
--- a/api/test/time_controller.cc
+++ b/api/test/time_controller.cc
@@ -10,6 +10,22 @@
#include "api/test/time_controller.h"
namespace webrtc {
+std::unique_ptr<TaskQueueFactory> TimeController::CreateTaskQueueFactory() {
+ class FactoryWrapper final : public TaskQueueFactory {
+ public:
+ explicit FactoryWrapper(TaskQueueFactory* inner_factory)
+ : inner_(inner_factory) {}
+ std::unique_ptr<TaskQueueBase, TaskQueueDeleter> CreateTaskQueue(
+ absl::string_view name,
+ Priority priority) const override {
+ return inner_->CreateTaskQueue(name, priority);
+ }
+
+ private:
+ TaskQueueFactory* const inner_;
+ };
+ return std::make_unique<FactoryWrapper>(GetTaskQueueFactory());
+}
bool TimeController::Wait(const std::function<bool()>& done,
TimeDelta max_duration) {
// Step size is chosen to be short enough to not significantly affect latency
diff --git a/api/test/time_controller.h b/api/test/time_controller.h
index 6d09481..aa69c52 100644
--- a/api/test/time_controller.h
+++ b/api/test/time_controller.h
@@ -35,6 +35,12 @@
// The returned factory will created task queues that runs in implementation
// defined time domain.
virtual TaskQueueFactory* GetTaskQueueFactory() = 0;
+ // Simple helper to create an owned factory that can be used as a parameter
+ // for PeerConnectionFactory. Note that this might depend on the underlying
+ // time controller and therfore must be destroyed before the time controller
+ // is destroyed.
+ std::unique_ptr<TaskQueueFactory> CreateTaskQueueFactory();
+
// Creates a process thread.
virtual std::unique_ptr<ProcessThread> CreateProcessThread(
const char* thread_name) = 0;
diff --git a/test/peer_scenario/peer_scenario_client.cc b/test/peer_scenario/peer_scenario_client.cc
index 4614942..3485298 100644
--- a/test/peer_scenario/peer_scenario_client.cc
+++ b/test/peer_scenario/peer_scenario_client.cc
@@ -114,21 +114,6 @@
PeerScenarioClient::CallbackHandlers* handlers_;
};
-// Used to supply a unique_ptr for an unowned TaskQueueFactory.
-class TaskQueueFactoryWrapper final : public TaskQueueFactory {
- public:
- explicit TaskQueueFactoryWrapper(TaskQueueFactory* inner_factory)
- : inner_factory_(inner_factory) {}
- std::unique_ptr<TaskQueueBase, TaskQueueDeleter> CreateTaskQueue(
- absl::string_view name,
- Priority priority) const override {
- return inner_factory_->CreateTaskQueue(name, priority);
- }
-
- private:
- TaskQueueFactory* const inner_factory_;
-};
-
class TimeControllerBasedCallFactory : public CallFactoryInterface {
public:
explicit TimeControllerBasedCallFactory(TimeController* time_controller)
@@ -192,7 +177,7 @@
pcf_deps.call_factory =
std::make_unique<TimeControllerBasedCallFactory>(net->time_controller());
pcf_deps.task_queue_factory =
- std::make_unique<TaskQueueFactoryWrapper>(task_queue_factory_);
+ net->time_controller()->CreateTaskQueueFactory();
pcf_deps.event_log_factory =
std::make_unique<RtcEventLogFactory>(task_queue_factory_);