-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdap_response_message.ml
More file actions
77 lines (63 loc) · 2.25 KB
/
Copy pathdap_response_message.ml
File metadata and controls
77 lines (63 loc) · 2.25 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
open Dap_base
type ('cmd, 'body, 'presence) t = {
seq : int;
type_ : ProtocolMessage_type.t;
request_seq : int;
success : bool;
command : 'cmd Dap_commands.t;
message : string option; (* only used once I think, keep as string for now *)
body : 'body;
}
let equal ~equal_body t1 t2 =
Int.equal t1.seq t2.seq &&
Dap_base.ProtocolMessage_type.equal t1.type_ t2.type_ &&
Dap_commands.equal t1.command t2.command &&
equal_body t1.body t2.body
let seq t = t.seq
let set_seq ~seqr t =
let seq, request_seq = Dap_base.Seqr.(
seq seqr, request_seq seqr
) in
{t with seq; request_seq}
let type_ t = t.type_
let request_seq t = t.request_seq
let success t = t.success
let command t = t.command
let message t = t.message
let body t = t.body
let enc command body =
let open Data_encoding in
conv
(fun {seq; type_; request_seq; success; command; message; body} ->
(seq, type_, request_seq, success, command, message, body))
(fun (seq, type_, request_seq, success, command, message, body) ->
{seq; type_; request_seq; success; command; message; body})
(obj7
(req "seq" int31)
(req "type" ProtocolMessage_type.enc)
(req "request_seq" int31)
(req "success" bool)
(req "command" @@ Dap_commands.enc ~value:command)
(opt "message" string)
(req "body" body))
let enc_opt command body =
let open Data_encoding in
conv
(fun {seq; type_; request_seq; success; command; message; body} ->
(seq, type_, request_seq, success, command, message, body))
(fun (seq, type_, request_seq, success, command, message, body) ->
{seq; type_; request_seq; success; command; message; body})
(obj7
(req "seq" int31)
(req "type" ProtocolMessage_type.enc)
(req "request_seq" int31)
(req "success" bool)
(req "command" @@ Dap_commands.enc ~value:command)
(opt "message" string)
(opt "body" body))
let make ~seq ~request_seq ~success ~command ?message ~body () =
let type_ = ProtocolMessage_type.Response in
{seq; type_; request_seq; success; command; message; body}
let make_opt ~seq ~request_seq ~success ~command ?message ?body () =
let type_ = ProtocolMessage_type.Response in
{seq; type_; request_seq; success; command; message; body}