package capnp-rpc-lwt

  1. Overview
  2. Docs

Source file persistent.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
[@@@ocaml.warning "-27-32-37-60"]

type ro = Capnp.Message.ro
type rw = Capnp.Message.rw

module type S = sig
  module MessageWrapper : Capnp.RPC.S
  type 'cap message_t = 'cap MessageWrapper.Message.t
  type 'a reader_t = 'a MessageWrapper.StructStorage.reader_t
  type 'a builder_t = 'a MessageWrapper.StructStorage.builder_t


  module Reader : sig
    type array_t
    type builder_array_t
    type pointer_t = ro MessageWrapper.Slice.t option
    val of_pointer : pointer_t -> 'a reader_t
    module Persistent : sig
      type t = [`Persistent_c8cb212fcd9f5691]
      module SaveParams : sig
        type struct_t = [`SaveParams_f76fba59183073a5]
        type t = struct_t reader_t
        val seal_for_get : t -> pointer_t
        val seal_for_get_interface : t -> 'a MessageWrapper.Capability.t option
        val of_message : 'cap message_t -> t
        val of_builder : struct_t builder_t -> t
      end
      module SaveResults : sig
        type struct_t = [`SaveResults_b76848c18c40efbf]
        type t = struct_t reader_t
        val sturdy_ref_get : t -> pointer_t
        val sturdy_ref_get_interface : t -> 'a MessageWrapper.Capability.t option
        val of_message : 'cap message_t -> t
        val of_builder : struct_t builder_t -> t
      end
      module Save : sig
      end
    end
  end

  module Builder : sig
    type array_t = Reader.builder_array_t
    type reader_array_t = Reader.array_t
    type pointer_t = rw MessageWrapper.Slice.t
    module Persistent : sig
      type t = [`Persistent_c8cb212fcd9f5691]
      module SaveParams : sig
        type struct_t = [`SaveParams_f76fba59183073a5]
        type t = struct_t builder_t
        val seal_for_get : t -> pointer_t
        val seal_for_get_interface : t -> 'a MessageWrapper.Capability.t option
        val seal_for_set : t -> pointer_t -> pointer_t
        val seal_for_set_reader : t -> Reader.pointer_t -> pointer_t
        val seal_for_set_interface : t -> 'a MessageWrapper.Capability.t option -> unit
        val of_message : rw message_t -> t
        val to_message : t -> rw message_t
        val to_reader : t -> struct_t reader_t
        val init_root : ?message_size:int -> unit -> t
        val init_pointer : pointer_t -> t
      end
      module SaveResults : sig
        type struct_t = [`SaveResults_b76848c18c40efbf]
        type t = struct_t builder_t
        val sturdy_ref_get : t -> pointer_t
        val sturdy_ref_get_interface : t -> 'a MessageWrapper.Capability.t option
        val sturdy_ref_set : t -> pointer_t -> pointer_t
        val sturdy_ref_set_reader : t -> Reader.pointer_t -> pointer_t
        val sturdy_ref_set_interface : t -> 'a MessageWrapper.Capability.t option -> unit
        val of_message : rw message_t -> t
        val to_message : t -> rw message_t
        val to_reader : t -> struct_t reader_t
        val init_root : ?message_size:int -> unit -> t
        val init_pointer : pointer_t -> t
      end
      module Save : sig
      end
    end
  end
end

module MakeRPC(MessageWrapper : Capnp.RPC.S) = struct
  type 'a reader_t = 'a MessageWrapper.StructStorage.reader_t
  type 'a builder_t = 'a MessageWrapper.StructStorage.builder_t
  module CamlBytes = Bytes
  module DefaultsMessage_ = Capnp.BytesMessage

  let _builder_defaults_message =
    let message_segments = [
      Bytes.unsafe_of_string "\
      ";
    ] in
    DefaultsMessage_.Message.readonly
      (DefaultsMessage_.Message.of_storage message_segments)

  let invalid_msg = Capnp.Message.invalid_msg

  include Capnp.Runtime.BuilderInc.Make(MessageWrapper)

  type 'cap message_t = 'cap MessageWrapper.Message.t

  module DefaultsCopier_ =
    Capnp.Runtime.BuilderOps.Make(Capnp.BytesMessage)(MessageWrapper)

  let _reader_defaults_message =
    MessageWrapper.Message.create
      (DefaultsMessage_.Message.total_size _builder_defaults_message)


  module Reader = struct
    type array_t = ro MessageWrapper.ListStorage.t
    type builder_array_t = rw MessageWrapper.ListStorage.t
    type pointer_t = ro MessageWrapper.Slice.t option
    let of_pointer = RA_.deref_opt_struct_pointer

    module Persistent = struct
      type t = [`Persistent_c8cb212fcd9f5691]
      module SaveParams = struct
        type struct_t = [`SaveParams_f76fba59183073a5]
        type t = struct_t reader_t
        let seal_for_get x =
          RA_.get_pointer x 0
        let seal_for_get_interface x =
          RA_.get_interface x 0
        let of_message x = RA_.get_root_struct (RA_.Message.readonly x)
        let of_builder x = Some (RA_.StructStorage.readonly x)
      end
      module SaveResults = struct
        type struct_t = [`SaveResults_b76848c18c40efbf]
        type t = struct_t reader_t
        let sturdy_ref_get x =
          RA_.get_pointer x 0
        let sturdy_ref_get_interface x =
          RA_.get_interface x 0
        let of_message x = RA_.get_root_struct (RA_.Message.readonly x)
        let of_builder x = Some (RA_.StructStorage.readonly x)
      end
      module Save = struct
      end
    end
  end

  module Builder = struct
    type array_t = Reader.builder_array_t
    type reader_array_t = Reader.array_t
    type pointer_t = rw MessageWrapper.Slice.t

    module Persistent = struct
      type t = [`Persistent_c8cb212fcd9f5691]
      module SaveParams = struct
        type struct_t = [`SaveParams_f76fba59183073a5]
        type t = struct_t builder_t
        let seal_for_get x =
          BA_.get_pointer x 0
        let seal_for_get_interface x =
          BA_.get_interface x 0
        let seal_for_set x v =
          BA_.set_pointer x 0 (Some v)
        let seal_for_set_reader x v =
          BA_.set_pointer x 0 v
        let seal_for_set_interface x v =
          BA_.set_interface x 0 v
        let of_message x = BA_.get_root_struct ~data_words:0 ~pointer_words:1 x
        let to_message x = x.BA_.NM.StructStorage.data.MessageWrapper.Slice.msg
        let to_reader x = Some (RA_.StructStorage.readonly x)
        let init_root ?message_size () =
          BA_.alloc_root_struct ?message_size ~data_words:0 ~pointer_words:1 ()
        let init_pointer ptr =
          BA_.init_struct_pointer ptr ~data_words:0 ~pointer_words:1
      end
      module SaveResults = struct
        type struct_t = [`SaveResults_b76848c18c40efbf]
        type t = struct_t builder_t
        let sturdy_ref_get x =
          BA_.get_pointer x 0
        let sturdy_ref_get_interface x =
          BA_.get_interface x 0
        let sturdy_ref_set x v =
          BA_.set_pointer x 0 (Some v)
        let sturdy_ref_set_reader x v =
          BA_.set_pointer x 0 v
        let sturdy_ref_set_interface x v =
          BA_.set_interface x 0 v
        let of_message x = BA_.get_root_struct ~data_words:0 ~pointer_words:1 x
        let to_message x = x.BA_.NM.StructStorage.data.MessageWrapper.Slice.msg
        let to_reader x = Some (RA_.StructStorage.readonly x)
        let init_root ?message_size () =
          BA_.alloc_root_struct ?message_size ~data_words:0 ~pointer_words:1 ()
        let init_pointer ptr =
          BA_.init_struct_pointer ptr ~data_words:0 ~pointer_words:1
      end
      module Save = struct
      end
    end
  end

  module Client = struct
    module Persistent = struct
      type t = [`Persistent_c8cb212fcd9f5691]
      let interface_id = Stdint.Uint64.of_string "0xc8cb212fcd9f5691"
      module Save = struct
        module Params = Builder.Persistent.SaveParams
        module Results = Reader.Persistent.SaveResults
        let method_id : (t, Params.t, Results.t) Capnp.RPC.MethodID.t =
          Capnp.RPC.MethodID.v ~interface_id ~method_id:0
      end
      let method_name = function
        | 0 -> Some "save"
        | _ -> None
      let () = Capnp.RPC.Registry.register ~interface_id ~name:"Persistent" method_name
    end
  end

  module Service = struct
    module Persistent = struct
      type t = [`Persistent_c8cb212fcd9f5691]
      let interface_id = Stdint.Uint64.of_string "0xc8cb212fcd9f5691"
      module Save = struct
        module Params = Reader.Persistent.SaveParams
        module Results = Builder.Persistent.SaveResults
      end
      class virtual service = object (self)
        method release = ()
        method dispatch ~interface_id:i ~method_id =
          if i <> interface_id then MessageWrapper.Untyped.unknown_interface ~interface_id:i
          else match method_id with
          | 0 -> MessageWrapper.Untyped.abstract_method self#save_impl
          | x -> MessageWrapper.Untyped.unknown_method ~interface_id ~method_id
        method pp f = Format.pp_print_string f "Persistent"
        method virtual save_impl : (Save.Params.t, Save.Results.t) MessageWrapper.Service.method_t
      end
      let local (service:#service) =
        MessageWrapper.Untyped.local service
    end
  end
  module MessageWrapper = MessageWrapper
end

module Make(M:Capnp.MessageSig.S) = MakeRPC(Capnp.RPC.None(M))
OCaml

Innovation. Community. Security.