Line data Source code
1 : #pragma once 2 : 3 : #include "source/common/common/logger.h" 4 : 5 : #include "opentelemetry/proto/collector/trace/v1/trace_service.pb.h" 6 : 7 : using opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest; 8 : 9 : namespace Envoy { 10 : namespace Extensions { 11 : namespace Tracers { 12 : namespace OpenTelemetry { 13 : 14 : /** 15 : * @brief Base class for all OpenTelemetry Protocol (OTLP) exporters. 16 : * @see 17 : * https://github.com/open-telemetry/opentelemetry-proto/blob/v1.0.0/docs/specification.md#otlphttp 18 : */ 19 : class OpenTelemetryTraceExporter : public Logger::Loggable<Logger::Id::tracing> { 20 : public: 21 0 : virtual ~OpenTelemetryTraceExporter() = default; 22 : 23 : /** 24 : * @brief Exports the trace request to the configured OTLP service. 25 : * 26 : * @param request The protobuf-encoded OTLP trace request. 27 : * @return true When the request was sent. 28 : * @return false When sending the request failed. 29 : */ 30 : virtual bool log(const ExportTraceServiceRequest& request) = 0; 31 : }; 32 : 33 : using OpenTelemetryTraceExporterPtr = std::unique_ptr<OpenTelemetryTraceExporter>; 34 : 35 : } // namespace OpenTelemetry 36 : } // namespace Tracers 37 : } // namespace Extensions 38 : } // namespace Envoy