1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/resource_detectors/v3/static_config_resource_detector.pb.h"
6

            
7
#include "source/extensions/tracers/opentelemetry/resource_detectors/resource_detector.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace Tracers {
12
namespace OpenTelemetry {
13

            
14
/**
15
 * Config registration for the static config resource detector. @see ResourceDetectorFactory.
16
 */
17
class StaticConfigResourceDetectorFactory : public ResourceDetectorFactory {
18
public:
19
  /**
20
   * @brief Create a Resource Detector that use static config for resource attributes.
21
   *
22
   * @param message The resource detector configuration.
23
   * @param context The tracer factory context.
24
   * @return ResourceDetectorPtr
25
   */
26
  ResourceDetectorPtr
27
  createResourceDetector(const Protobuf::Message& message,
28
                         Server::Configuration::ServerFactoryContext& context) override;
29

            
30
4
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
31
4
    return std::make_unique<envoy::extensions::tracers::opentelemetry::resource_detectors::v3::
32
4
                                StaticConfigResourceDetectorConfig>();
33
4
  }
34

            
35
8
  std::string name() const override {
36
8
    return "envoy.tracers.opentelemetry.resource_detectors.static_config";
37
8
  }
38
};
39

            
40
DECLARE_FACTORY(StaticConfigResourceDetectorFactory);
41

            
42
} // namespace OpenTelemetry
43
} // namespace Tracers
44
} // namespace Extensions
45
} // namespace Envoy