package srt

  1. Overview
  2. Docs
Binding for the Secure, Reliable, Transport protocol library

Install

Dune Dependency

Authors

Maintainers

Sources

v0.3.0.tar.gz
md5=7f4ccc71036fb5c8365690ccdec0498c
sha512=a79286afeed4f8ef161b9fe1f32e54581ef658f25975727351478b0a1fe16975f5c5b47f247dae4909df73f75ce8022b2201c1272f78528bf11efe8507174820

doc/src/srt.stubs/srt_generated_types.ml.html

Source file srt_generated_types.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
239
240
241
242
243
244
245
246
247
248
249
250
251
252
[@@@warning "-9-27"]
include Ctypes
let lift x = x
open Ctypes_static

let rec field : type t a. t typ -> string -> a typ -> (a, t) field =
  fun s fname ftype -> match s, fname with
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterLoss" ->
    let f = {ftype; fname; foffset = 424} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterSupply" ->
    let f = {ftype; fname; foffset = 420} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterExtra" ->
    let f = {ftype; fname; foffset = 416} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndFilterExtra" ->
    let f = {ftype; fname; foffset = 412} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterLossTotal" ->
    let f = {ftype; fname; foffset = 408} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterSupplyTotal" ->
    let f = {ftype; fname; foffset = 404} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvFilterExtraTotal" ->
    let f = {ftype; fname; foffset = 400} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndFilterExtraTotal" ->
    let f = {ftype; fname; foffset = 396} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msRcvTsbPdDelay" ->
    let f = {ftype; fname; foffset = 392} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msRcvBuf" ->
    let f = {ftype; fname; foffset = 388} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRcvBuf" ->
    let f = {ftype; fname; foffset = 384} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvBuf" ->
    let f = {ftype; fname; foffset = 380} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msSndTsbPdDelay" ->
    let f = {ftype; fname; foffset = 376} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msSndBuf" ->
    let f = {ftype; fname; foffset = 372} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteSndBuf" ->
    let f = {ftype; fname; foffset = 368} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndBuf" ->
    let f = {ftype; fname; foffset = 364} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteMSS" ->
    let f = {ftype; fname; foffset = 360} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "mbpsMaxBW" ->
    let f = {ftype; fname; foffset = 352} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteAvailRcvBuf" ->
    let f = {ftype; fname; foffset = 348} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteAvailSndBuf" ->
    let f = {ftype; fname; foffset = 344} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "mbpsBandwidth" ->
    let f = {ftype; fname; foffset = 336} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msRTT" ->
    let f = {ftype; fname; foffset = 328} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktFlightSize" ->
    let f = {ftype; fname; foffset = 320} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktCongestionWindow" ->
    let f = {ftype; fname; foffset = 316} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktFlowWindow" ->
    let f = {ftype; fname; foffset = 312} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "usPktSndPeriod" ->
    let f = {ftype; fname; foffset = 304} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRcvUndecrypt" ->
    let f = {ftype; fname; foffset = 296} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRcvDrop" ->
    let f = {ftype; fname; foffset = 288} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteSndDrop" ->
    let f = {ftype; fname; foffset = 280} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRetrans" ->
    let f = {ftype; fname; foffset = 272} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRecv" ->
    let f = {ftype; fname; foffset = 256} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteSent" ->
    let f = {ftype; fname; foffset = 248} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvUndecrypt" ->
    let f = {ftype; fname; foffset = 240} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvDrop" ->
    let f = {ftype; fname; foffset = 236} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndDrop" ->
    let f = {ftype; fname; foffset = 232} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvBelated" ->
    let f = {ftype; fname; foffset = 224} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvAvgBelatedTime" ->
    let f = {ftype; fname; foffset = 216} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktReorderDistance" ->
    let f = {ftype; fname; foffset = 208} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "usSndDuration" ->
    let f = {ftype; fname; foffset = 200} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "mbpsRecvRate" ->
    let f = {ftype; fname; foffset = 192} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "mbpsSendRate" ->
    let f = {ftype; fname; foffset = 184} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecvNAK" ->
    let f = {ftype; fname; foffset = 180} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSentNAK" ->
    let f = {ftype; fname; foffset = 176} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecvACK" ->
    let f = {ftype; fname; foffset = 172} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSentACK" ->
    let f = {ftype; fname; foffset = 168} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvRetrans" ->
    let f = {ftype; fname; foffset = 164} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRetrans" ->
    let f = {ftype; fname; foffset = 160} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvLoss" ->
    let f = {ftype; fname; foffset = 156} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndLoss" ->
    let f = {ftype; fname; foffset = 152} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecv" ->
    let f = {ftype; fname; foffset = 144} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSent" ->
    let f = {ftype; fname; foffset = 136} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRcvUndecryptTotal" ->
    let f = {ftype; fname; foffset = 128} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRcvDropTotal" ->
    let f = {ftype; fname; foffset = 120} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteSndDropTotal" ->
    let f = {ftype; fname; foffset = 112} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRetransTotal" ->
    let f = {ftype; fname; foffset = 104} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteRecvTotal" ->
    let f = {ftype; fname; foffset = 88} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "byteSentTotal" ->
    let f = {ftype; fname; foffset = 80} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvUndecryptTotal" ->
    let f = {ftype; fname; foffset = 72} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvDropTotal" ->
    let f = {ftype; fname; foffset = 68} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndDropTotal" ->
    let f = {ftype; fname; foffset = 64} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "usSndDurationTotal" ->
    let f = {ftype; fname; foffset = 56} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecvNAKTotal" ->
    let f = {ftype; fname; foffset = 48} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSentNAKTotal" ->
    let f = {ftype; fname; foffset = 44} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecvACKTotal" ->
    let f = {ftype; fname; foffset = 40} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSentACKTotal" ->
    let f = {ftype; fname; foffset = 36} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRetransTotal" ->
    let f = {ftype; fname; foffset = 32} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRcvLossTotal" ->
    let f = {ftype; fname; foffset = 28} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSndLossTotal" ->
    let f = {ftype; fname; foffset = 24} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktRecvTotal" ->
    let f = {ftype; fname; foffset = 16} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "pktSentTotal" ->
    let f = {ftype; fname; foffset = 8} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "CBytePerfMon"; _} as s'), "msTimeStamp" ->
    let f = {ftype; fname; foffset = 0} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "SRT_EPOLL_EVENT_STR"; _} as s'), "events" ->
    let f = {ftype; fname; foffset = 4} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | Struct ({ tag = "SRT_EPOLL_EVENT_STR"; _} as s'), "fd" ->
    let f = {ftype; fname; foffset = 0} in 
    (s'.fields <- BoxedField f :: s'.fields; f)
  | View { ty; _ }, _ ->
    let { ftype; foffset; fname } = field ty fname ftype in
    { ftype; foffset; fname }
  | _ -> failwith ("Unexpected field "^ fname)

let rec seal : type a. a typ -> unit = function
  | Struct ({ tag = "CBytePerfMon"; spec = Incomplete _; _ } as s') ->
    s'.spec <- Complete { size = 496; align = 8 }
  | Struct ({ tag = "SRT_EPOLL_EVENT_STR"; spec = Incomplete _; _ } as s') ->
    s'.spec <- Complete { size = 8; align = 4 }
  | Struct { tag; spec = Complete _; _ } ->
    raise (ModifyingSealedType tag)
  | Union { utag; uspec = Some _; _ } ->
    raise (ModifyingSealedType utag)
  | View { ty; _ } -> seal ty
  | _ ->
    raise (Unsupported "Sealing a non-structured type")

type 'a const = 'a
let constant (type t) name (t : t typ) : t = match t, name with
  | _, s -> failwith ("unmatched constant: "^ s)

let enum (type a) name ?typedef ?unexpected (alist : (a * int64) list) =
  match name with
  | s ->
    failwith ("unmatched enum: "^ s)
OCaml

Innovation. Community. Security.