1
#pragma once
2

            
3
#include <sys/types.h>
4

            
5
#include <cstdint>
6
#include <string>
7

            
8
#include "envoy/common/pure.h"
9
#include "envoy/config/core/v3/address.pb.h"
10
#include "envoy/config/typed_config.h"
11
#include "envoy/network/address.h"
12

            
13
namespace Envoy {
14
namespace Network {
15
namespace Address {
16

            
17
/**
18
 * Interface for all network address resolvers.
19
 */
20
class Resolver : public Config::UntypedFactory {
21
public:
22
15
  ~Resolver() override = default;
23

            
24
  /**
25
   * Resolve a custom address string and port to an Address::Instance.
26
   * @param socket_address supplies the socket address to resolve.
27
   * @return InstanceConstSharedPtr appropriate Address::Instance or an error status.
28
   */
29
  virtual absl::StatusOr<InstanceConstSharedPtr>
30
  resolve(const envoy::config::core::v3::SocketAddress& socket_address) PURE;
31

            
32
2633
  std::string category() const override { return "envoy.resolvers"; }
33
};
34

            
35
} // namespace Address
36
} // namespace Network
37
} // namespace Envoy