Use the AsyncDnsResolver in PeerConnection defaults
Bug: webrtc:12598 Change-Id: I1be306e4dbb7c85aa1ccf0fabe96c8556fd5af42 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/317441 Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40613}
This commit is contained in:
parent
7084e1b6d9
commit
b8617d14a6
@ -115,6 +115,7 @@ rtc_library("rtc_p2p") {
|
|||||||
"../api/units:time_delta",
|
"../api/units:time_delta",
|
||||||
"../api/units:timestamp",
|
"../api/units:timestamp",
|
||||||
"../logging:ice_log",
|
"../logging:ice_log",
|
||||||
|
"../rtc_base:async_dns_resolver",
|
||||||
"../rtc_base:async_packet_socket",
|
"../rtc_base:async_packet_socket",
|
||||||
"../rtc_base:async_resolver_interface",
|
"../rtc_base:async_resolver_interface",
|
||||||
"../rtc_base:async_tcp_socket",
|
"../rtc_base:async_tcp_socket",
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
#include "absl/memory/memory.h"
|
#include "absl/memory/memory.h"
|
||||||
#include "api/async_dns_resolver.h"
|
#include "api/async_dns_resolver.h"
|
||||||
#include "api/wrapping_async_dns_resolver.h"
|
#include "api/wrapping_async_dns_resolver.h"
|
||||||
|
#include "rtc_base/async_dns_resolver.h"
|
||||||
#include "rtc_base/async_resolver.h"
|
#include "rtc_base/async_resolver.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|
||||||
@ -25,6 +26,28 @@ rtc::AsyncResolverInterface* BasicAsyncResolverFactory::Create() {
|
|||||||
return new rtc::AsyncResolver();
|
return new rtc::AsyncResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface>
|
||||||
|
BasicAsyncDnsResolverFactory::Create() {
|
||||||
|
return std::make_unique<AsyncDnsResolver>();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface>
|
||||||
|
BasicAsyncDnsResolverFactory::CreateAndResolve(const rtc::SocketAddress& addr,
|
||||||
|
std::function<void()> callback) {
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
|
||||||
|
resolver->Start(addr, std::move(callback));
|
||||||
|
return resolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface>
|
||||||
|
BasicAsyncDnsResolverFactory::CreateAndResolve(const rtc::SocketAddress& addr,
|
||||||
|
int family,
|
||||||
|
std::function<void()> callback) {
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
|
||||||
|
resolver->Start(addr, family, std::move(callback));
|
||||||
|
return resolver;
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<webrtc::AsyncDnsResolverInterface>
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface>
|
||||||
WrappingAsyncDnsResolverFactory::Create() {
|
WrappingAsyncDnsResolverFactory::Create() {
|
||||||
return std::make_unique<WrappingAsyncDnsResolver>(wrapped_factory_->Create());
|
return std::make_unique<WrappingAsyncDnsResolver>(wrapped_factory_->Create());
|
||||||
|
|||||||
@ -26,6 +26,24 @@ class BasicAsyncResolverFactory final : public AsyncResolverFactory {
|
|||||||
rtc::AsyncResolverInterface* Create() override;
|
rtc::AsyncResolverInterface* Create() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// A factory that vends AsyncDnsResolver instances.
|
||||||
|
class BasicAsyncDnsResolverFactory final
|
||||||
|
: public AsyncDnsResolverFactoryInterface {
|
||||||
|
public:
|
||||||
|
BasicAsyncDnsResolverFactory() = default;
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface> CreateAndResolve(
|
||||||
|
const rtc::SocketAddress& addr,
|
||||||
|
std::function<void()> callback) override;
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface> CreateAndResolve(
|
||||||
|
const rtc::SocketAddress& addr,
|
||||||
|
int family,
|
||||||
|
std::function<void()> callback) override;
|
||||||
|
|
||||||
|
std::unique_ptr<webrtc::AsyncDnsResolverInterface> Create() override;
|
||||||
|
};
|
||||||
|
|
||||||
// This class wraps a factory using the older webrtc::AsyncResolverFactory API,
|
// This class wraps a factory using the older webrtc::AsyncResolverFactory API,
|
||||||
// and produces webrtc::AsyncDnsResolver objects that contain an
|
// and produces webrtc::AsyncDnsResolver objects that contain an
|
||||||
// rtc::AsyncResolver object.
|
// rtc::AsyncResolver object.
|
||||||
|
|||||||
@ -461,8 +461,7 @@ RTCErrorOr<rtc::scoped_refptr<PeerConnection>> PeerConnection::Create(
|
|||||||
|
|
||||||
// Interim code: If an AsyncResolverFactory is given, but not an
|
// Interim code: If an AsyncResolverFactory is given, but not an
|
||||||
// AsyncDnsResolverFactory, wrap it in a WrappingAsyncDnsResolverFactory
|
// AsyncDnsResolverFactory, wrap it in a WrappingAsyncDnsResolverFactory
|
||||||
// If neither is given, create a WrappingAsyncDnsResolverFactory wrapping
|
// If neither is given, create a BasicAsyncDnsResolverFactory.
|
||||||
// a BasicAsyncResolver.
|
|
||||||
// TODO(bugs.webrtc.org/12598): Remove code once all callers pass a
|
// TODO(bugs.webrtc.org/12598): Remove code once all callers pass a
|
||||||
// AsyncDnsResolverFactory.
|
// AsyncDnsResolverFactory.
|
||||||
if (dependencies.async_dns_resolver_factory &&
|
if (dependencies.async_dns_resolver_factory &&
|
||||||
@ -478,8 +477,7 @@ RTCErrorOr<rtc::scoped_refptr<PeerConnection>> PeerConnection::Create(
|
|||||||
std::move(dependencies.async_resolver_factory));
|
std::move(dependencies.async_resolver_factory));
|
||||||
} else {
|
} else {
|
||||||
dependencies.async_dns_resolver_factory =
|
dependencies.async_dns_resolver_factory =
|
||||||
std::make_unique<WrappingAsyncDnsResolverFactory>(
|
std::make_unique<BasicAsyncDnsResolverFactory>();
|
||||||
std::make_unique<BasicAsyncResolverFactory>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The PeerConnection constructor consumes some, but not all, dependencies.
|
// The PeerConnection constructor consumes some, but not all, dependencies.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user