1
#pragma once
2

            
3
#include <string>
4
#include <vector>
5

            
6
#include "envoy/config/upstream/local_address_selector/v3/default_local_address_selector.pb.h"
7
#include "envoy/network/address.h"
8
#include "envoy/network/socket.h"
9
#include "envoy/registry/registry.h"
10
#include "envoy/upstream/upstream.h"
11

            
12
#include "absl/types/optional.h"
13

            
14
namespace Envoy {
15
namespace Upstream {
16

            
17
class DefaultUpstreamLocalAddressSelectorFactory : public UpstreamLocalAddressSelectorFactory {
18
public:
19
  std::string name() const override;
20

            
21
  absl::StatusOr<UpstreamLocalAddressSelectorConstSharedPtr> createLocalAddressSelector(
22
      std::vector<::Envoy::Upstream::UpstreamLocalAddress> upstream_local_addresses,
23
      absl::optional<std::string> cluster_name) const override;
24

            
25
493
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
26
493
    return std::make_unique<
27
493
        envoy::config::upstream::local_address_selector::v3::DefaultLocalAddressSelector>();
28
493
  }
29
};
30

            
31
DECLARE_FACTORY(DefaultUpstreamLocalAddressSelectorFactory);
32

            
33
} // namespace Upstream
34
} // namespace Envoy