blob: b351121cc8dad1f69fd4068139291c3d26e2bad2 [file] [log] [blame]
Zach Steine20867f2018-08-02 20:20:151/*
2 * Copyright 2018 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
Steve Anton10542f22019-01-11 17:11:0011#include "p2p/base/basic_async_resolver_factory.h"
Zach Steine20867f2018-08-02 20:20:1512
Harald Alvestrande6e2f282021-03-24 12:13:2813#include <memory>
14#include <utility>
15
16#include "absl/memory/memory.h"
17#include "api/async_dns_resolver.h"
Harald Alvestrand985310e2021-10-01 15:11:1718#include "api/wrapping_async_dns_resolver.h"
Harald Alvestrandb8617d12023-08-23 09:01:5319#include "rtc_base/async_dns_resolver.h"
Mirko Bonadeie5f4c6b2021-01-15 09:41:0120#include "rtc_base/async_resolver.h"
Harald Alvestrand0ccfbd22021-04-08 07:25:0421#include "rtc_base/logging.h"
Zach Steine20867f2018-08-02 20:20:1522
23namespace webrtc {
24
25rtc::AsyncResolverInterface* BasicAsyncResolverFactory::Create() {
26 return new rtc::AsyncResolver();
27}
28
Harald Alvestrande6e2f282021-03-24 12:13:2829std::unique_ptr<webrtc::AsyncDnsResolverInterface>
Harald Alvestrandb8617d12023-08-23 09:01:5330BasicAsyncDnsResolverFactory::Create() {
31 return std::make_unique<AsyncDnsResolver>();
32}
33
34std::unique_ptr<webrtc::AsyncDnsResolverInterface>
35BasicAsyncDnsResolverFactory::CreateAndResolve(const rtc::SocketAddress& addr,
36 std::function<void()> callback) {
37 std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
38 resolver->Start(addr, std::move(callback));
39 return resolver;
40}
41
42std::unique_ptr<webrtc::AsyncDnsResolverInterface>
43BasicAsyncDnsResolverFactory::CreateAndResolve(const rtc::SocketAddress& addr,
44 int family,
45 std::function<void()> callback) {
46 std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
47 resolver->Start(addr, family, std::move(callback));
48 return resolver;
49}
50
51std::unique_ptr<webrtc::AsyncDnsResolverInterface>
Harald Alvestrande6e2f282021-03-24 12:13:2852WrappingAsyncDnsResolverFactory::Create() {
53 return std::make_unique<WrappingAsyncDnsResolver>(wrapped_factory_->Create());
54}
55
56std::unique_ptr<webrtc::AsyncDnsResolverInterface>
57WrappingAsyncDnsResolverFactory::CreateAndResolve(
58 const rtc::SocketAddress& addr,
59 std::function<void()> callback) {
60 std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
Sameer Vijaykarb787e262022-08-11 09:52:5761 resolver->Start(addr, std::move(callback));
62 return resolver;
63}
64
65std::unique_ptr<webrtc::AsyncDnsResolverInterface>
66WrappingAsyncDnsResolverFactory::CreateAndResolve(
67 const rtc::SocketAddress& addr,
68 int family,
69 std::function<void()> callback) {
70 std::unique_ptr<webrtc::AsyncDnsResolverInterface> resolver = Create();
71 resolver->Start(addr, family, std::move(callback));
Harald Alvestrande6e2f282021-03-24 12:13:2872 return resolver;
73}
74
Zach Steine20867f2018-08-02 20:20:1575} // namespace webrtc