1
#pragma once
2

            
3
#include "envoy/admin/v3/init_dump.pb.h"
4
#include "envoy/http/codes.h"
5
#include "envoy/http/header_map.h"
6
#include "envoy/server/admin.h"
7
#include "envoy/server/instance.h"
8

            
9
#include "source/server/admin/handler_ctx.h"
10

            
11
#include "absl/strings/string_view.h"
12

            
13
namespace Envoy {
14
namespace Server {
15

            
16
class InitDumpHandler : public HandlerContextBase {
17

            
18
public:
19
  InitDumpHandler(Server::Instance& server);
20

            
21
  Http::Code handlerInitDump(Http::ResponseHeaderMap& response_headers, Buffer::Instance& response,
22
                             AdminStream&) const;
23

            
24
private:
25
  /**
26
   * Helper methods for the /init_dump url handler to add unready targets information.
27
   */
28
  std::unique_ptr<envoy::admin::v3::UnreadyTargetsDumps>
29
  dumpUnreadyTargets(const absl::optional<std::string>& target) const;
30

            
31
  /**
32
   * Helper methods for the /init_dump url handler to add unready targets config of listeners.
33
   */
34
  void
35
  dumpListenerUnreadyTargets(envoy::admin::v3::UnreadyTargetsDumps& unready_targets_dumps) const;
36
};
37

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