1
#pragma once
2

            
3
#include "envoy/server/factory_context.h"
4

            
5
namespace Envoy {
6
namespace Server {
7

            
8
class GenericFactoryContextImpl : public Server::Configuration::GenericFactoryContext {
9
public:
10
  GenericFactoryContextImpl(Server::Configuration::ServerFactoryContext& server_context,
11
                            ProtobufMessage::ValidationVisitor& validation_visitor);
12
  GenericFactoryContextImpl(Server::Configuration::GenericFactoryContext& generic_context);
13

            
14
  GenericFactoryContextImpl(Server::Configuration::ServerFactoryContext& server_context,
15
                            Stats::Scope& stats_scope,
16
                            ProtobufMessage::ValidationVisitor& validation_visitor,
17
                            Init::Manager* init_manager = nullptr)
18
30012
      : server_context_(server_context), stats_scope_(stats_scope),
19
30012
        validation_visitor_(validation_visitor), init_manager_(init_manager) {}
20

            
21
  // Server::Configuration::GenericFactoryContext
22
  Server::Configuration::ServerFactoryContext& serverFactoryContext() override;
23
  Stats::Scope& scope() override;
24
  ProtobufMessage::ValidationVisitor& messageValidationVisitor() override;
25
  Init::Manager& initManager() override;
26

            
27
30010
  void setInitManager(Init::Manager& init_manager) { init_manager_ = &init_manager; }
28

            
29
private:
30
  Server::Configuration::ServerFactoryContext& server_context_;
31
  Stats::Scope& stats_scope_;
32
  ProtobufMessage::ValidationVisitor& validation_visitor_;
33
  Init::Manager* init_manager_{};
34
};
35

            
36
using GenericFactoryContextImplPtr = std::unique_ptr<GenericFactoryContextImpl>;
37

            
38
} // namespace Server
39
} // namespace Envoy