diff --git a/src/client/signal.ml b/src/client/signal.ml index 64731434..7dc1cf08 100644 --- a/src/client/signal.ml +++ b/src/client/signal.ml @@ -42,3 +42,22 @@ module Encode = struct ()) ~enc:Trace_service.encode_pb_export_trace_service_request end + +module Decode = struct + let resource_of_string ~dec s = Pbrt.Decoder.of_string s |> dec + + let logs data = + (resource_of_string ~dec:Logs_service.decode_pb_export_logs_service_request + data) + .resource_logs + + let metrics data = + (resource_of_string + ~dec:Metrics_service.decode_pb_export_metrics_service_request data) + .resource_metrics + + let traces data = + (resource_of_string + ~dec:Trace_service.decode_pb_export_trace_service_request data) + .resource_spans +end diff --git a/src/client/signal.mli b/src/client/signal.mli index 2eb91b6e..3ed188c7 100644 --- a/src/client/signal.mli +++ b/src/client/signal.mli @@ -27,3 +27,21 @@ module Encode : sig @param encoder provide an encoder state to reuse *) end + +(** Decode signals from protobuf encoded strings, received over the wire *) +module Decode : sig + val logs : string -> Opentelemetry_proto.Logs.resource_logs list + (** [logs ls] is a protobuf encoded string of the logs [ls] + + @param encoder provide an encoder state to reuse *) + + val metrics : string -> Opentelemetry_proto.Metrics.resource_metrics list + (** [metrics ms] is a protobuf encoded string of the metrics [ms] + + @param encoder provide an encoder state to reuse *) + + val traces : string -> Opentelemetry_proto.Trace.resource_spans list + (** [metrics ts] is a protobuf encoded string of the traces [ts] + + @param encoder provide an encoder state to reuse *) +end