1
#pragma once
2

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

            
6
#include "source/server/factory_context_impl.h"
7

            
8
namespace Envoy {
9
namespace Server {
10

            
11
class AdminFactoryContext final : public FactoryContextImplBase {
12
public:
13
  AdminFactoryContext(Envoy::Server::Instance& server,
14
                      const Network::ListenerInfoConstSharedPtr& listener_info)
15
10785
      : FactoryContextImplBase(server, server.messageValidationContext().staticValidationVisitor(),
16
10785
                               server.stats().createScope(""),
17
10785
                               server.stats().createScope("listener.admin."), listener_info) {}
18

            
19
1
  Init::Manager& initManager() override {
20
    // Reuse the server init manager to avoid creating a new one for this special listener.
21
1
    return server_.initManager();
22
1
  }
23
1
  Network::DrainDecision& drainDecision() override {
24
    // Reuse the server drain manager to avoid creating a new one for this special listener.
25
1
    return server_.drainManager();
26
1
  }
27
};
28
using AdminFactoryContextPtr = std::unique_ptr<AdminFactoryContext>;
29

            
30
} // namespace Server
31
} // namespace Envoy