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 OpenTelemetry {
12

            
13
constexpr char OpenTelemetryName[] = "envoy.stat_sinks.open_telemetry";
14

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

            
25
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
26

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

            
30
DECLARE_FACTORY(OpenTelemetrySinkFactory);
31

            
32
} // namespace OpenTelemetry
33
} // namespace StatSinks
34
} // namespace Extensions
35
} // namespace Envoy