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.
@@ -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
+ }