Line data Source code
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 393 : ConfigConstSharedPtr config() const override { return config_; } 26 140 : const absl::optional<ConfigInfo>& configInfo() const override { return config_info_; } 27 70 : SystemTime lastUpdated() const override { return last_updated_; } 28 0 : 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