package opentelemetry

  1. Overview
  2. Docs

Source file status_pb.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[@@@ocaml.warning "-27-30-39"]

type status_mutable = {
  mutable code : int32;
  mutable message : bytes;
  mutable details : bytes list;
}

let default_status_mutable () : status_mutable = {
  code = 0l;
  message = Bytes.create 0;
  details = [];
}


let rec decode_status d =
  let v = default_status_mutable () in
  let continue__= ref true in
  while !continue__ do
    match Pbrt.Decoder.key d with
    | None -> (
      v.details <- List.rev v.details;
    ); continue__ := false
    | Some (1, Pbrt.Varint) -> begin
      v.code <- Pbrt.Decoder.int32_as_varint d;
    end
    | Some (1, pk) -> 
      Pbrt.Decoder.unexpected_payload "Message(status), field(1)" pk
    | Some (2, Pbrt.Bytes) -> begin
      v.message <- Pbrt.Decoder.bytes d;
    end
    | Some (2, pk) -> 
      Pbrt.Decoder.unexpected_payload "Message(status), field(2)" pk
    | Some (3, Pbrt.Bytes) -> begin
      v.details <- (Pbrt.Decoder.bytes d) :: v.details;
    end
    | Some (3, pk) -> 
      Pbrt.Decoder.unexpected_payload "Message(status), field(3)" pk
    | Some (_, payload_kind) -> Pbrt.Decoder.skip d payload_kind
  done;
  ({
    Status_types.code = v.code;
    Status_types.message = v.message;
    Status_types.details = v.details;
  } : Status_types.status)

let rec encode_status (v:Status_types.status) encoder = 
  Pbrt.Encoder.key (1, Pbrt.Varint) encoder; 
  Pbrt.Encoder.int32_as_varint v.Status_types.code encoder;
  Pbrt.Encoder.key (2, Pbrt.Bytes) encoder; 
  Pbrt.Encoder.bytes v.Status_types.message encoder;
  List.iter (fun x -> 
    Pbrt.Encoder.key (3, Pbrt.Bytes) encoder; 
    Pbrt.Encoder.bytes x encoder;
  ) v.Status_types.details;
  ()
OCaml

Innovation. Community. Security.