mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-07 18:37:56 -05:00
Define find_map for 4.08 compat
This commit is contained in:
parent
ef5d7af3e7
commit
5bf8eea5f1
1 changed files with 12 additions and 5 deletions
|
|
@ -25,13 +25,22 @@ let signals_from_batch (signal_batch : Client.Signal.t) =
|
||||||
| Logs ls -> List.map (fun l -> `Log l) ls
|
| Logs ls -> List.map (fun l -> `Log l) ls
|
||||||
| Metrics ms -> List.map (fun m -> `Metric m) ms
|
| Metrics ms -> List.map (fun m -> `Metric m) ms
|
||||||
|
|
||||||
|
(* For backwards compat with OCaml 4.08.
|
||||||
|
Copied from the standard library. *)
|
||||||
|
let rec find_map f = function
|
||||||
|
| [] -> None
|
||||||
|
| x :: l ->
|
||||||
|
(match f x with
|
||||||
|
| Some _ as result -> result
|
||||||
|
| None -> find_map f l)
|
||||||
|
|
||||||
let filter_map_spans f signals =
|
let filter_map_spans f signals =
|
||||||
signals
|
signals
|
||||||
|> List.filter_map (function
|
|> List.filter_map (function
|
||||||
| `Log _ | `Metric _ -> None
|
| `Log _ | `Metric _ -> None
|
||||||
| `Trace (r : Proto.Trace.resource_spans) ->
|
| `Trace (r : Proto.Trace.resource_spans) ->
|
||||||
r.scope_spans
|
r.scope_spans
|
||||||
|> List.find_map (fun ss -> ss.Proto.Trace.spans |> List.find_map f))
|
|> find_map (fun ss -> ss.Proto.Trace.spans |> find_map f))
|
||||||
|
|
||||||
let count_spans_with_name name signals =
|
let count_spans_with_name name signals =
|
||||||
signals
|
signals
|
||||||
|
|
@ -48,8 +57,7 @@ let filter_map_metrics f signals =
|
||||||
| `Log _ | `Trace _ -> None
|
| `Log _ | `Trace _ -> None
|
||||||
| `Metric (r : Proto.Metrics.resource_metrics) ->
|
| `Metric (r : Proto.Metrics.resource_metrics) ->
|
||||||
r.scope_metrics
|
r.scope_metrics
|
||||||
|> List.find_map (fun ss ->
|
|> find_map (fun ss -> ss.Proto.Metrics.metrics |> find_map f))
|
||||||
ss.Proto.Metrics.metrics |> List.find_map f))
|
|
||||||
|
|
||||||
let number_data_point_to_float : Proto.Metrics.number_data_point_value -> float
|
let number_data_point_to_float : Proto.Metrics.number_data_point_value -> float
|
||||||
= function
|
= function
|
||||||
|
|
@ -78,8 +86,7 @@ let filter_map_logs (f : Proto.Logs.log_record -> 'a option) signals : 'a list =
|
||||||
| `Metric _ | `Trace _ -> None
|
| `Metric _ | `Trace _ -> None
|
||||||
| `Log (r : Proto.Logs.resource_logs) ->
|
| `Log (r : Proto.Logs.resource_logs) ->
|
||||||
r.scope_logs
|
r.scope_logs
|
||||||
|> List.find_map (fun ss ->
|
|> find_map (fun ss -> ss.Proto.Logs.log_records |> find_map f))
|
||||||
ss.Proto.Logs.log_records |> List.find_map f))
|
|
||||||
|
|
||||||
let count_logs_with_body p signals =
|
let count_logs_with_body p signals =
|
||||||
signals
|
signals
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue