rbsrt 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+ }