mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
Detangle p2p/connection.cc and port.cc
This CL does: - Run IWYU on the relevant elements - Make connection depend on port_interface, not port - Make port_allocator depend only on port - Move some constants from port.h into p2p_constants This allows a dependency graph without ugly groups. Bug: webrtc:15796 Change-Id: I0ff0e14eacdfe3b230a8d84902a78eb062d6c8af Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/336320 Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41618}
This commit is contained in:
parent
d213dd5517
commit
9a953b28f9
16 changed files with 327 additions and 111 deletions
|
@ -334,7 +334,7 @@ rtc_library("libjingle_peerconnection_api") {
|
|||
":sequence_checker",
|
||||
":turn_customizer",
|
||||
"../call:rtp_interfaces",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:rtc_p2p",
|
||||
"../pc:media_factory",
|
||||
"../rtc_base:copy_on_write_buffer",
|
||||
|
@ -936,7 +936,7 @@ rtc_library("ice_transport_factory") {
|
|||
":make_ref_counted",
|
||||
":packet_socket_factory",
|
||||
":scoped_refptr",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
"../p2p:p2p_transport_channel",
|
||||
|
|
|
@ -74,7 +74,7 @@ rtc_library("media_quality_test_params") {
|
|||
"../../../api/transport:network_control",
|
||||
"../../../api/video_codecs:video_codecs_api",
|
||||
"../../../modules/audio_processing:api",
|
||||
"../../../p2p:connection_and_port",
|
||||
"../../../p2p:connection",
|
||||
"../../../p2p:rtc_p2p",
|
||||
"../../../rtc_base:network",
|
||||
"../../../rtc_base:rtc_certificate_generator",
|
||||
|
|
|
@ -702,7 +702,7 @@ if (is_linux || is_chromeos || is_win) {
|
|||
"../api/video_codecs:video_codecs_api",
|
||||
"../media:media_channel",
|
||||
"../media:rtc_media_base",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:rtc_p2p",
|
||||
"../pc:video_track_source",
|
||||
"../rtc_base:async_dns_resolver",
|
||||
|
|
136
p2p/BUILD.gn
136
p2p/BUILD.gn
|
@ -74,7 +74,7 @@ rtc_library("rtc_p2p") {
|
|||
":basic_async_resolver_factory",
|
||||
":basic_ice_controller",
|
||||
":candidate_pair_interface",
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":connection_info",
|
||||
":ice_agent_interface",
|
||||
":ice_controller_factory_interface",
|
||||
|
@ -169,6 +169,7 @@ rtc_library("rtc_p2p") {
|
|||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||
"//third_party/abseil-cpp/absl/base:core_headers",
|
||||
"//third_party/abseil-cpp/absl/functional:any_invocable",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
|
@ -187,7 +188,7 @@ rtc_source_set("active_ice_controller_factory_interface") {
|
|||
rtc_source_set("active_ice_controller_interface") {
|
||||
sources = [ "base/active_ice_controller_interface.h" ]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":ice_switch_reason",
|
||||
":ice_transport_internal",
|
||||
":transport_description",
|
||||
|
@ -248,14 +249,10 @@ rtc_source_set("candidate_pair_interface") {
|
|||
# This set of files is too intertwined to break into separate
|
||||
# targets at this point.
|
||||
# TODO(bugs.webrtc.org/15796): Finish breakup
|
||||
rtc_library("connection_and_port") {
|
||||
rtc_library("connection") {
|
||||
sources = [
|
||||
"base/connection.cc",
|
||||
"base/connection.h",
|
||||
"base/port.cc",
|
||||
"base/port.h",
|
||||
"base/port_allocator.cc",
|
||||
"base/port_allocator.h",
|
||||
]
|
||||
deps = [
|
||||
":candidate_pair_interface",
|
||||
|
@ -276,28 +273,37 @@ rtc_library("connection_and_port") {
|
|||
"../api/transport:enums",
|
||||
"../api/transport:field_trial_based_config",
|
||||
"../api/transport:stun_types",
|
||||
"../api/units:time_delta",
|
||||
"../api/units:timestamp",
|
||||
"../logging:ice_log",
|
||||
"../rtc_base:async_packet_socket",
|
||||
"../rtc_base:byte_buffer",
|
||||
"../rtc_base:callback_list",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:crc32",
|
||||
"../rtc_base:dscp",
|
||||
"../rtc_base:event_tracer",
|
||||
"../rtc_base:ip_address",
|
||||
"../rtc_base:logging",
|
||||
"../rtc_base:macromagic",
|
||||
"../rtc_base:mdns_responder_interface",
|
||||
"../rtc_base:net_helper",
|
||||
"../rtc_base:network",
|
||||
"../rtc_base:network_constants",
|
||||
"../rtc_base:proxy_info",
|
||||
"../rtc_base:rate_tracker",
|
||||
"../rtc_base:rtc_numerics",
|
||||
"../rtc_base:safe_minmax",
|
||||
"../rtc_base:socket",
|
||||
"../rtc_base:socket_address",
|
||||
"../rtc_base:ssl",
|
||||
"../rtc_base:stringutils",
|
||||
"../rtc_base:threading",
|
||||
"../rtc_base:timeutils",
|
||||
"../rtc_base:weak_ptr",
|
||||
"../rtc_base/memory:always_valid_pointer",
|
||||
"../rtc_base/network:received_packet",
|
||||
"../rtc_base/network:sent_packet",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../rtc_base/third_party/base64",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
|
@ -305,6 +311,7 @@ rtc_library("connection_and_port") {
|
|||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||
"//third_party/abseil-cpp/absl/base:core_headers",
|
||||
"//third_party/abseil-cpp/absl/functional:any_invocable",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/strings:string_view",
|
||||
|
@ -327,7 +334,7 @@ rtc_library("connection_info") {
|
|||
rtc_source_set("ice_agent_interface") {
|
||||
sources = [ "base/ice_agent_interface.h" ]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":ice_switch_reason",
|
||||
"../api:array_view",
|
||||
]
|
||||
|
@ -339,7 +346,7 @@ rtc_library("ice_controller_interface") {
|
|||
"base/ice_controller_interface.h",
|
||||
]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":ice_switch_reason",
|
||||
":ice_transport_internal",
|
||||
"../rtc_base:checks",
|
||||
|
@ -382,9 +389,10 @@ rtc_library("ice_transport_internal") {
|
|||
"base/ice_transport_internal.h",
|
||||
]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":p2p_constants",
|
||||
":packet_transport_internal",
|
||||
":port",
|
||||
":stun_dictionary",
|
||||
":transport_description",
|
||||
"../api:candidate",
|
||||
|
@ -418,7 +426,7 @@ rtc_library("p2p_transport_channel") {
|
|||
":active_ice_controller_factory_interface",
|
||||
":basic_ice_controller",
|
||||
":candidate_pair_interface",
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":connection_info",
|
||||
":ice_agent_interface",
|
||||
":ice_controller_factory_interface",
|
||||
|
@ -427,6 +435,8 @@ rtc_library("p2p_transport_channel") {
|
|||
":ice_transport_internal",
|
||||
":p2p_constants",
|
||||
":p2p_transport_channel_ice_field_trials",
|
||||
":port",
|
||||
":port_allocator",
|
||||
":port_interface",
|
||||
":regathering_controller",
|
||||
":stun_dictionary",
|
||||
|
@ -487,7 +497,8 @@ rtc_library("packet_transport_internal") {
|
|||
"base/packet_transport_internal.h",
|
||||
]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":port",
|
||||
"../rtc_base:async_packet_socket",
|
||||
"../rtc_base:network_route",
|
||||
"../rtc_base:socket",
|
||||
|
@ -497,6 +508,94 @@ rtc_library("packet_transport_internal") {
|
|||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
}
|
||||
|
||||
rtc_library("port") {
|
||||
sources = [
|
||||
"base/port.cc",
|
||||
"base/port.h",
|
||||
]
|
||||
deps = [
|
||||
":candidate_pair_interface",
|
||||
":connection",
|
||||
":connection_info",
|
||||
":p2p_constants",
|
||||
":port_interface",
|
||||
":stun_request",
|
||||
":transport_description",
|
||||
"../api:array_view",
|
||||
"../api:candidate",
|
||||
"../api:field_trials_view",
|
||||
"../api:packet_socket_factory",
|
||||
"../api:rtc_error",
|
||||
"../api:sequence_checker",
|
||||
"../api/task_queue",
|
||||
"../api/transport:field_trial_based_config",
|
||||
"../api/transport:stun_types",
|
||||
"../api/units:time_delta",
|
||||
"../logging:ice_log",
|
||||
"../rtc_base:async_packet_socket",
|
||||
"../rtc_base:byte_buffer",
|
||||
"../rtc_base:callback_list",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:crc32",
|
||||
"../rtc_base:dscp",
|
||||
"../rtc_base:event_tracer",
|
||||
"../rtc_base:ip_address",
|
||||
"../rtc_base:logging",
|
||||
"../rtc_base:macromagic",
|
||||
"../rtc_base:mdns_responder_interface",
|
||||
"../rtc_base:net_helper",
|
||||
"../rtc_base:network",
|
||||
"../rtc_base:proxy_info",
|
||||
"../rtc_base:rate_tracker",
|
||||
"../rtc_base:socket_address",
|
||||
"../rtc_base:ssl",
|
||||
"../rtc_base:stringutils",
|
||||
"../rtc_base:timeutils",
|
||||
"../rtc_base:weak_ptr",
|
||||
"../rtc_base/memory:always_valid_pointer",
|
||||
"../rtc_base/network:received_packet",
|
||||
"../rtc_base/network:sent_packet",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
]
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/base:core_headers",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/strings:string_view",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("port_allocator") {
|
||||
sources = [
|
||||
"base/port_allocator.cc",
|
||||
"base/port_allocator.h",
|
||||
]
|
||||
deps = [
|
||||
":connection",
|
||||
":ice_credentials_iterator",
|
||||
":port",
|
||||
":port_interface",
|
||||
":transport_description",
|
||||
"../api:candidate",
|
||||
"../api:sequence_checker",
|
||||
"../api/transport:enums",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:network",
|
||||
"../rtc_base:proxy_info",
|
||||
"../rtc_base:socket_address",
|
||||
"../rtc_base:ssl",
|
||||
"../rtc_base:threading",
|
||||
"../rtc_base/system:rtc_export",
|
||||
"../rtc_base/third_party/sigslot",
|
||||
]
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/strings:string_view",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_library("port_interface") {
|
||||
sources = [
|
||||
"base/port_interface.cc",
|
||||
|
@ -505,8 +604,10 @@ rtc_library("port_interface") {
|
|||
deps = [
|
||||
":transport_description",
|
||||
"../api:candidate",
|
||||
"../api:packet_socket_factory",
|
||||
"../rtc_base:async_packet_socket",
|
||||
"../rtc_base:callback_list",
|
||||
"../rtc_base:proxy_info",
|
||||
"../rtc_base:socket_address",
|
||||
]
|
||||
absl_deps = [
|
||||
|
@ -521,8 +622,9 @@ rtc_library("regathering_controller") {
|
|||
"base/regathering_controller.h",
|
||||
]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":ice_transport_internal",
|
||||
":port_allocator",
|
||||
"../api/task_queue:pending_task_safety_flag",
|
||||
"../api/units:time_delta",
|
||||
"../rtc_base:threading",
|
||||
|
@ -590,7 +692,7 @@ rtc_library("wrapping_active_ice_controller") {
|
|||
deps = [
|
||||
":active_ice_controller_interface",
|
||||
":basic_ice_controller",
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":ice_agent_interface",
|
||||
":ice_controller_factory_interface",
|
||||
":ice_controller_interface",
|
||||
|
@ -634,7 +736,7 @@ if (rtc_include_tests) {
|
|||
visibility = [ "*" ]
|
||||
sources = [ "base/fake_port_allocator.h" ]
|
||||
deps = [
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":rtc_p2p",
|
||||
"../rtc_base:net_helpers",
|
||||
"../rtc_base:net_test_helpers",
|
||||
|
@ -663,7 +765,7 @@ if (rtc_include_tests) {
|
|||
deps = [
|
||||
":active_ice_controller_factory_interface",
|
||||
":active_ice_controller_interface",
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":fake_ice_transport",
|
||||
":fake_port_allocator",
|
||||
":ice_agent_interface",
|
||||
|
@ -731,7 +833,7 @@ if (rtc_include_tests) {
|
|||
":active_ice_controller_interface",
|
||||
":async_stun_tcp_socket",
|
||||
":basic_ice_controller",
|
||||
":connection_and_port",
|
||||
":connection",
|
||||
":fake_ice_transport",
|
||||
":fake_port_allocator",
|
||||
":ice_credentials_iterator",
|
||||
|
|
|
@ -23,6 +23,18 @@ class CandidatePairInterface {
|
|||
virtual const Candidate& remote_candidate() const = 0;
|
||||
};
|
||||
|
||||
// Specific implementation of the interface, suitable for being a
|
||||
// data member of other structs.
|
||||
struct CandidatePair final : public CandidatePairInterface {
|
||||
~CandidatePair() override = default;
|
||||
|
||||
const Candidate& local_candidate() const override { return local; }
|
||||
const Candidate& remote_candidate() const override { return remote; }
|
||||
|
||||
Candidate local;
|
||||
Candidate remote;
|
||||
};
|
||||
|
||||
} // namespace cricket
|
||||
|
||||
#endif // P2P_BASE_CANDIDATE_PAIR_INTERFACE_H_
|
||||
|
|
|
@ -19,25 +19,26 @@
|
|||
#include <vector>
|
||||
|
||||
#include "absl/algorithm/container.h"
|
||||
#include "absl/strings/escaping.h"
|
||||
#include "absl/strings/match.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/array_view.h"
|
||||
#include "api/units/timestamp.h"
|
||||
#include "p2p/base/port_allocator.h"
|
||||
#include "p2p/base/p2p_constants.h"
|
||||
#include "rtc_base/byte_buffer.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/crc32.h"
|
||||
#include "rtc_base/helpers.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/mdns_responder_interface.h"
|
||||
#include "rtc_base/message_digest.h"
|
||||
#include "rtc_base/net_helper.h"
|
||||
#include "rtc_base/network.h"
|
||||
#include "rtc_base/network/sent_packet.h"
|
||||
#include "rtc_base/network_constants.h"
|
||||
#include "rtc_base/numerics/safe_minmax.h"
|
||||
#include "rtc_base/socket.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
#include "rtc_base/string_encode.h"
|
||||
#include "rtc_base/string_utils.h"
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
#include "rtc_base/third_party/base64/base64.h"
|
||||
#include "rtc_base/time_utils.h"
|
||||
|
||||
namespace cricket {
|
||||
namespace {
|
||||
|
@ -213,7 +214,7 @@ int Connection::ConnectionRequest::resend_delay() {
|
|||
return CONNECTION_RESPONSE_TIMEOUT;
|
||||
}
|
||||
|
||||
Connection::Connection(rtc::WeakPtr<Port> port,
|
||||
Connection::Connection(rtc::WeakPtr<PortInterface> port,
|
||||
size_t index,
|
||||
const Candidate& remote_candidate)
|
||||
: network_thread_(port->thread()),
|
||||
|
@ -1784,7 +1785,7 @@ void Connection::ForgetLearnedState() {
|
|||
pings_since_last_response_.clear();
|
||||
}
|
||||
|
||||
ProxyConnection::ProxyConnection(rtc::WeakPtr<Port> port,
|
||||
ProxyConnection::ProxyConnection(rtc::WeakPtr<PortInterface> port,
|
||||
size_t index,
|
||||
const Candidate& remote_candidate)
|
||||
: Connection(std::move(port), index, remote_candidate) {}
|
||||
|
|
|
@ -11,19 +11,31 @@
|
|||
#ifndef P2P_BASE_CONNECTION_H_
|
||||
#define P2P_BASE_CONNECTION_H_
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/candidate.h"
|
||||
#include "api/rtc_error.h"
|
||||
#include "api/sequence_checker.h"
|
||||
#include "api/task_queue/task_queue_base.h"
|
||||
#include "api/transport/stun.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h"
|
||||
#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h"
|
||||
#include "logging/rtc_event_log/ice_logger.h"
|
||||
#include "p2p/base/candidate_pair_interface.h"
|
||||
#include "p2p/base/connection_info.h"
|
||||
#include "p2p/base/p2p_transport_channel_ice_field_trials.h"
|
||||
#include "p2p/base/port_interface.h"
|
||||
#include "p2p/base/stun_request.h"
|
||||
#include "p2p/base/transport_description.h"
|
||||
#include "rtc_base/async_packet_socket.h"
|
||||
|
@ -32,6 +44,8 @@
|
|||
#include "rtc_base/numerics/event_based_exponential_moving_average.h"
|
||||
#include "rtc_base/rate_tracker.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
#include "rtc_base/third_party/sigslot/sigslot.h"
|
||||
#include "rtc_base/thread_annotations.h"
|
||||
#include "rtc_base/weak_ptr.h"
|
||||
|
||||
namespace cricket {
|
||||
|
@ -40,23 +54,9 @@ namespace cricket {
|
|||
// adding other flavors in the future.
|
||||
constexpr int kGoogPingVersion = 1;
|
||||
|
||||
// Connection and Port has circular dependencies.
|
||||
// So we use forward declaration rather than include.
|
||||
class Port;
|
||||
|
||||
// Forward declaration so that a ConnectionRequest can contain a Connection.
|
||||
class Connection;
|
||||
|
||||
struct CandidatePair final : public CandidatePairInterface {
|
||||
~CandidatePair() override = default;
|
||||
|
||||
const Candidate& local_candidate() const override { return local; }
|
||||
const Candidate& remote_candidate() const override { return remote; }
|
||||
|
||||
Candidate local;
|
||||
Candidate remote;
|
||||
};
|
||||
|
||||
// Represents a communication link between a port on the local client and a
|
||||
// port on the remote client.
|
||||
class RTC_EXPORT Connection : public CandidatePairInterface {
|
||||
|
@ -102,7 +102,7 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
bool writable() const;
|
||||
bool receiving() const;
|
||||
|
||||
const Port* port() const {
|
||||
const PortInterface* port() const {
|
||||
RTC_DCHECK_RUN_ON(network_thread_);
|
||||
return port_.get();
|
||||
}
|
||||
|
@ -326,8 +326,8 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
void SendResponseMessage(const StunMessage& response);
|
||||
|
||||
// An accessor for unit tests.
|
||||
Port* PortForTest() { return port_.get(); }
|
||||
const Port* PortForTest() const { return port_.get(); }
|
||||
PortInterface* PortForTest() { return port_.get(); }
|
||||
const PortInterface* PortForTest() const { return port_.get(); }
|
||||
|
||||
std::unique_ptr<IceMessage> BuildPingRequestForTest() {
|
||||
RTC_DCHECK_RUN_ON(network_thread_);
|
||||
|
@ -364,7 +364,9 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
class ConnectionRequest;
|
||||
|
||||
// Constructs a new connection to the given remote port.
|
||||
Connection(rtc::WeakPtr<Port> port, size_t index, const Candidate& candidate);
|
||||
Connection(rtc::WeakPtr<PortInterface> port,
|
||||
size_t index,
|
||||
const Candidate& candidate);
|
||||
|
||||
// Called back when StunRequestManager has a stun packet to send
|
||||
void OnSendStunPacket(const void* data, size_t size, StunRequest* req);
|
||||
|
@ -393,7 +395,7 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
void set_connected(bool value);
|
||||
|
||||
// The local port where this connection sends and receives packets.
|
||||
Port* port() { return port_.get(); }
|
||||
PortInterface* port() { return port_.get(); }
|
||||
|
||||
// NOTE: A pointer to the network thread is held by `port_` so in theory we
|
||||
// shouldn't need to hold on to this pointer here, but rather defer to
|
||||
|
@ -402,7 +404,7 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
// TODO(tommi): This ^^^ should be fixed.
|
||||
webrtc::TaskQueueBase* const network_thread_;
|
||||
const uint32_t id_;
|
||||
rtc::WeakPtr<Port> port_;
|
||||
rtc::WeakPtr<PortInterface> port_;
|
||||
Candidate local_candidate_ RTC_GUARDED_BY(network_thread_);
|
||||
Candidate remote_candidate_;
|
||||
|
||||
|
@ -515,7 +517,7 @@ class RTC_EXPORT Connection : public CandidatePairInterface {
|
|||
// ProxyConnection defers all the interesting work to the port.
|
||||
class ProxyConnection : public Connection {
|
||||
public:
|
||||
ProxyConnection(rtc::WeakPtr<Port> port,
|
||||
ProxyConnection(rtc::WeakPtr<PortInterface> port,
|
||||
size_t index,
|
||||
const Candidate& remote_candidate);
|
||||
|
||||
|
|
|
@ -111,6 +111,19 @@ extern const int CONNECTION_RESPONSE_TIMEOUT;
|
|||
// it.
|
||||
extern const int MIN_CONNECTION_LIFETIME;
|
||||
|
||||
// The type preference MUST be an integer from 0 to 126 inclusive.
|
||||
// https://datatracker.ietf.org/doc/html/rfc5245#section-4.1.2.1
|
||||
enum IcePriorityValue : uint8_t {
|
||||
ICE_TYPE_PREFERENCE_RELAY_TLS = 0,
|
||||
ICE_TYPE_PREFERENCE_RELAY_TCP = 1,
|
||||
ICE_TYPE_PREFERENCE_RELAY_UDP = 2,
|
||||
ICE_TYPE_PREFERENCE_PRFLX_TCP = 80,
|
||||
ICE_TYPE_PREFERENCE_HOST_TCP = 90,
|
||||
ICE_TYPE_PREFERENCE_SRFLX = 100,
|
||||
ICE_TYPE_PREFERENCE_PRFLX = 110,
|
||||
ICE_TYPE_PREFERENCE_HOST = 126
|
||||
};
|
||||
|
||||
} // namespace cricket
|
||||
|
||||
#endif // P2P_BASE_P2P_CONSTANTS_H_
|
||||
|
|
|
@ -1693,7 +1693,7 @@ void P2PTransportChannel::OnStartedPinging() {
|
|||
regathering_controller_->Start();
|
||||
}
|
||||
|
||||
bool P2PTransportChannel::IsPortPruned(const Port* port) const {
|
||||
bool P2PTransportChannel::IsPortPruned(const PortInterface* port) const {
|
||||
RTC_DCHECK_RUN_ON(network_thread_);
|
||||
return !absl::c_linear_search(ports_, port);
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal,
|
|||
}
|
||||
|
||||
// Indicates if the given local port has been pruned.
|
||||
bool IsPortPruned(const Port* port) const;
|
||||
bool IsPortPruned(const PortInterface* port) const;
|
||||
|
||||
// Indicates if the given remote candidate has been pruned.
|
||||
bool IsRemoteCandidatePruned(const Candidate& cand) const;
|
||||
|
|
|
@ -10,31 +10,34 @@
|
|||
|
||||
#include "p2p/base/port.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/algorithm/container.h"
|
||||
#include "absl/memory/memory.h"
|
||||
#include "absl/strings/match.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "api/array_view.h"
|
||||
#include "api/rtc_error.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "p2p/base/p2p_constants.h"
|
||||
#include "p2p/base/stun_request.h"
|
||||
#include "rtc_base/byte_buffer.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/crc32.h"
|
||||
#include "rtc_base/helpers.h"
|
||||
#include "rtc_base/ip_address.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/mdns_responder_interface.h"
|
||||
#include "rtc_base/message_digest.h"
|
||||
#include "rtc_base/net_helper.h"
|
||||
#include "rtc_base/network.h"
|
||||
#include "rtc_base/numerics/safe_minmax.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
#include "rtc_base/string_encode.h"
|
||||
#include "rtc_base/string_utils.h"
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
#include "rtc_base/third_party/base64/base64.h"
|
||||
#include "rtc_base/time_utils.h"
|
||||
#include "rtc_base/trace_event.h"
|
||||
|
||||
namespace cricket {
|
||||
|
|
|
@ -11,10 +11,15 @@
|
|||
#ifndef P2P_BASE_PORT_H_
|
||||
#define P2P_BASE_PORT_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
|
@ -25,6 +30,7 @@
|
|||
#include "api/field_trials_view.h"
|
||||
#include "api/packet_socket_factory.h"
|
||||
#include "api/rtc_error.h"
|
||||
#include "api/sequence_checker.h"
|
||||
#include "api/task_queue/task_queue_base.h"
|
||||
#include "api/transport/field_trial_based_config.h"
|
||||
#include "api/transport/stun.h"
|
||||
|
@ -37,18 +43,22 @@
|
|||
#include "p2p/base/p2p_constants.h"
|
||||
#include "p2p/base/port_interface.h"
|
||||
#include "p2p/base/stun_request.h"
|
||||
#include "p2p/base/transport_description.h"
|
||||
#include "rtc_base/async_packet_socket.h"
|
||||
#include "rtc_base/callback_list.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/dscp.h"
|
||||
#include "rtc_base/memory/always_valid_pointer.h"
|
||||
#include "rtc_base/net_helper.h"
|
||||
#include "rtc_base/network.h"
|
||||
#include "rtc_base/network/received_packet.h"
|
||||
#include "rtc_base/network/sent_packet.h"
|
||||
#include "rtc_base/proxy_info.h"
|
||||
#include "rtc_base/rate_tracker.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
#include "rtc_base/third_party/sigslot/sigslot.h"
|
||||
#include "rtc_base/thread_annotations.h"
|
||||
#include "rtc_base/weak_ptr.h"
|
||||
|
||||
namespace cricket {
|
||||
|
@ -59,19 +69,6 @@ extern const char TCPTYPE_ACTIVE_STR[];
|
|||
extern const char TCPTYPE_PASSIVE_STR[];
|
||||
extern const char TCPTYPE_SIMOPEN_STR[];
|
||||
|
||||
// The type preference MUST be an integer from 0 to 126 inclusive.
|
||||
// https://datatracker.ietf.org/doc/html/rfc5245#section-4.1.2.1
|
||||
enum IcePriorityValue : uint8_t {
|
||||
ICE_TYPE_PREFERENCE_RELAY_TLS = 0,
|
||||
ICE_TYPE_PREFERENCE_RELAY_TCP = 1,
|
||||
ICE_TYPE_PREFERENCE_RELAY_UDP = 2,
|
||||
ICE_TYPE_PREFERENCE_PRFLX_TCP = 80,
|
||||
ICE_TYPE_PREFERENCE_HOST_TCP = 90,
|
||||
ICE_TYPE_PREFERENCE_SRFLX = 100,
|
||||
ICE_TYPE_PREFERENCE_PRFLX = 110,
|
||||
ICE_TYPE_PREFERENCE_HOST = 126
|
||||
};
|
||||
|
||||
enum class MdnsNameRegistrationStatus {
|
||||
// IP concealment with mDNS is not enabled or the name registration process is
|
||||
// not started yet.
|
||||
|
@ -227,13 +224,13 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
void CancelPendingTasks();
|
||||
|
||||
// The thread on which this port performs its I/O.
|
||||
webrtc::TaskQueueBase* thread() { return thread_; }
|
||||
webrtc::TaskQueueBase* thread() override { return thread_; }
|
||||
|
||||
// The factory used to create the sockets of this port.
|
||||
rtc::PacketSocketFactory* socket_factory() const { return factory_; }
|
||||
rtc::PacketSocketFactory* socket_factory() const override { return factory_; }
|
||||
|
||||
// For debugging purposes.
|
||||
const std::string& content_name() const { return content_name_; }
|
||||
const std::string& content_name() const override { return content_name_; }
|
||||
void set_content_name(absl::string_view content_name) {
|
||||
content_name_ = std::string(content_name);
|
||||
}
|
||||
|
@ -241,7 +238,7 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
int component() const { return component_; }
|
||||
void set_component(int component) { component_ = component; }
|
||||
|
||||
bool send_retransmit_count_attribute() const {
|
||||
bool send_retransmit_count_attribute() const override {
|
||||
return send_retransmit_count_attribute_;
|
||||
}
|
||||
void set_send_retransmit_count_attribute(bool enable) {
|
||||
|
@ -249,8 +246,10 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
}
|
||||
|
||||
// Identifies the generation that this port was created in.
|
||||
uint32_t generation() const { return generation_; }
|
||||
void set_generation(uint32_t generation) { generation_ = generation; }
|
||||
uint32_t generation() const override { return generation_; }
|
||||
void set_generation(uint32_t generation) override {
|
||||
generation_ = generation;
|
||||
}
|
||||
|
||||
const std::string& username_fragment() const;
|
||||
const std::string& password() const { return password_; }
|
||||
|
@ -296,11 +295,11 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
// defers the `delete` operation to when the call stack has been unwound.
|
||||
// Async may be needed when deleting a connection object from within a
|
||||
// callback.
|
||||
void DestroyConnection(Connection* conn) {
|
||||
void DestroyConnection(Connection* conn) override {
|
||||
DestroyConnectionInternal(conn, false);
|
||||
}
|
||||
|
||||
void DestroyConnectionAsync(Connection* conn) {
|
||||
void DestroyConnectionAsync(Connection* conn) override {
|
||||
DestroyConnectionInternal(conn, true);
|
||||
}
|
||||
|
||||
|
@ -330,8 +329,8 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
user_agent_ = std::string(user_agent);
|
||||
proxy_ = proxy;
|
||||
}
|
||||
const std::string& user_agent() { return user_agent_; }
|
||||
const rtc::ProxyInfo& proxy() { return proxy_; }
|
||||
const std::string& user_agent() override { return user_agent_; }
|
||||
const rtc::ProxyInfo& proxy() override { return proxy_; }
|
||||
|
||||
void EnablePortPackets() override;
|
||||
|
||||
|
@ -350,12 +349,13 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
// stun username attribute if present.
|
||||
bool ParseStunUsername(const StunMessage* stun_msg,
|
||||
std::string* local_username,
|
||||
std::string* remote_username) const;
|
||||
std::string CreateStunUsername(absl::string_view remote_username) const;
|
||||
std::string* remote_username) const override;
|
||||
std::string CreateStunUsername(
|
||||
absl::string_view remote_username) const override;
|
||||
|
||||
bool MaybeIceRoleConflict(const rtc::SocketAddress& addr,
|
||||
IceMessage* stun_msg,
|
||||
absl::string_view remote_ufrag);
|
||||
absl::string_view remote_ufrag) override;
|
||||
|
||||
// Called when a packet has been sent to the socket.
|
||||
// This is made pure virtual to notify subclasses of Port that they MUST
|
||||
|
@ -368,9 +368,9 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
void OnReadyToSend();
|
||||
|
||||
// Called when the Connection discovers a local peer reflexive candidate.
|
||||
void AddPrflxCandidate(const Candidate& local);
|
||||
void AddPrflxCandidate(const Candidate& local) override;
|
||||
|
||||
int16_t network_cost() const { return network_cost_; }
|
||||
int16_t network_cost() const override { return network_cost_; }
|
||||
|
||||
void GetStunStats(absl::optional<StunStats>* stats) override {}
|
||||
|
||||
|
@ -380,13 +380,14 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
// then the foundation will be different. Two candidate pairs with
|
||||
// the same foundation pairs are likely to have similar network
|
||||
// characteristics. Foundations are used in the frozen algorithm.
|
||||
std::string ComputeFoundation(absl::string_view type,
|
||||
absl::string_view protocol,
|
||||
absl::string_view relay_protocol,
|
||||
const rtc::SocketAddress& base_address);
|
||||
std::string ComputeFoundation(
|
||||
absl::string_view type,
|
||||
absl::string_view protocol,
|
||||
absl::string_view relay_protocol,
|
||||
const rtc::SocketAddress& base_address) override;
|
||||
|
||||
protected:
|
||||
virtual void UpdateNetworkCost();
|
||||
void UpdateNetworkCost() override;
|
||||
|
||||
rtc::WeakPtr<Port> NewWeakPtr() { return weak_factory_.GetWeakPtr(); }
|
||||
|
||||
|
@ -438,13 +439,13 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
size_t size,
|
||||
const rtc::SocketAddress& addr,
|
||||
std::unique_ptr<IceMessage>* out_msg,
|
||||
std::string* out_username);
|
||||
std::string* out_username) override;
|
||||
|
||||
// Checks if the address in addr is compatible with the port's ip.
|
||||
bool IsCompatibleAddress(const rtc::SocketAddress& addr);
|
||||
|
||||
// Returns DSCP value packets generated by the port itself should use.
|
||||
virtual rtc::DiffServCodePoint StunDscpValue() const;
|
||||
rtc::DiffServCodePoint StunDscpValue() const override;
|
||||
|
||||
// Extra work to be done in subclasses when a connection is destroyed.
|
||||
virtual void HandleConnectionDestroyed(Connection* conn) {}
|
||||
|
@ -528,7 +529,6 @@ class RTC_EXPORT Port : public PortInterface, public sigslot::has_slots<> {
|
|||
absl::string_view type,
|
||||
bool is_final) RTC_RUN_ON(thread_);
|
||||
|
||||
friend class Connection;
|
||||
webrtc::CallbackList<PortInterface*> port_destroyed_callback_list_;
|
||||
};
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
#include "p2p/base/port_allocator.h"
|
||||
|
||||
#include <iterator>
|
||||
#include <optional>
|
||||
#include <set>
|
||||
#include <utility>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "p2p/base/ice_credentials_iterator.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
|
||||
namespace cricket {
|
||||
|
||||
|
|
|
@ -11,18 +11,26 @@
|
|||
#ifndef P2P_BASE_PORT_ALLOCATOR_H_
|
||||
#define P2P_BASE_PORT_ALLOCATOR_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <deque>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/candidate.h"
|
||||
#include "api/sequence_checker.h"
|
||||
#include "api/transport/enums.h"
|
||||
#include "p2p/base/port.h"
|
||||
#include "p2p/base/port_interface.h"
|
||||
#include "p2p/base/transport_description.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/helpers.h"
|
||||
#include "rtc_base/network.h"
|
||||
#include "rtc_base/proxy_info.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
#include "rtc_base/ssl_certificate.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
#include "rtc_base/third_party/sigslot/sigslot.h"
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#ifndef P2P_BASE_PORT_INTERFACE_H_
|
||||
#define P2P_BASE_PORT_INTERFACE_H_
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
@ -18,9 +19,11 @@
|
|||
#include "absl/strings/string_view.h"
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/candidate.h"
|
||||
#include "api/packet_socket_factory.h"
|
||||
#include "p2p/base/transport_description.h"
|
||||
#include "rtc_base/async_packet_socket.h"
|
||||
#include "rtc_base/callback_list.h"
|
||||
#include "rtc_base/proxy_info.h"
|
||||
#include "rtc_base/socket_address.h"
|
||||
|
||||
namespace rtc {
|
||||
|
@ -137,8 +140,80 @@ class PortInterface {
|
|||
|
||||
virtual void GetStunStats(absl::optional<StunStats>* stats) = 0;
|
||||
|
||||
// Removes and deletes a connection object. `DestroyConnection` will
|
||||
// delete the connection object directly whereas `DestroyConnectionAsync`
|
||||
// defers the `delete` operation to when the call stack has been unwound.
|
||||
// Async may be needed when deleting a connection object from within a
|
||||
// callback.
|
||||
virtual void DestroyConnection(Connection* conn) = 0;
|
||||
|
||||
virtual void DestroyConnectionAsync(Connection* conn) = 0;
|
||||
|
||||
// The thread on which this port performs its I/O.
|
||||
virtual webrtc::TaskQueueBase* thread() = 0;
|
||||
|
||||
// The factory used to create the sockets of this port.
|
||||
virtual rtc::PacketSocketFactory* socket_factory() const = 0;
|
||||
virtual const std::string& user_agent() = 0;
|
||||
virtual const rtc::ProxyInfo& proxy() = 0;
|
||||
|
||||
// Identifies the generation that this port was created in.
|
||||
virtual uint32_t generation() const = 0;
|
||||
virtual void set_generation(uint32_t generation) = 0;
|
||||
virtual bool send_retransmit_count_attribute() const = 0;
|
||||
// For debugging purposes.
|
||||
virtual const std::string& content_name() const = 0;
|
||||
|
||||
// Called when the Connection discovers a local peer reflexive candidate.
|
||||
virtual void AddPrflxCandidate(const Candidate& local) = 0;
|
||||
|
||||
// Foundation: An arbitrary string that is the same for two candidates
|
||||
// that have the same type, base IP address, protocol (UDP, TCP,
|
||||
// etc.), and STUN or TURN server. If any of these are different,
|
||||
// then the foundation will be different. Two candidate pairs with
|
||||
// the same foundation pairs are likely to have similar network
|
||||
// characteristics. Foundations are used in the frozen algorithm.
|
||||
virtual std::string ComputeFoundation(
|
||||
absl::string_view type,
|
||||
absl::string_view protocol,
|
||||
absl::string_view relay_protocol,
|
||||
const rtc::SocketAddress& base_address) = 0;
|
||||
|
||||
protected:
|
||||
PortInterface();
|
||||
virtual void UpdateNetworkCost() = 0;
|
||||
|
||||
// Returns DSCP value packets generated by the port itself should use.
|
||||
virtual rtc::DiffServCodePoint StunDscpValue() const = 0;
|
||||
|
||||
// If the given data comprises a complete and correct STUN message then the
|
||||
// return value is true, otherwise false. If the message username corresponds
|
||||
// with this port's username fragment, msg will contain the parsed STUN
|
||||
// message. Otherwise, the function may send a STUN response internally.
|
||||
// remote_username contains the remote fragment of the STUN username.
|
||||
virtual bool GetStunMessage(const char* data,
|
||||
size_t size,
|
||||
const rtc::SocketAddress& addr,
|
||||
std::unique_ptr<IceMessage>* out_msg,
|
||||
std::string* out_username) = 0;
|
||||
|
||||
// This method will return local and remote username fragements from the
|
||||
// stun username attribute if present.
|
||||
virtual bool ParseStunUsername(const StunMessage* stun_msg,
|
||||
std::string* local_username,
|
||||
std::string* remote_username) const = 0;
|
||||
virtual std::string CreateStunUsername(
|
||||
absl::string_view remote_username) const = 0;
|
||||
|
||||
virtual bool MaybeIceRoleConflict(const rtc::SocketAddress& addr,
|
||||
IceMessage* stun_msg,
|
||||
absl::string_view remote_ufrag) = 0;
|
||||
|
||||
virtual int16_t network_cost() const = 0;
|
||||
|
||||
// Connection and Port are entangled; functions exposed to Port only
|
||||
// should not be public.
|
||||
friend class Connection;
|
||||
};
|
||||
|
||||
} // namespace cricket
|
||||
|
|
28
pc/BUILD.gn
28
pc/BUILD.gn
|
@ -301,7 +301,7 @@ rtc_source_set("jsep_transport_controller") {
|
|||
"../api/transport:enums",
|
||||
"../api/transport:sctp_transport_factory_interface",
|
||||
"../media:rtc_data_sctp_transport_internal",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
"../p2p:p2p_transport_channel",
|
||||
|
@ -654,7 +654,7 @@ rtc_source_set("transport_stats") {
|
|||
deps = [
|
||||
"../api:dtls_transport_interface",
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:rtc_p2p",
|
||||
"../rtc_base:ssl",
|
||||
|
@ -932,7 +932,7 @@ rtc_source_set("rtc_stats_collector") {
|
|||
"../modules/audio_device",
|
||||
"../modules/audio_processing:audio_processing_statistics",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:connection_info",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
|
@ -1029,7 +1029,7 @@ rtc_source_set("sdp_offer_answer") {
|
|||
"../media:rid_description",
|
||||
"../media:rtc_media_base",
|
||||
"../media:stream_params",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
"../p2p:p2p_transport_channel",
|
||||
|
@ -1140,7 +1140,7 @@ rtc_source_set("peer_connection") {
|
|||
"../media:stream_params",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:basic_async_resolver_factory",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:connection_info",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
|
@ -1237,7 +1237,7 @@ rtc_source_set("legacy_stats_collector") {
|
|||
"../media:media_channel",
|
||||
"../media:rtc_media_base",
|
||||
"../modules/audio_processing:audio_processing_statistics",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:connection_info",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
|
@ -1315,7 +1315,7 @@ rtc_source_set("webrtc_sdp") {
|
|||
"../media:rtp_utils",
|
||||
"../media:stream_params",
|
||||
"../p2p:candidate_pair_interface",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:ice_transport_internal",
|
||||
"../p2p:p2p_constants",
|
||||
"../p2p:port_interface",
|
||||
|
@ -1382,7 +1382,7 @@ rtc_library("ice_server_parsing") {
|
|||
deps = [
|
||||
"../api:libjingle_peerconnection_api",
|
||||
"../api:rtc_error",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:port_interface",
|
||||
"../p2p:rtc_p2p",
|
||||
"../rtc_base:checks",
|
||||
|
@ -1446,7 +1446,7 @@ rtc_source_set("peer_connection_factory") {
|
|||
"../call:rtp_interfaces",
|
||||
"../call:rtp_sender",
|
||||
"../media:rtc_media_base",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:rtc_p2p",
|
||||
"../pc:audio_track",
|
||||
"../pc:connection_context",
|
||||
|
@ -2167,7 +2167,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
|||
"../media:rtc_media_tests_utils",
|
||||
"../modules/audio_device:audio_device_api",
|
||||
"../modules/audio_processing:api",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:port_interface",
|
||||
"../p2p:rtc_p2p",
|
||||
|
@ -2220,7 +2220,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
|||
"../api:libjingle_peerconnection_api",
|
||||
"../api:scoped_refptr",
|
||||
"../api/units:time_delta",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:p2p_server_utils",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:port_interface",
|
||||
|
@ -2403,7 +2403,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
|||
"../modules/audio_device:audio_device_api",
|
||||
"../modules/audio_processing:audio_processing_statistics",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:connection_info",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:ice_transport_internal",
|
||||
|
@ -2619,7 +2619,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
|||
"../modules/audio_processing:audio_processing_statistics",
|
||||
"../modules/audio_processing:audioproc_test_utils",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:fake_ice_transport",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:ice_transport_internal",
|
||||
|
@ -2773,7 +2773,7 @@ if (rtc_include_tests && !build_with_chromium) {
|
|||
"../modules/audio_processing",
|
||||
"../modules/audio_processing:api",
|
||||
"../modules/rtp_rtcp:rtp_rtcp_format",
|
||||
"../p2p:connection_and_port",
|
||||
"../p2p:connection",
|
||||
"../p2p:fake_port_allocator",
|
||||
"../p2p:p2p_test_utils",
|
||||
"../p2p:rtc_p2p",
|
||||
|
|
Loading…
Reference in a new issue