rbsrt 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +752 -0
- data/Rakefile +29 -0
- data/bin/rbsrt-client +113 -0
- data/bin/rbsrt-server +68 -0
- data/bin/rbsrt-sockets +82 -0
- data/ext/rbsrt/extconf.rb +37 -0
- data/ext/rbsrt/rbsrt.c +2270 -0
- data/ext/rbsrt/rbsrt.h +265 -0
- data/ext/rbsrt/rbstats.c +960 -0
- data/ext/rbsrt/rbstats.h +24 -0
- data/lib/rbsrt/rbsrt.bundle +0 -0
- data/lib/rbsrt/streamid_components.rb +113 -0
- data/lib/rbsrt/version.rb +3 -0
- data/lib/rbsrt.rb +5 -0
- data/rbsrt.gemspec +22 -0
- data/test/rbsrt/poll_test.rb +153 -0
- data/test/rbsrt/stats_test.rb +546 -0
- data/test/rbsrt/streamid_components_test.rb +281 -0
- metadata +83 -0
data/ext/rbsrt/rbstats.c
ADDED
@@ -0,0 +1,960 @@
|
|
1
|
+
/*
|
2
|
+
* Ruby SRT - Ruby binding for Secure, Reliable, Transport
|
3
|
+
* Copyright (c) 2019 Klaas Speller, Recce.
|
4
|
+
*
|
5
|
+
* This Source Code Form is subject to the terms of the Mozilla Public
|
6
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
7
|
+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
8
|
+
*
|
9
|
+
*/
|
10
|
+
|
11
|
+
/**
|
12
|
+
* A Ruby wrapper for SRT (Secure Reliable Transport)
|
13
|
+
*
|
14
|
+
* @author: Klaas Speller <klaas@recce.nl>
|
15
|
+
*/
|
16
|
+
|
17
|
+
#include <stdlib.h>
|
18
|
+
|
19
|
+
#include "rbsrt.h"
|
20
|
+
#include "rbstats.h"
|
21
|
+
|
22
|
+
// MARK: - Initializers
|
23
|
+
|
24
|
+
size_t rbsrt_stats_dsize(const void *stats)
|
25
|
+
{
|
26
|
+
return sizeof(rbsrt_stats_t);
|
27
|
+
}
|
28
|
+
|
29
|
+
void rbsrt_stats_dmark(void *data)
|
30
|
+
{
|
31
|
+
|
32
|
+
}
|
33
|
+
|
34
|
+
void rbsrt_stats_deallocate(rbsrt_stats_t *stats)
|
35
|
+
{
|
36
|
+
free(stats);
|
37
|
+
}
|
38
|
+
|
39
|
+
VALUE rbsrt_stat_allocate(VALUE klass)
|
40
|
+
{
|
41
|
+
rbsrt_stats_t *stats = malloc(sizeof(rbsrt_stats_t));
|
42
|
+
|
43
|
+
memset(stats, 0, sizeof(rbsrt_stats_t));
|
44
|
+
|
45
|
+
return TypedData_Wrap_Struct(klass, &rbsrt_stats_rbtype, stats);
|
46
|
+
}
|
47
|
+
|
48
|
+
VALUE rbsrt_stats_initialize(int argc, VALUE* argv, VALUE self)
|
49
|
+
{
|
50
|
+
VALUE arg1;
|
51
|
+
VALUE opts;
|
52
|
+
|
53
|
+
rb_scan_args(argc, argv, "1:", &arg1, &opts);
|
54
|
+
|
55
|
+
RBSRT_SOCKET_BASE_UNWRAP(arg1, socket);
|
56
|
+
|
57
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
58
|
+
|
59
|
+
int clear = NIL_P(opts) ? 0 : RTEST(rb_hash_aref(opts, RB_ID2SYM(rb_intern("clear"))));
|
60
|
+
|
61
|
+
if (srt_bstats(socket->socket, &stats->perf, clear) == SRT_ERROR)
|
62
|
+
{
|
63
|
+
rbsrt_raise_last_srt_error();
|
64
|
+
}
|
65
|
+
|
66
|
+
return self;
|
67
|
+
}
|
68
|
+
|
69
|
+
// MARK: - Properties
|
70
|
+
|
71
|
+
VALUE rbsrt_stat_get_mstimestamp(VALUE self)
|
72
|
+
{
|
73
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
74
|
+
|
75
|
+
return INT2NUM( stats->perf.msTimeStamp );
|
76
|
+
}
|
77
|
+
|
78
|
+
VALUE rbsrt_stat_get_pktsenttotal(VALUE self)
|
79
|
+
{
|
80
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
81
|
+
|
82
|
+
return INT2NUM( stats->perf.pktSentTotal );
|
83
|
+
}
|
84
|
+
|
85
|
+
VALUE rbsrt_stat_get_pktrecvtotal(VALUE self)
|
86
|
+
{
|
87
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
88
|
+
|
89
|
+
return INT2NUM( stats->perf.pktRecvTotal );
|
90
|
+
}
|
91
|
+
|
92
|
+
VALUE rbsrt_stat_get_pktsndlosstotal(VALUE self)
|
93
|
+
{
|
94
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
95
|
+
|
96
|
+
return INT2NUM( stats->perf.pktSndLossTotal );
|
97
|
+
}
|
98
|
+
|
99
|
+
VALUE rbsrt_stat_get_pktrcvlosstotal(VALUE self)
|
100
|
+
{
|
101
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
102
|
+
|
103
|
+
return INT2NUM( stats->perf.pktRcvLossTotal );
|
104
|
+
}
|
105
|
+
|
106
|
+
VALUE rbsrt_stat_get_pktretranstotal(VALUE self)
|
107
|
+
{
|
108
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
109
|
+
|
110
|
+
return INT2NUM( stats->perf.pktRetransTotal );
|
111
|
+
}
|
112
|
+
|
113
|
+
VALUE rbsrt_stat_get_pktsentacktotal(VALUE self)
|
114
|
+
{
|
115
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
116
|
+
|
117
|
+
return INT2NUM( stats->perf.pktSentACKTotal );
|
118
|
+
}
|
119
|
+
|
120
|
+
VALUE rbsrt_stat_get_pktrecvacktotal(VALUE self)
|
121
|
+
{
|
122
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
123
|
+
|
124
|
+
return INT2NUM( stats->perf.pktRecvACKTotal );
|
125
|
+
}
|
126
|
+
|
127
|
+
VALUE rbsrt_stat_get_pktsentnaktotal(VALUE self)
|
128
|
+
{
|
129
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
130
|
+
|
131
|
+
return INT2NUM( stats->perf.pktSentNAKTotal );
|
132
|
+
}
|
133
|
+
|
134
|
+
VALUE rbsrt_stat_get_pktrecvnaktotal(VALUE self)
|
135
|
+
{
|
136
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
137
|
+
|
138
|
+
return INT2NUM( stats->perf.pktRecvNAKTotal );
|
139
|
+
}
|
140
|
+
|
141
|
+
VALUE rbsrt_stat_get_ussnddurationtotal(VALUE self)
|
142
|
+
{
|
143
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
144
|
+
|
145
|
+
return INT2NUM( stats->perf.usSndDurationTotal );
|
146
|
+
}
|
147
|
+
|
148
|
+
VALUE rbsrt_stat_get_pktsnddroptotal(VALUE self)
|
149
|
+
{
|
150
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
151
|
+
|
152
|
+
return INT2NUM( stats->perf.pktSndDropTotal );
|
153
|
+
}
|
154
|
+
|
155
|
+
VALUE rbsrt_stat_get_pktrcvdroptotal(VALUE self)
|
156
|
+
{
|
157
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
158
|
+
|
159
|
+
return INT2NUM( stats->perf.pktRcvDropTotal );
|
160
|
+
}
|
161
|
+
|
162
|
+
VALUE rbsrt_stat_get_pktrcvundecrypttotal(VALUE self)
|
163
|
+
{
|
164
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
165
|
+
|
166
|
+
return INT2NUM( stats->perf.pktRcvUndecryptTotal );
|
167
|
+
}
|
168
|
+
|
169
|
+
VALUE rbsrt_stat_get_pktsndfilterextratotal(VALUE self)
|
170
|
+
{
|
171
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
172
|
+
|
173
|
+
return INT2NUM( stats->perf.pktSndFilterExtraTotal );
|
174
|
+
}
|
175
|
+
|
176
|
+
VALUE rbsrt_stat_get_pktrcvfilterextratotal(VALUE self)
|
177
|
+
{
|
178
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
179
|
+
|
180
|
+
return INT2NUM( stats->perf.pktRcvFilterExtraTotal );
|
181
|
+
}
|
182
|
+
|
183
|
+
VALUE rbsrt_stat_get_pktrcvfiltersupplytotal(VALUE self)
|
184
|
+
{
|
185
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
186
|
+
|
187
|
+
return INT2NUM( stats->perf.pktRcvFilterSupplyTotal );
|
188
|
+
}
|
189
|
+
|
190
|
+
VALUE rbsrt_stat_get_pktrcvfilterlosstotal(VALUE self)
|
191
|
+
{
|
192
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
193
|
+
|
194
|
+
return INT2NUM( stats->perf.pktRcvFilterLossTotal );
|
195
|
+
}
|
196
|
+
|
197
|
+
VALUE rbsrt_stat_get_bytesenttotal(VALUE self)
|
198
|
+
{
|
199
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
200
|
+
|
201
|
+
return UINT2NUM( stats->perf.byteSentTotal );
|
202
|
+
}
|
203
|
+
|
204
|
+
VALUE rbsrt_stat_get_byterecvtotal(VALUE self)
|
205
|
+
{
|
206
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
207
|
+
|
208
|
+
return UINT2NUM( stats->perf.byteRecvTotal );
|
209
|
+
}
|
210
|
+
|
211
|
+
VALUE rbsrt_stat_get_bytercvlosstotal(VALUE self)
|
212
|
+
{
|
213
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
214
|
+
|
215
|
+
return UINT2NUM( stats->perf.byteRcvLossTotal );
|
216
|
+
}
|
217
|
+
|
218
|
+
VALUE rbsrt_stat_get_byteretranstotal(VALUE self)
|
219
|
+
{
|
220
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
221
|
+
|
222
|
+
return UINT2NUM( stats->perf.byteRetransTotal );
|
223
|
+
}
|
224
|
+
|
225
|
+
VALUE rbsrt_stat_get_bytesnddroptotal(VALUE self)
|
226
|
+
{
|
227
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
228
|
+
|
229
|
+
return UINT2NUM( stats->perf.byteSndDropTotal );
|
230
|
+
}
|
231
|
+
|
232
|
+
VALUE rbsrt_stat_get_bytercvdroptotal(VALUE self)
|
233
|
+
{
|
234
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
235
|
+
|
236
|
+
return UINT2NUM( stats->perf.byteRcvDropTotal );
|
237
|
+
}
|
238
|
+
|
239
|
+
VALUE rbsrt_stat_get_bytercvundecrypttotal(VALUE self)
|
240
|
+
{
|
241
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
242
|
+
|
243
|
+
return UINT2NUM( stats->perf.byteRcvUndecryptTotal );
|
244
|
+
}
|
245
|
+
|
246
|
+
VALUE rbsrt_stat_get_pktsent(VALUE self)
|
247
|
+
{
|
248
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
249
|
+
|
250
|
+
return INT2NUM( stats->perf.pktSent );
|
251
|
+
}
|
252
|
+
|
253
|
+
VALUE rbsrt_stat_get_pktrecv(VALUE self)
|
254
|
+
{
|
255
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
256
|
+
|
257
|
+
return INT2NUM( stats->perf.pktRecv );
|
258
|
+
}
|
259
|
+
|
260
|
+
VALUE rbsrt_stat_get_pktsndloss(VALUE self)
|
261
|
+
{
|
262
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
263
|
+
|
264
|
+
return INT2NUM( stats->perf.pktSndLoss );
|
265
|
+
}
|
266
|
+
|
267
|
+
VALUE rbsrt_stat_get_pktrcvloss(VALUE self)
|
268
|
+
{
|
269
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
270
|
+
|
271
|
+
return INT2NUM( stats->perf.pktRcvLoss );
|
272
|
+
}
|
273
|
+
|
274
|
+
VALUE rbsrt_stat_get_pktretrans(VALUE self)
|
275
|
+
{
|
276
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
277
|
+
|
278
|
+
return INT2NUM( stats->perf.pktRetrans );
|
279
|
+
}
|
280
|
+
|
281
|
+
VALUE rbsrt_stat_get_pktrcvretrans(VALUE self)
|
282
|
+
{
|
283
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
284
|
+
|
285
|
+
return INT2NUM( stats->perf.pktRcvRetrans );
|
286
|
+
}
|
287
|
+
|
288
|
+
VALUE rbsrt_stat_get_pktsentack(VALUE self)
|
289
|
+
{
|
290
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
291
|
+
|
292
|
+
return INT2NUM( stats->perf.pktSentACK );
|
293
|
+
}
|
294
|
+
|
295
|
+
VALUE rbsrt_stat_get_pktrecvack(VALUE self)
|
296
|
+
{
|
297
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
298
|
+
|
299
|
+
return INT2NUM( stats->perf.pktRecvACK );
|
300
|
+
}
|
301
|
+
|
302
|
+
VALUE rbsrt_stat_get_pktsentnak(VALUE self)
|
303
|
+
{
|
304
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
305
|
+
|
306
|
+
return INT2NUM( stats->perf.pktSentNAK );
|
307
|
+
}
|
308
|
+
|
309
|
+
VALUE rbsrt_stat_get_pktrecvnak(VALUE self)
|
310
|
+
{
|
311
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
312
|
+
|
313
|
+
return INT2NUM( stats->perf.pktRecvNAK );
|
314
|
+
}
|
315
|
+
|
316
|
+
VALUE rbsrt_stat_get_pktsndfilterextra(VALUE self)
|
317
|
+
{
|
318
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
319
|
+
|
320
|
+
return INT2NUM( stats->perf.pktSndFilterExtra );
|
321
|
+
}
|
322
|
+
|
323
|
+
VALUE rbsrt_stat_get_pktrcvfilterextra(VALUE self)
|
324
|
+
{
|
325
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
326
|
+
|
327
|
+
return INT2NUM( stats->perf.pktRcvFilterExtra );
|
328
|
+
}
|
329
|
+
|
330
|
+
VALUE rbsrt_stat_get_pktrcvfiltersupply(VALUE self)
|
331
|
+
{
|
332
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
333
|
+
|
334
|
+
return INT2NUM( stats->perf.pktRcvFilterSupply );
|
335
|
+
}
|
336
|
+
|
337
|
+
VALUE rbsrt_stat_get_pktrcvfilterloss(VALUE self)
|
338
|
+
{
|
339
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
340
|
+
|
341
|
+
return INT2NUM( stats->perf.pktRcvFilterLoss );
|
342
|
+
}
|
343
|
+
|
344
|
+
VALUE rbsrt_stat_get_mbpssendrate(VALUE self)
|
345
|
+
{
|
346
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
347
|
+
|
348
|
+
return LL2NUM( stats->perf.mbpsSendRate );
|
349
|
+
}
|
350
|
+
|
351
|
+
VALUE rbsrt_stat_get_mbpsrecvrate(VALUE self)
|
352
|
+
{
|
353
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
354
|
+
|
355
|
+
return LL2NUM( stats->perf.mbpsRecvRate );
|
356
|
+
}
|
357
|
+
|
358
|
+
VALUE rbsrt_stat_get_ussndduration(VALUE self)
|
359
|
+
{
|
360
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
361
|
+
|
362
|
+
return INT2NUM( stats->perf.usSndDuration );
|
363
|
+
}
|
364
|
+
|
365
|
+
VALUE rbsrt_stat_get_pktreorderdistance(VALUE self)
|
366
|
+
{
|
367
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
368
|
+
|
369
|
+
return INT2NUM( stats->perf.pktReorderDistance );
|
370
|
+
}
|
371
|
+
|
372
|
+
VALUE rbsrt_stat_get_pktrcvavgbelatedtime(VALUE self)
|
373
|
+
{
|
374
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
375
|
+
|
376
|
+
return LL2NUM( stats->perf.pktRcvAvgBelatedTime );
|
377
|
+
}
|
378
|
+
|
379
|
+
VALUE rbsrt_stat_get_pktrcvbelated(VALUE self)
|
380
|
+
{
|
381
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
382
|
+
|
383
|
+
return INT2NUM( stats->perf.pktRcvBelated );
|
384
|
+
}
|
385
|
+
|
386
|
+
VALUE rbsrt_stat_get_pktsnddrop(VALUE self)
|
387
|
+
{
|
388
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
389
|
+
|
390
|
+
return INT2NUM( stats->perf.pktSndDrop );
|
391
|
+
}
|
392
|
+
|
393
|
+
VALUE rbsrt_stat_get_pktrcvdrop(VALUE self)
|
394
|
+
{
|
395
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
396
|
+
|
397
|
+
return INT2NUM( stats->perf.pktRcvDrop );
|
398
|
+
}
|
399
|
+
|
400
|
+
VALUE rbsrt_stat_get_pktrcvundecrypt(VALUE self)
|
401
|
+
{
|
402
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
403
|
+
|
404
|
+
return INT2NUM( stats->perf.pktRcvUndecrypt );
|
405
|
+
}
|
406
|
+
|
407
|
+
VALUE rbsrt_stat_get_bytesent(VALUE self)
|
408
|
+
{
|
409
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
410
|
+
|
411
|
+
return UINT2NUM( stats->perf.byteSent );
|
412
|
+
}
|
413
|
+
|
414
|
+
VALUE rbsrt_stat_get_byterecv(VALUE self)
|
415
|
+
{
|
416
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
417
|
+
|
418
|
+
return UINT2NUM( stats->perf.byteRecv );
|
419
|
+
}
|
420
|
+
|
421
|
+
VALUE rbsrt_stat_get_bytercvloss(VALUE self)
|
422
|
+
{
|
423
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
424
|
+
|
425
|
+
return UINT2NUM( stats->perf.byteRcvLoss );
|
426
|
+
}
|
427
|
+
|
428
|
+
VALUE rbsrt_stat_get_byteretrans(VALUE self)
|
429
|
+
{
|
430
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
431
|
+
|
432
|
+
return UINT2NUM( stats->perf.byteRetrans );
|
433
|
+
}
|
434
|
+
|
435
|
+
VALUE rbsrt_stat_get_bytesnddrop(VALUE self)
|
436
|
+
{
|
437
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
438
|
+
|
439
|
+
return UINT2NUM( stats->perf.byteSndDrop );
|
440
|
+
}
|
441
|
+
|
442
|
+
VALUE rbsrt_stat_get_bytercvdrop(VALUE self)
|
443
|
+
{
|
444
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
445
|
+
|
446
|
+
return UINT2NUM( stats->perf.byteRcvDrop );
|
447
|
+
}
|
448
|
+
|
449
|
+
VALUE rbsrt_stat_get_bytercvundecrypt(VALUE self)
|
450
|
+
{
|
451
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
452
|
+
|
453
|
+
return UINT2NUM( stats->perf.byteRcvUndecrypt );
|
454
|
+
}
|
455
|
+
|
456
|
+
VALUE rbsrt_stat_get_uspktsndperiod(VALUE self)
|
457
|
+
{
|
458
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
459
|
+
|
460
|
+
return LL2NUM( stats->perf.usPktSndPeriod );
|
461
|
+
}
|
462
|
+
|
463
|
+
VALUE rbsrt_stat_get_pktflowwindow(VALUE self)
|
464
|
+
{
|
465
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
466
|
+
|
467
|
+
return INT2NUM( stats->perf.pktFlowWindow );
|
468
|
+
}
|
469
|
+
|
470
|
+
VALUE rbsrt_stat_get_pktcongestionwindow(VALUE self)
|
471
|
+
{
|
472
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
473
|
+
|
474
|
+
return INT2NUM( stats->perf.pktCongestionWindow );
|
475
|
+
}
|
476
|
+
|
477
|
+
VALUE rbsrt_stat_get_pktflightsize(VALUE self)
|
478
|
+
{
|
479
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
480
|
+
|
481
|
+
return INT2NUM( stats->perf.pktFlightSize );
|
482
|
+
}
|
483
|
+
|
484
|
+
VALUE rbsrt_stat_get_msrtt(VALUE self)
|
485
|
+
{
|
486
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
487
|
+
|
488
|
+
return LL2NUM( stats->perf.msRTT );
|
489
|
+
}
|
490
|
+
|
491
|
+
VALUE rbsrt_stat_get_mbpsbandwidth(VALUE self)
|
492
|
+
{
|
493
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
494
|
+
|
495
|
+
return LL2NUM( stats->perf.mbpsBandwidth );
|
496
|
+
}
|
497
|
+
|
498
|
+
VALUE rbsrt_stat_get_byteavailsndbuf(VALUE self)
|
499
|
+
{
|
500
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
501
|
+
|
502
|
+
return INT2NUM( stats->perf.byteAvailSndBuf );
|
503
|
+
}
|
504
|
+
|
505
|
+
VALUE rbsrt_stat_get_byteavailrcvbuf(VALUE self)
|
506
|
+
{
|
507
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
508
|
+
|
509
|
+
return INT2NUM( stats->perf.byteAvailRcvBuf );
|
510
|
+
}
|
511
|
+
|
512
|
+
VALUE rbsrt_stat_get_mbpsmaxbw(VALUE self)
|
513
|
+
{
|
514
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
515
|
+
|
516
|
+
return LL2NUM( stats->perf.mbpsMaxBW );
|
517
|
+
}
|
518
|
+
|
519
|
+
VALUE rbsrt_stat_get_bytemss(VALUE self)
|
520
|
+
{
|
521
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
522
|
+
|
523
|
+
return INT2NUM( stats->perf.byteMSS );
|
524
|
+
}
|
525
|
+
|
526
|
+
VALUE rbsrt_stat_get_pktsndbuf(VALUE self)
|
527
|
+
{
|
528
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
529
|
+
|
530
|
+
return INT2NUM( stats->perf.pktSndBuf );
|
531
|
+
}
|
532
|
+
|
533
|
+
VALUE rbsrt_stat_get_bytesndbuf(VALUE self)
|
534
|
+
{
|
535
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
536
|
+
|
537
|
+
return INT2NUM( stats->perf.byteSndBuf );
|
538
|
+
}
|
539
|
+
|
540
|
+
VALUE rbsrt_stat_get_mssndbuf(VALUE self)
|
541
|
+
{
|
542
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
543
|
+
|
544
|
+
return INT2NUM( stats->perf.msSndBuf );
|
545
|
+
}
|
546
|
+
|
547
|
+
VALUE rbsrt_stat_get_mssndtsbpddelay(VALUE self)
|
548
|
+
{
|
549
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
550
|
+
|
551
|
+
return INT2NUM( stats->perf.msSndTsbPdDelay );
|
552
|
+
}
|
553
|
+
|
554
|
+
VALUE rbsrt_stat_get_pktrcvbuf(VALUE self)
|
555
|
+
{
|
556
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
557
|
+
|
558
|
+
return INT2NUM( stats->perf.pktRcvBuf );
|
559
|
+
}
|
560
|
+
|
561
|
+
VALUE rbsrt_stat_get_bytercvbuf(VALUE self)
|
562
|
+
{
|
563
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
564
|
+
|
565
|
+
return INT2NUM( stats->perf.byteRcvBuf );
|
566
|
+
}
|
567
|
+
|
568
|
+
VALUE rbsrt_stat_get_msrcvbuf(VALUE self)
|
569
|
+
{
|
570
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
571
|
+
|
572
|
+
return INT2NUM( stats->perf.msRcvBuf );
|
573
|
+
}
|
574
|
+
|
575
|
+
VALUE rbsrt_stat_get_msrcvtsbpddelay(VALUE self)
|
576
|
+
{
|
577
|
+
RBSRT_STATS_UNWRAP(self, stats);
|
578
|
+
|
579
|
+
return INT2NUM( stats->perf.msRcvTsbPdDelay );
|
580
|
+
}
|
581
|
+
|
582
|
+
VALUE mSRTStatsKlass;
|
583
|
+
|
584
|
+
void RBSRT_stat_init(VALUE srt_module)
|
585
|
+
{
|
586
|
+
mSRTStatsKlass = rb_define_class_under(srt_module, "Stats", rb_cObject);
|
587
|
+
|
588
|
+
// Allocator
|
589
|
+
|
590
|
+
rb_define_alloc_func(mSRTStatsKlass, rbsrt_stat_allocate);
|
591
|
+
|
592
|
+
// Initializer
|
593
|
+
|
594
|
+
rb_define_method(mSRTStatsKlass, "initialize", rbsrt_stats_initialize, -1);
|
595
|
+
|
596
|
+
// time since the UDT entity is started, in milliseconds
|
597
|
+
rb_define_method(mSRTStatsKlass, "msTimeStamp", rbsrt_stat_get_mstimestamp, 0);
|
598
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_time_stamp"), rb_intern("msTimeStamp"));
|
599
|
+
rb_alias(mSRTStatsKlass, rb_intern("mstimestamp"), rb_intern("msTimeStamp"));
|
600
|
+
|
601
|
+
// total number of sent data packets, including retransmissions
|
602
|
+
rb_define_method(mSRTStatsKlass, "pktSentTotal", rbsrt_stat_get_pktsenttotal, 0);
|
603
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent_total"), rb_intern("pktSentTotal"));
|
604
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsenttotal"), rb_intern("pktSentTotal"));
|
605
|
+
|
606
|
+
// total number of received packets
|
607
|
+
rb_define_method(mSRTStatsKlass, "pktRecvTotal", rbsrt_stat_get_pktrecvtotal, 0);
|
608
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv_total"), rb_intern("pktRecvTotal"));
|
609
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecvtotal"), rb_intern("pktRecvTotal"));
|
610
|
+
|
611
|
+
// total number of lost packets (sender side)
|
612
|
+
rb_define_method(mSRTStatsKlass, "pktSndLossTotal", rbsrt_stat_get_pktsndlosstotal, 0);
|
613
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_loss_total"), rb_intern("pktSndLossTotal"));
|
614
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsndlosstotal"), rb_intern("pktSndLossTotal"));
|
615
|
+
|
616
|
+
// total number of lost packets (receiver side)
|
617
|
+
rb_define_method(mSRTStatsKlass, "pktRcvLossTotal", rbsrt_stat_get_pktrcvlosstotal, 0);
|
618
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_loss_total"), rb_intern("pktRcvLossTotal"));
|
619
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvlosstotal"), rb_intern("pktRcvLossTotal"));
|
620
|
+
|
621
|
+
// total number of retransmitted packets
|
622
|
+
rb_define_method(mSRTStatsKlass, "pktRetransTotal", rbsrt_stat_get_pktretranstotal, 0);
|
623
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_retrans_total"), rb_intern("pktRetransTotal"));
|
624
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktretranstotal"), rb_intern("pktRetransTotal"));
|
625
|
+
|
626
|
+
// total number of sent ACK packets
|
627
|
+
rb_define_method(mSRTStatsKlass, "pktSentACKTotal", rbsrt_stat_get_pktsentacktotal, 0);
|
628
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent_ack_total"), rb_intern("pktSentACKTotal"));
|
629
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsentacktotal"), rb_intern("pktSentACKTotal"));
|
630
|
+
|
631
|
+
// total number of received ACK packets
|
632
|
+
rb_define_method(mSRTStatsKlass, "pktRecvACKTotal", rbsrt_stat_get_pktrecvacktotal, 0);
|
633
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv_ack_total"), rb_intern("pktRecvACKTotal"));
|
634
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecvacktotal"), rb_intern("pktRecvACKTotal"));
|
635
|
+
|
636
|
+
// total number of sent NAK packets
|
637
|
+
rb_define_method(mSRTStatsKlass, "pktSentNAKTotal", rbsrt_stat_get_pktsentnaktotal, 0);
|
638
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent_nak_total"), rb_intern("pktSentNAKTotal"));
|
639
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsentnaktotal"), rb_intern("pktSentNAKTotal"));
|
640
|
+
|
641
|
+
// total number of received NAK packets
|
642
|
+
rb_define_method(mSRTStatsKlass, "pktRecvNAKTotal", rbsrt_stat_get_pktrecvnaktotal, 0);
|
643
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv_nak_total"), rb_intern("pktRecvNAKTotal"));
|
644
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecvnaktotal"), rb_intern("pktRecvNAKTotal"));
|
645
|
+
|
646
|
+
// total time duration when UDT is sending data (idle time exclusive)
|
647
|
+
rb_define_method(mSRTStatsKlass, "usSndDurationTotal", rbsrt_stat_get_ussnddurationtotal, 0);
|
648
|
+
rb_alias(mSRTStatsKlass, rb_intern("us_snd_duration_total"), rb_intern("usSndDurationTotal"));
|
649
|
+
rb_alias(mSRTStatsKlass, rb_intern("ussnddurationtotal"), rb_intern("usSndDurationTotal"));
|
650
|
+
|
651
|
+
// number of too-late-to-send dropped packets
|
652
|
+
rb_define_method(mSRTStatsKlass, "pktSndDropTotal", rbsrt_stat_get_pktsnddroptotal, 0);
|
653
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_drop_total"), rb_intern("pktSndDropTotal"));
|
654
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsnddroptotal"), rb_intern("pktSndDropTotal"));
|
655
|
+
|
656
|
+
// number of too-late-to play missing packets
|
657
|
+
rb_define_method(mSRTStatsKlass, "pktRcvDropTotal", rbsrt_stat_get_pktrcvdroptotal, 0);
|
658
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_drop_total"), rb_intern("pktRcvDropTotal"));
|
659
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvdroptotal"), rb_intern("pktRcvDropTotal"));
|
660
|
+
|
661
|
+
// number of undecrypted packets
|
662
|
+
rb_define_method(mSRTStatsKlass, "pktRcvUndecryptTotal", rbsrt_stat_get_pktrcvundecrypttotal, 0);
|
663
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_undecrypt_total"), rb_intern("pktRcvUndecryptTotal"));
|
664
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvundecrypttotal"), rb_intern("pktRcvUndecryptTotal"));
|
665
|
+
|
666
|
+
// number of control packets supplied by packet filter
|
667
|
+
rb_define_method(mSRTStatsKlass, "pktSndFilterExtraTotal", rbsrt_stat_get_pktsndfilterextratotal, 0);
|
668
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_filter_extra_total"), rb_intern("pktSndFilterExtraTotal"));
|
669
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsndfilterextratotal"), rb_intern("pktSndFilterExtraTotal"));
|
670
|
+
|
671
|
+
// number of control packets received and not supplied back
|
672
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterExtraTotal", rbsrt_stat_get_pktrcvfilterextratotal, 0);
|
673
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_extra_total"), rb_intern("pktRcvFilterExtraTotal"));
|
674
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfilterextratotal"), rb_intern("pktRcvFilterExtraTotal"));
|
675
|
+
|
676
|
+
// number of packets that the filter supplied extra (e.g. FEC rebuilt)
|
677
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterSupplyTotal", rbsrt_stat_get_pktrcvfiltersupplytotal, 0);
|
678
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_supply_total"), rb_intern("pktRcvFilterSupplyTotal"));
|
679
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfiltersupplytotal"), rb_intern("pktRcvFilterSupplyTotal"));
|
680
|
+
|
681
|
+
// number of packet loss not coverable by filter
|
682
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterLossTotal", rbsrt_stat_get_pktrcvfilterlosstotal, 0);
|
683
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_loss_total"), rb_intern("pktRcvFilterLossTotal"));
|
684
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfilterlosstotal"), rb_intern("pktRcvFilterLossTotal"));
|
685
|
+
|
686
|
+
// total number of sent data bytes, including retransmissions
|
687
|
+
rb_define_method(mSRTStatsKlass, "byteSentTotal", rbsrt_stat_get_bytesenttotal, 0);
|
688
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_sent_total"), rb_intern("byteSentTotal"));
|
689
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytesenttotal"), rb_intern("byteSentTotal"));
|
690
|
+
|
691
|
+
// total number of received bytes
|
692
|
+
rb_define_method(mSRTStatsKlass, "byteRecvTotal", rbsrt_stat_get_byterecvtotal, 0);
|
693
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_recv_total"), rb_intern("byteRecvTotal"));
|
694
|
+
rb_alias(mSRTStatsKlass, rb_intern("byterecvtotal"), rb_intern("byteRecvTotal"));
|
695
|
+
|
696
|
+
// total number of lost bytes SRT_ENABLE_LOSTBYTESCOUNT
|
697
|
+
rb_define_method(mSRTStatsKlass, "byteRcvLossTotal", rbsrt_stat_get_bytercvlosstotal, 0);
|
698
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_loss_total"), rb_intern("byteRcvLossTotal"));
|
699
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvlosstotal"), rb_intern("byteRcvLossTotal"));
|
700
|
+
|
701
|
+
// total number of retransmitted bytes
|
702
|
+
rb_define_method(mSRTStatsKlass, "byteRetransTotal", rbsrt_stat_get_byteretranstotal, 0);
|
703
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_retrans_total"), rb_intern("byteRetransTotal"));
|
704
|
+
rb_alias(mSRTStatsKlass, rb_intern("byteretranstotal"), rb_intern("byteRetransTotal"));
|
705
|
+
|
706
|
+
// number of too-late-to-send dropped bytes
|
707
|
+
rb_define_method(mSRTStatsKlass, "byteSndDropTotal", rbsrt_stat_get_bytesnddroptotal, 0);
|
708
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_snd_drop_total"), rb_intern("byteSndDropTotal"));
|
709
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytesnddroptotal"), rb_intern("byteSndDropTotal"));
|
710
|
+
|
711
|
+
// number of too-late-to play missing bytes (estimate based on average packet size)
|
712
|
+
rb_define_method(mSRTStatsKlass, "byteRcvDropTotal", rbsrt_stat_get_bytercvdroptotal, 0);
|
713
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_drop_total"), rb_intern("byteRcvDropTotal"));
|
714
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvdroptotal"), rb_intern("byteRcvDropTotal"));
|
715
|
+
|
716
|
+
// number of undecrypted bytes
|
717
|
+
rb_define_method(mSRTStatsKlass, "byteRcvUndecryptTotal", rbsrt_stat_get_bytercvundecrypttotal, 0);
|
718
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_undecrypt_total"), rb_intern("byteRcvUndecryptTotal"));
|
719
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvundecrypttotal"), rb_intern("byteRcvUndecryptTotal"));
|
720
|
+
|
721
|
+
// number of sent data packets, including retransmissions
|
722
|
+
rb_define_method(mSRTStatsKlass, "pktSent", rbsrt_stat_get_pktsent, 0);
|
723
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent"), rb_intern("pktSent"));
|
724
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsent"), rb_intern("pktSent"));
|
725
|
+
|
726
|
+
// number of received packets
|
727
|
+
rb_define_method(mSRTStatsKlass, "pktRecv", rbsrt_stat_get_pktrecv, 0);
|
728
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv"), rb_intern("pktRecv"));
|
729
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecv"), rb_intern("pktRecv"));
|
730
|
+
|
731
|
+
// number of lost packets (sender side)
|
732
|
+
rb_define_method(mSRTStatsKlass, "pktSndLoss", rbsrt_stat_get_pktsndloss, 0);
|
733
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_loss"), rb_intern("pktSndLoss"));
|
734
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsndloss"), rb_intern("pktSndLoss"));
|
735
|
+
|
736
|
+
// number of lost packets (receiver side)
|
737
|
+
rb_define_method(mSRTStatsKlass, "pktRcvLoss", rbsrt_stat_get_pktrcvloss, 0);
|
738
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_loss"), rb_intern("pktRcvLoss"));
|
739
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvloss"), rb_intern("pktRcvLoss"));
|
740
|
+
|
741
|
+
// number of retransmitted packets
|
742
|
+
rb_define_method(mSRTStatsKlass, "pktRetrans", rbsrt_stat_get_pktretrans, 0);
|
743
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_retrans"), rb_intern("pktRetrans"));
|
744
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktretrans"), rb_intern("pktRetrans"));
|
745
|
+
|
746
|
+
// number of retransmitted packets received
|
747
|
+
rb_define_method(mSRTStatsKlass, "pktRcvRetrans", rbsrt_stat_get_pktrcvretrans, 0);
|
748
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_retrans"), rb_intern("pktRcvRetrans"));
|
749
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvretrans"), rb_intern("pktRcvRetrans"));
|
750
|
+
|
751
|
+
// number of sent ACK packets
|
752
|
+
rb_define_method(mSRTStatsKlass, "pktSentACK", rbsrt_stat_get_pktsentack, 0);
|
753
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent_ack"), rb_intern("pktSentACK"));
|
754
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsentack"), rb_intern("pktSentACK"));
|
755
|
+
|
756
|
+
// number of received ACK packets
|
757
|
+
rb_define_method(mSRTStatsKlass, "pktRecvACK", rbsrt_stat_get_pktrecvack, 0);
|
758
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv_ack"), rb_intern("pktRecvACK"));
|
759
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecvack"), rb_intern("pktRecvACK"));
|
760
|
+
|
761
|
+
// number of sent NAK packets
|
762
|
+
rb_define_method(mSRTStatsKlass, "pktSentNAK", rbsrt_stat_get_pktsentnak, 0);
|
763
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_sent_nak"), rb_intern("pktSentNAK"));
|
764
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsentnak"), rb_intern("pktSentNAK"));
|
765
|
+
|
766
|
+
// number of received NAK packets
|
767
|
+
rb_define_method(mSRTStatsKlass, "pktRecvNAK", rbsrt_stat_get_pktrecvnak, 0);
|
768
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_recv_nak"), rb_intern("pktRecvNAK"));
|
769
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrecvnak"), rb_intern("pktRecvNAK"));
|
770
|
+
|
771
|
+
// number of control packets supplied by packet filter
|
772
|
+
rb_define_method(mSRTStatsKlass, "pktSndFilterExtra", rbsrt_stat_get_pktsndfilterextra, 0);
|
773
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_filter_extra"), rb_intern("pktSndFilterExtra"));
|
774
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsndfilterextra"), rb_intern("pktSndFilterExtra"));
|
775
|
+
|
776
|
+
// number of control packets received and not supplied back
|
777
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterExtra", rbsrt_stat_get_pktrcvfilterextra, 0);
|
778
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_extra"), rb_intern("pktRcvFilterExtra"));
|
779
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfilterextra"), rb_intern("pktRcvFilterExtra"));
|
780
|
+
|
781
|
+
// number of packets that the filter supplied extra (e.g. FEC rebuilt)
|
782
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterSupply", rbsrt_stat_get_pktrcvfiltersupply, 0);
|
783
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_supply"), rb_intern("pktRcvFilterSupply"));
|
784
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfiltersupply"), rb_intern("pktRcvFilterSupply"));
|
785
|
+
|
786
|
+
// number of packet loss not coverable by filter
|
787
|
+
rb_define_method(mSRTStatsKlass, "pktRcvFilterLoss", rbsrt_stat_get_pktrcvfilterloss, 0);
|
788
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_filter_loss"), rb_intern("pktRcvFilterLoss"));
|
789
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvfilterloss"), rb_intern("pktRcvFilterLoss"));
|
790
|
+
|
791
|
+
// sending rate in Mb/s
|
792
|
+
rb_define_method(mSRTStatsKlass, "mbpsSendRate", rbsrt_stat_get_mbpssendrate, 0);
|
793
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbps_send_rate"), rb_intern("mbpsSendRate"));
|
794
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbpssendrate"), rb_intern("mbpsSendRate"));
|
795
|
+
|
796
|
+
// receiving rate in Mb/s
|
797
|
+
rb_define_method(mSRTStatsKlass, "mbpsRecvRate", rbsrt_stat_get_mbpsrecvrate, 0);
|
798
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbps_recv_rate"), rb_intern("mbpsRecvRate"));
|
799
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbpsrecvrate"), rb_intern("mbpsRecvRate"));
|
800
|
+
|
801
|
+
// busy sending time (i.e., idle time exclusive)
|
802
|
+
rb_define_method(mSRTStatsKlass, "usSndDuration", rbsrt_stat_get_ussndduration, 0);
|
803
|
+
rb_alias(mSRTStatsKlass, rb_intern("us_snd_duration"), rb_intern("usSndDuration"));
|
804
|
+
rb_alias(mSRTStatsKlass, rb_intern("ussndduration"), rb_intern("usSndDuration"));
|
805
|
+
|
806
|
+
// size of order discrepancy in received sequences
|
807
|
+
rb_define_method(mSRTStatsKlass, "pktReorderDistance", rbsrt_stat_get_pktreorderdistance, 0);
|
808
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_reorder_distance"), rb_intern("pktReorderDistance"));
|
809
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktreorderdistance"), rb_intern("pktReorderDistance"));
|
810
|
+
|
811
|
+
// average time of packet delay for belated packets (packets with sequence past the ACK)
|
812
|
+
rb_define_method(mSRTStatsKlass, "pktRcvAvgBelatedTime", rbsrt_stat_get_pktrcvavgbelatedtime, 0);
|
813
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_avg_belated_time"), rb_intern("pktRcvAvgBelatedTime"));
|
814
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvavgbelatedtime"), rb_intern("pktRcvAvgBelatedTime"));
|
815
|
+
|
816
|
+
// number of received AND IGNORED packets due to having come too late
|
817
|
+
rb_define_method(mSRTStatsKlass, "pktRcvBelated", rbsrt_stat_get_pktrcvbelated, 0);
|
818
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_belated"), rb_intern("pktRcvBelated"));
|
819
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvbelated"), rb_intern("pktRcvBelated"));
|
820
|
+
|
821
|
+
// number of too-late-to-send dropped packets
|
822
|
+
rb_define_method(mSRTStatsKlass, "pktSndDrop", rbsrt_stat_get_pktsnddrop, 0);
|
823
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_drop"), rb_intern("pktSndDrop"));
|
824
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsnddrop"), rb_intern("pktSndDrop"));
|
825
|
+
|
826
|
+
// number of too-late-to play missing packets
|
827
|
+
rb_define_method(mSRTStatsKlass, "pktRcvDrop", rbsrt_stat_get_pktrcvdrop, 0);
|
828
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_drop"), rb_intern("pktRcvDrop"));
|
829
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvdrop"), rb_intern("pktRcvDrop"));
|
830
|
+
|
831
|
+
// number of undecrypted packets
|
832
|
+
rb_define_method(mSRTStatsKlass, "pktRcvUndecrypt", rbsrt_stat_get_pktrcvundecrypt, 0);
|
833
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_undecrypt"), rb_intern("pktRcvUndecrypt"));
|
834
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvundecrypt"), rb_intern("pktRcvUndecrypt"));
|
835
|
+
|
836
|
+
// number of sent data bytes, including retransmissions
|
837
|
+
rb_define_method(mSRTStatsKlass, "byteSent", rbsrt_stat_get_bytesent, 0);
|
838
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_sent"), rb_intern("byteSent"));
|
839
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytesent"), rb_intern("byteSent"));
|
840
|
+
|
841
|
+
// number of received bytes
|
842
|
+
rb_define_method(mSRTStatsKlass, "byteRecv", rbsrt_stat_get_byterecv, 0);
|
843
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_recv"), rb_intern("byteRecv"));
|
844
|
+
rb_alias(mSRTStatsKlass, rb_intern("byterecv"), rb_intern("byteRecv"));
|
845
|
+
|
846
|
+
// number of retransmitted bytes SRT_ENABLE_LOSTBYTESCOUNT
|
847
|
+
rb_define_method(mSRTStatsKlass, "byteRcvLoss", rbsrt_stat_get_bytercvloss, 0);
|
848
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_loss"), rb_intern("byteRcvLoss"));
|
849
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvloss"), rb_intern("byteRcvLoss"));
|
850
|
+
|
851
|
+
// number of retransmitted bytes
|
852
|
+
rb_define_method(mSRTStatsKlass, "byteRetrans", rbsrt_stat_get_byteretrans, 0);
|
853
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_retrans"), rb_intern("byteRetrans"));
|
854
|
+
rb_alias(mSRTStatsKlass, rb_intern("byteretrans"), rb_intern("byteRetrans"));
|
855
|
+
|
856
|
+
// number of too-late-to-send dropped bytes
|
857
|
+
rb_define_method(mSRTStatsKlass, "byteSndDrop", rbsrt_stat_get_bytesnddrop, 0);
|
858
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_snd_drop"), rb_intern("byteSndDrop"));
|
859
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytesnddrop"), rb_intern("byteSndDrop"));
|
860
|
+
|
861
|
+
// number of too-late-to play missing bytes (estimate based on average packet size)
|
862
|
+
rb_define_method(mSRTStatsKlass, "byteRcvDrop", rbsrt_stat_get_bytercvdrop, 0);
|
863
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_drop"), rb_intern("byteRcvDrop"));
|
864
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvdrop"), rb_intern("byteRcvDrop"));
|
865
|
+
|
866
|
+
// number of undecrypted bytes
|
867
|
+
rb_define_method(mSRTStatsKlass, "byteRcvUndecrypt", rbsrt_stat_get_bytercvundecrypt, 0);
|
868
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_undecrypt"), rb_intern("byteRcvUndecrypt"));
|
869
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvundecrypt"), rb_intern("byteRcvUndecrypt"));
|
870
|
+
|
871
|
+
// packet sending period, in microseconds
|
872
|
+
rb_define_method(mSRTStatsKlass, "usPktSndPeriod", rbsrt_stat_get_uspktsndperiod, 0);
|
873
|
+
rb_alias(mSRTStatsKlass, rb_intern("us_pkt_snd_period"), rb_intern("usPktSndPeriod"));
|
874
|
+
rb_alias(mSRTStatsKlass, rb_intern("uspktsndperiod"), rb_intern("usPktSndPeriod"));
|
875
|
+
|
876
|
+
// flow window size, in number of packets
|
877
|
+
rb_define_method(mSRTStatsKlass, "pktFlowWindow", rbsrt_stat_get_pktflowwindow, 0);
|
878
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_flow_window"), rb_intern("pktFlowWindow"));
|
879
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktflowwindow"), rb_intern("pktFlowWindow"));
|
880
|
+
|
881
|
+
// congestion window size, in number of packets
|
882
|
+
rb_define_method(mSRTStatsKlass, "pktCongestionWindow", rbsrt_stat_get_pktcongestionwindow, 0);
|
883
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_congestion_window"), rb_intern("pktCongestionWindow"));
|
884
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktcongestionwindow"), rb_intern("pktCongestionWindow"));
|
885
|
+
|
886
|
+
// number of packets on flight
|
887
|
+
rb_define_method(mSRTStatsKlass, "pktFlightSize", rbsrt_stat_get_pktflightsize, 0);
|
888
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_flight_size"), rb_intern("pktFlightSize"));
|
889
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktflightsize"), rb_intern("pktFlightSize"));
|
890
|
+
|
891
|
+
// RTT, in milliseconds
|
892
|
+
rb_define_method(mSRTStatsKlass, "msRTT", rbsrt_stat_get_msrtt, 0);
|
893
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_rtt"), rb_intern("msRTT"));
|
894
|
+
rb_alias(mSRTStatsKlass, rb_intern("msrtt"), rb_intern("msRTT"));
|
895
|
+
|
896
|
+
// estimated bandwidth, in Mb/s
|
897
|
+
rb_define_method(mSRTStatsKlass, "mbpsBandwidth", rbsrt_stat_get_mbpsbandwidth, 0);
|
898
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbps_bandwidth"), rb_intern("mbpsBandwidth"));
|
899
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbpsbandwidth"), rb_intern("mbpsBandwidth"));
|
900
|
+
|
901
|
+
// available UDT sender buffer size
|
902
|
+
rb_define_method(mSRTStatsKlass, "byteAvailSndBuf", rbsrt_stat_get_byteavailsndbuf, 0);
|
903
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_avail_snd_buf"), rb_intern("byteAvailSndBuf"));
|
904
|
+
rb_alias(mSRTStatsKlass, rb_intern("byteavailsndbuf"), rb_intern("byteAvailSndBuf"));
|
905
|
+
|
906
|
+
// available UDT receiver buffer size
|
907
|
+
rb_define_method(mSRTStatsKlass, "byteAvailRcvBuf", rbsrt_stat_get_byteavailrcvbuf, 0);
|
908
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_avail_rcv_buf"), rb_intern("byteAvailRcvBuf"));
|
909
|
+
rb_alias(mSRTStatsKlass, rb_intern("byteavailrcvbuf"), rb_intern("byteAvailRcvBuf"));
|
910
|
+
|
911
|
+
// Transmit Bandwidth ceiling (Mbps)
|
912
|
+
rb_define_method(mSRTStatsKlass, "mbpsMaxBW", rbsrt_stat_get_mbpsmaxbw, 0);
|
913
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbps_max_bw"), rb_intern("mbpsMaxBW"));
|
914
|
+
rb_alias(mSRTStatsKlass, rb_intern("mbpsmaxbw"), rb_intern("mbpsMaxBW"));
|
915
|
+
|
916
|
+
// MTU
|
917
|
+
rb_define_method(mSRTStatsKlass, "byteMSS", rbsrt_stat_get_bytemss, 0);
|
918
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_mss"), rb_intern("byteMSS"));
|
919
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytemss"), rb_intern("byteMSS"));
|
920
|
+
|
921
|
+
// UnACKed packets in UDT sender
|
922
|
+
rb_define_method(mSRTStatsKlass, "pktSndBuf", rbsrt_stat_get_pktsndbuf, 0);
|
923
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_snd_buf"), rb_intern("pktSndBuf"));
|
924
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktsndbuf"), rb_intern("pktSndBuf"));
|
925
|
+
|
926
|
+
// UnACKed bytes in UDT sender
|
927
|
+
rb_define_method(mSRTStatsKlass, "byteSndBuf", rbsrt_stat_get_bytesndbuf, 0);
|
928
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_snd_buf"), rb_intern("byteSndBuf"));
|
929
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytesndbuf"), rb_intern("byteSndBuf"));
|
930
|
+
|
931
|
+
// UnACKed timespan (msec) of UDT sender
|
932
|
+
rb_define_method(mSRTStatsKlass, "msSndBuf", rbsrt_stat_get_mssndbuf, 0);
|
933
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_snd_buf"), rb_intern("msSndBuf"));
|
934
|
+
rb_alias(mSRTStatsKlass, rb_intern("mssndbuf"), rb_intern("msSndBuf"));
|
935
|
+
|
936
|
+
// Timestamp-based Packet Delivery Delay
|
937
|
+
rb_define_method(mSRTStatsKlass, "msSndTsbPdDelay", rbsrt_stat_get_mssndtsbpddelay, 0);
|
938
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_snd_tsb_pd_delay"), rb_intern("msSndTsbPdDelay"));
|
939
|
+
rb_alias(mSRTStatsKlass, rb_intern("mssndtsbpddelay"), rb_intern("msSndTsbPdDelay"));
|
940
|
+
|
941
|
+
// Undelivered packets in UDT receiver
|
942
|
+
rb_define_method(mSRTStatsKlass, "pktRcvBuf", rbsrt_stat_get_pktrcvbuf, 0);
|
943
|
+
rb_alias(mSRTStatsKlass, rb_intern("pkt_rcv_buf"), rb_intern("pktRcvBuf"));
|
944
|
+
rb_alias(mSRTStatsKlass, rb_intern("pktrcvbuf"), rb_intern("pktRcvBuf"));
|
945
|
+
|
946
|
+
// Undelivered bytes of UDT receiver
|
947
|
+
rb_define_method(mSRTStatsKlass, "byteRcvBuf", rbsrt_stat_get_bytercvbuf, 0);
|
948
|
+
rb_alias(mSRTStatsKlass, rb_intern("byte_rcv_buf"), rb_intern("byteRcvBuf"));
|
949
|
+
rb_alias(mSRTStatsKlass, rb_intern("bytercvbuf"), rb_intern("byteRcvBuf"));
|
950
|
+
|
951
|
+
// Undelivered timespan (msec) of UDT receiver
|
952
|
+
rb_define_method(mSRTStatsKlass, "msRcvBuf", rbsrt_stat_get_msrcvbuf, 0);
|
953
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_rcv_buf"), rb_intern("msRcvBuf"));
|
954
|
+
rb_alias(mSRTStatsKlass, rb_intern("msrcvbuf"), rb_intern("msRcvBuf"));
|
955
|
+
|
956
|
+
// Timestamp-based Packet Delivery Delay
|
957
|
+
rb_define_method(mSRTStatsKlass, "msRcvTsbPdDelay", rbsrt_stat_get_msrcvtsbpddelay, 0);
|
958
|
+
rb_alias(mSRTStatsKlass, rb_intern("ms_rcv_tsb_pd_delay"), rb_intern("msRcvTsbPdDelay"));
|
959
|
+
rb_alias(mSRTStatsKlass, rb_intern("msrcvtsbpddelay"), rb_intern("msRcvTsbPdDelay"));
|
960
|
+
}
|