Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/envoy/network/dns_resolver.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include "envoy/api/api.h"
4
#include "envoy/event/dispatcher.h"
5
#include "envoy/network/dns.h"
6
7
#include "source/common/config/utility.h"
8
9
namespace Envoy {
10
namespace Network {
11
12
constexpr absl::string_view CaresDnsResolver = "envoy.network.dns_resolver.cares";
13
constexpr absl::string_view AppleDnsResolver = "envoy.network.dns_resolver.apple";
14
constexpr absl::string_view DnsResolverCategory = "envoy.network.dns_resolver";
15
16
class DnsResolverFactory : public Config::TypedFactory {
17
public:
18
  /**
19
   * @returns a DnsResolver object.
20
   * @param dispatcher: the local dispatcher thread
21
   * @param api: API interface to interact with system resources
22
   * @param typed_dns_resolver_config: the typed DNS resolver config
23
   */
24
  virtual DnsResolverSharedPtr createDnsResolver(
25
      Event::Dispatcher& dispatcher, Api::Api& api,
26
      const envoy::config::core::v3::TypedExtensionConfig& typed_dns_resolver_config) const PURE;
27
28
57
  std::string category() const override { return std::string(DnsResolverCategory); }
29
30
  /**
31
   * Initialize the related data for this type of DNS resolver.
32
   * For some DNS resolvers, like c-ares, there are some specific data structure
33
   * needs to be initialized before using it to resolve target.
34
   */
35
0
  virtual void initialize() {}
36
37
  /**
38
   * Cleanup the related data for this type of DNS resolver.
39
   * For some DNS resolvers, like c-ares, there are some specific data structure
40
   * needs to be cleaned up before terminates Envoy.
41
   */
42
4
  virtual void terminate() {}
43
44
  /**
45
   * Create the DNS resolver factory based on the typed config and initialize it.
46
   * @returns the DNS Resolver factory.
47
   * @param typed_dns_resolver_config: the typed DNS resolver config
48
   */
49
  static Network::DnsResolverFactory&
50
  createFactory(const envoy::config::core::v3::TypedExtensionConfig& typed_dns_resolver_config);
51
52
  /**
53
   * Call the terminate method on all the registered DNS resolver factories.
54
   */
55
  static void terminateFactories();
56
};
57
58
} // namespace Network
59
} // namespace Envoy