/* * Copyright 2021 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "media/sctp/sctp_transport_factory.h" #include "api/field_trials_view.h" #include "rtc_base/system/unused.h" #ifdef WEBRTC_HAVE_DCSCTP #include "media/sctp/dcsctp_transport.h" // nogncheck #include "system_wrappers/include/clock.h" // nogncheck #endif #ifdef WEBRTC_HAVE_USRSCTP #include "media/sctp/usrsctp_transport.h" // nogncheck #endif namespace cricket { SctpTransportFactory::SctpTransportFactory( rtc::Thread* network_thread, const webrtc::FieldTrialsView& field_trials) : network_thread_(network_thread), use_usrsctp_("Disabled", false) { RTC_UNUSED(network_thread_); #ifdef WEBRTC_HAVE_DCSCTP webrtc::ParseFieldTrial({&use_usrsctp_}, field_trials.Lookup("WebRTC-DataChannel-Dcsctp")); #endif } std::unique_ptr SctpTransportFactory::CreateSctpTransport( rtc::PacketTransportInternal* transport) { std::unique_ptr result; #ifdef WEBRTC_HAVE_DCSCTP if (!use_usrsctp_.Get()) { result = std::unique_ptr(new webrtc::DcSctpTransport( network_thread_, transport, webrtc::Clock::GetRealTimeClock())); } #endif #ifdef WEBRTC_HAVE_USRSCTP if (!result) { result = std::unique_ptr( new UsrsctpTransport(network_thread_, transport)); } #endif return result; } } // namespace cricket