mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
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}
This commit is contained in:
parent
133bf2bd28
commit
094ce2ef83
3 changed files with 23 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -35,6 +35,12 @@ class TimeController {
|
|||
// 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;
|
||||
|
|
|
@ -114,21 +114,6 @@ class LambdaPeerConnectionObserver final : public PeerConnectionObserver {
|
|||
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 @@ PeerScenarioClient::PeerScenarioClient(
|
|||
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_);
|
||||
|
||||
|
|
Loading…
Reference in a new issue