1
#pragma once
2

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

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

            
8
namespace Envoy {
9
namespace Extensions {
10
namespace StatSinks {
11
namespace MetricsService {
12

            
13
// MetricsService sink
14
constexpr char MetricsServiceName[] = "envoy.stat_sinks.metrics_service";
15

            
16
/**
17
 * Config registration for the MetricsService stats sink. @see StatsSinkFactory.
18
 */
19
class MetricsServiceSinkFactory : Logger::Loggable<Logger::Id::config>,
20
                                  public Server::Configuration::StatsSinkFactory {
21
public:
22
  absl::StatusOr<Stats::SinkPtr>
23
  createStatsSink(const Protobuf::Message& config,
24
                  Server::Configuration::ServerFactoryContext& server) override;
25

            
26
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
27

            
28
  std::string name() const override;
29
};
30

            
31
DECLARE_FACTORY(MetricsServiceSinkFactory);
32

            
33
} // namespace MetricsService
34
} // namespace StatSinks
35
} // namespace Extensions
36
} // namespace Envoy