1
#pragma once
2

            
3
#include <cstdint>
4
#include <functional>
5
#include <memory>
6
#include <queue>
7
#include <string>
8

            
9
#include "envoy/config/core/v3/config_source.pb.h"
10
#include "envoy/config/route/v3/route.pb.h"
11
#include "envoy/config/route/v3/route.pb.validate.h"
12
#include "envoy/config/subscription.h"
13
#include "envoy/http/codes.h"
14
#include "envoy/local_info/local_info.h"
15
#include "envoy/rds/config_traits.h"
16
#include "envoy/router/route_config_provider_manager.h"
17
#include "envoy/router/route_config_update_receiver.h"
18
#include "envoy/server/filter_config.h"
19
#include "envoy/service/discovery/v3/discovery.pb.h"
20
#include "envoy/singleton/instance.h"
21
#include "envoy/stats/scope.h"
22
#include "envoy/thread_local/thread_local.h"
23

            
24
#include "source/common/common/logger.h"
25
#include "source/common/protobuf/utility.h"
26
#include "source/common/rds/static_route_config_provider_impl.h"
27

            
28
namespace Envoy {
29
namespace Router {
30

            
31
/**
32
 * Implementation of RouteConfigProvider that holds a static route configuration.
33
 */
34
class StaticRouteConfigProviderImpl : public RouteConfigProvider {
35
public:
36
  StaticRouteConfigProviderImpl(const envoy::config::route::v3::RouteConfiguration& config,
37
                                Rds::ConfigTraits& config_traits,
38
                                Server::Configuration::ServerFactoryContext& factory_context,
39
                                Rds::RouteConfigProviderManager& route_config_provider_manager);
40
  ~StaticRouteConfigProviderImpl() override;
41

            
42
  // Router::RouteConfigProvider
43
90115
  Rds::ConfigConstSharedPtr config() const override { return base_.config(); }
44
45
  const absl::optional<ConfigInfo>& configInfo() const override { return base_.configInfo(); }
45
22
  SystemTime lastUpdated() const override { return base_.lastUpdated(); }
46
  absl::Status onConfigUpdate() override { return base_.onConfigUpdate(); }
47
  ConfigConstSharedPtr configCast() const override;
48
  void requestVirtualHostsUpdate(const std::string&, Event::Dispatcher&,
49
                                 std::weak_ptr<Http::RouteConfigUpdatedCallback>) override {}
50

            
51
private:
52
  Rds::StaticRouteConfigProviderImpl base_;
53
  Rds::RouteConfigProviderManager& route_config_provider_manager_;
54
};
55

            
56
} // namespace Router
57
} // namespace Envoy