1
#pragma once
2

            
3
#include "envoy/rds/config_traits.h"
4
#include "envoy/rds/route_config_provider.h"
5
#include "envoy/server/factory_context.h"
6

            
7
#include "source/common/rds/route_config_provider_manager.h"
8

            
9
namespace Envoy {
10
namespace Rds {
11

            
12
/**
13
 * Implementation of RouteConfigProvider that holds a static route configuration.
14
 */
15
class StaticRouteConfigProviderImpl : public RouteConfigProvider {
16
public:
17
  StaticRouteConfigProviderImpl(const Protobuf::Message& route_config_proto,
18
                                ConfigTraits& config_traits,
19
                                Server::Configuration::ServerFactoryContext& factory_context,
20
                                RouteConfigProviderManager& route_config_provider_manager);
21

            
22
  ~StaticRouteConfigProviderImpl() override;
23

            
24
  // Router::RouteConfigProvider
25
90689
  ConfigConstSharedPtr config() const override { return config_; }
26
47
  const absl::optional<ConfigInfo>& configInfo() const override { return config_info_; }
27
23
  SystemTime lastUpdated() const override { return last_updated_; }
28
  absl::Status onConfigUpdate() override { return absl::OkStatus(); }
29

            
30
private:
31
  ProtobufTypes::MessagePtr route_config_proto_;
32
  ConfigConstSharedPtr config_;
33
  SystemTime last_updated_;
34
  absl::optional<ConfigInfo> config_info_;
35
  RouteConfigProviderManager& route_config_provider_manager_;
36
};
37

            
38
} // namespace Rds
39
} // namespace Envoy