xref: /aosp_15_r20/external/webrtc/api/test/create_time_controller.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright 2019 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "api/test/create_time_controller.h"
12 
13 #include <memory>
14 
15 #include "call/call.h"
16 #include "call/rtp_transport_config.h"
17 #include "call/rtp_transport_controller_send_factory_interface.h"
18 #include "test/time_controller/external_time_controller.h"
19 #include "test/time_controller/simulated_time_controller.h"
20 
21 namespace webrtc {
22 
CreateTimeController(ControlledAlarmClock * alarm)23 std::unique_ptr<TimeController> CreateTimeController(
24     ControlledAlarmClock* alarm) {
25   return std::make_unique<ExternalTimeController>(alarm);
26 }
27 
CreateSimulatedTimeController()28 std::unique_ptr<TimeController> CreateSimulatedTimeController() {
29   return std::make_unique<GlobalSimulatedTimeController>(
30       Timestamp::Seconds(10000));
31 }
32 
CreateTimeControllerBasedCallFactory(TimeController * time_controller)33 std::unique_ptr<CallFactoryInterface> CreateTimeControllerBasedCallFactory(
34     TimeController* time_controller) {
35   class TimeControllerBasedCallFactory : public CallFactoryInterface {
36    public:
37     explicit TimeControllerBasedCallFactory(TimeController* time_controller)
38         : time_controller_(time_controller) {}
39     Call* CreateCall(const Call::Config& config) override {
40       RtpTransportConfig transportConfig = config.ExtractTransportConfig();
41 
42       return Call::Create(config, time_controller_->GetClock(),
43                           config.rtp_transport_controller_send_factory->Create(
44                               transportConfig, time_controller_->GetClock()));
45     }
46 
47    private:
48     TimeController* time_controller_;
49   };
50   return std::make_unique<TimeControllerBasedCallFactory>(time_controller);
51 }
52 
53 }  // namespace webrtc
54