s2n_quic_core/event/generated/metrics/
aggregate.rs

1// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0
3
4// DO NOT MODIFY THIS FILE
5// This file was generated with the `s2n-events` crate and any required
6// changes should be made there.
7
8use crate::event::{
9    self, api,
10    metrics::aggregate::{
11        info::{self, Str},
12        AsVariant, BoolRecorder, Info, Metric, NominalRecorder, Recorder, Registry, Units,
13    },
14};
15use alloc::{boxed::Box, vec::Vec};
16static INFO: &[Info; 169usize] = &[
17    info::Builder {
18        id: 0usize,
19        name: Str::new("application_protocol_information\0"),
20        units: Units::None,
21    }
22    .build(),
23    info::Builder {
24        id: 1usize,
25        name: Str::new("server_name_information\0"),
26        units: Units::None,
27    }
28    .build(),
29    info::Builder {
30        id: 2usize,
31        name: Str::new("key_exchange_group\0"),
32        units: Units::None,
33    }
34    .build(),
35    info::Builder {
36        id: 3usize,
37        name: Str::new("packet_skipped\0"),
38        units: Units::None,
39    }
40    .build(),
41    info::Builder {
42        id: 4usize,
43        name: Str::new("packet_sent\0"),
44        units: Units::None,
45    }
46    .build(),
47    info::Builder {
48        id: 5usize,
49        name: Str::new("packet_sent.kind\0"),
50        units: Units::None,
51    }
52    .build(),
53    info::Builder {
54        id: 6usize,
55        name: Str::new("packet_sent.bytes.total\0"),
56        units: Units::Bytes,
57    }
58    .build(),
59    info::Builder {
60        id: 7usize,
61        name: Str::new("packet_sent.bytes\0"),
62        units: Units::Bytes,
63    }
64    .build(),
65    info::Builder {
66        id: 8usize,
67        name: Str::new("packet_received\0"),
68        units: Units::None,
69    }
70    .build(),
71    info::Builder {
72        id: 9usize,
73        name: Str::new("packet_received.kind\0"),
74        units: Units::None,
75    }
76    .build(),
77    info::Builder {
78        id: 10usize,
79        name: Str::new("active_path_updated\0"),
80        units: Units::None,
81    }
82    .build(),
83    info::Builder {
84        id: 11usize,
85        name: Str::new("path_created\0"),
86        units: Units::None,
87    }
88    .build(),
89    info::Builder {
90        id: 12usize,
91        name: Str::new("frame_sent\0"),
92        units: Units::None,
93    }
94    .build(),
95    info::Builder {
96        id: 13usize,
97        name: Str::new("frame_sent.packet\0"),
98        units: Units::None,
99    }
100    .build(),
101    info::Builder {
102        id: 14usize,
103        name: Str::new("frame_sent.frame\0"),
104        units: Units::None,
105    }
106    .build(),
107    info::Builder {
108        id: 15usize,
109        name: Str::new("frame_received\0"),
110        units: Units::None,
111    }
112    .build(),
113    info::Builder {
114        id: 16usize,
115        name: Str::new("frame_received.packet\0"),
116        units: Units::None,
117    }
118    .build(),
119    info::Builder {
120        id: 17usize,
121        name: Str::new("frame_received.frame\0"),
122        units: Units::None,
123    }
124    .build(),
125    info::Builder {
126        id: 18usize,
127        name: Str::new("connection_close_frame_received\0"),
128        units: Units::None,
129    }
130    .build(),
131    info::Builder {
132        id: 19usize,
133        name: Str::new("connection_close_frame_received.packet\0"),
134        units: Units::None,
135    }
136    .build(),
137    info::Builder {
138        id: 20usize,
139        name: Str::new("packet_lost\0"),
140        units: Units::None,
141    }
142    .build(),
143    info::Builder {
144        id: 21usize,
145        name: Str::new("packet_lost.kind\0"),
146        units: Units::None,
147    }
148    .build(),
149    info::Builder {
150        id: 22usize,
151        name: Str::new("packet_lost.bytes.total\0"),
152        units: Units::Bytes,
153    }
154    .build(),
155    info::Builder {
156        id: 23usize,
157        name: Str::new("packet_lost.bytes\0"),
158        units: Units::Bytes,
159    }
160    .build(),
161    info::Builder {
162        id: 24usize,
163        name: Str::new("packet_lost.is_mtu_probe\0"),
164        units: Units::None,
165    }
166    .build(),
167    info::Builder {
168        id: 25usize,
169        name: Str::new("recovery_metrics\0"),
170        units: Units::None,
171    }
172    .build(),
173    info::Builder {
174        id: 26usize,
175        name: Str::new("recovery_metrics.min_rtt\0"),
176        units: Units::Duration,
177    }
178    .build(),
179    info::Builder {
180        id: 27usize,
181        name: Str::new("recovery_metrics.smoothed_rtt\0"),
182        units: Units::Duration,
183    }
184    .build(),
185    info::Builder {
186        id: 28usize,
187        name: Str::new("recovery_metrics.latest_rtt\0"),
188        units: Units::Duration,
189    }
190    .build(),
191    info::Builder {
192        id: 29usize,
193        name: Str::new("recovery_metrics.rtt_variance\0"),
194        units: Units::Duration,
195    }
196    .build(),
197    info::Builder {
198        id: 30usize,
199        name: Str::new("recovery_metrics.max_ack_delay\0"),
200        units: Units::Duration,
201    }
202    .build(),
203    info::Builder {
204        id: 31usize,
205        name: Str::new("recovery_metrics.pto_count\0"),
206        units: Units::None,
207    }
208    .build(),
209    info::Builder {
210        id: 32usize,
211        name: Str::new("recovery_metrics.congestion_window\0"),
212        units: Units::Duration,
213    }
214    .build(),
215    info::Builder {
216        id: 33usize,
217        name: Str::new("recovery_metrics.bytes_in_flight\0"),
218        units: Units::Duration,
219    }
220    .build(),
221    info::Builder {
222        id: 34usize,
223        name: Str::new("recovery_metrics.congestion_limited\0"),
224        units: Units::None,
225    }
226    .build(),
227    info::Builder {
228        id: 35usize,
229        name: Str::new("congestion\0"),
230        units: Units::None,
231    }
232    .build(),
233    info::Builder {
234        id: 36usize,
235        name: Str::new("congestion.source\0"),
236        units: Units::None,
237    }
238    .build(),
239    info::Builder {
240        id: 37usize,
241        name: Str::new("rx_ack_range_dropped\0"),
242        units: Units::None,
243    }
244    .build(),
245    info::Builder {
246        id: 38usize,
247        name: Str::new("ack_range_received\0"),
248        units: Units::None,
249    }
250    .build(),
251    info::Builder {
252        id: 39usize,
253        name: Str::new("ack_range_received.packet\0"),
254        units: Units::None,
255    }
256    .build(),
257    info::Builder {
258        id: 40usize,
259        name: Str::new("ack_range_sent\0"),
260        units: Units::None,
261    }
262    .build(),
263    info::Builder {
264        id: 41usize,
265        name: Str::new("ack_range_sent.packet\0"),
266        units: Units::None,
267    }
268    .build(),
269    info::Builder {
270        id: 42usize,
271        name: Str::new("packet_dropped\0"),
272        units: Units::None,
273    }
274    .build(),
275    info::Builder {
276        id: 43usize,
277        name: Str::new("packet_dropped.reason\0"),
278        units: Units::None,
279    }
280    .build(),
281    info::Builder {
282        id: 44usize,
283        name: Str::new("key_update\0"),
284        units: Units::None,
285    }
286    .build(),
287    info::Builder {
288        id: 45usize,
289        name: Str::new("key_update.key_type\0"),
290        units: Units::None,
291    }
292    .build(),
293    info::Builder {
294        id: 46usize,
295        name: Str::new("key_update.cipher_suite\0"),
296        units: Units::None,
297    }
298    .build(),
299    info::Builder {
300        id: 47usize,
301        name: Str::new("key_space_discarded\0"),
302        units: Units::None,
303    }
304    .build(),
305    info::Builder {
306        id: 48usize,
307        name: Str::new("key_space_discarded.initial.latency\0"),
308        units: Units::Duration,
309    }
310    .build(),
311    info::Builder {
312        id: 49usize,
313        name: Str::new("key_space_discarded.handshake.latency\0"),
314        units: Units::Duration,
315    }
316    .build(),
317    info::Builder {
318        id: 50usize,
319        name: Str::new("key_space_discarded.one_rtt.latency\0"),
320        units: Units::Duration,
321    }
322    .build(),
323    info::Builder {
324        id: 51usize,
325        name: Str::new("key_space_discarded.space\0"),
326        units: Units::None,
327    }
328    .build(),
329    info::Builder {
330        id: 52usize,
331        name: Str::new("connection_started\0"),
332        units: Units::None,
333    }
334    .build(),
335    info::Builder {
336        id: 53usize,
337        name: Str::new("duplicate_packet\0"),
338        units: Units::None,
339    }
340    .build(),
341    info::Builder {
342        id: 54usize,
343        name: Str::new("duplicate_packet.kind\0"),
344        units: Units::None,
345    }
346    .build(),
347    info::Builder {
348        id: 55usize,
349        name: Str::new("duplicate_packet.error\0"),
350        units: Units::None,
351    }
352    .build(),
353    info::Builder {
354        id: 56usize,
355        name: Str::new("transport_parameters_received\0"),
356        units: Units::None,
357    }
358    .build(),
359    info::Builder {
360        id: 57usize,
361        name: Str::new("transport_parameters_received.latency\0"),
362        units: Units::Duration,
363    }
364    .build(),
365    info::Builder {
366        id: 58usize,
367        name: Str::new("datagram_sent\0"),
368        units: Units::None,
369    }
370    .build(),
371    info::Builder {
372        id: 59usize,
373        name: Str::new("datagram_sent.bytes.total\0"),
374        units: Units::Bytes,
375    }
376    .build(),
377    info::Builder {
378        id: 60usize,
379        name: Str::new("datagram_sent.bytes\0"),
380        units: Units::Bytes,
381    }
382    .build(),
383    info::Builder {
384        id: 61usize,
385        name: Str::new("datagram_sent.gso_offset\0"),
386        units: Units::None,
387    }
388    .build(),
389    info::Builder {
390        id: 62usize,
391        name: Str::new("datagram_received\0"),
392        units: Units::None,
393    }
394    .build(),
395    info::Builder {
396        id: 63usize,
397        name: Str::new("datagram_received.bytes.total\0"),
398        units: Units::Bytes,
399    }
400    .build(),
401    info::Builder {
402        id: 64usize,
403        name: Str::new("datagram_received.bytes\0"),
404        units: Units::Bytes,
405    }
406    .build(),
407    info::Builder {
408        id: 65usize,
409        name: Str::new("datagram_dropped\0"),
410        units: Units::None,
411    }
412    .build(),
413    info::Builder {
414        id: 66usize,
415        name: Str::new("datagram_dropped.bytes.total\0"),
416        units: Units::Bytes,
417    }
418    .build(),
419    info::Builder {
420        id: 67usize,
421        name: Str::new("datagram_dropped.bytes\0"),
422        units: Units::Bytes,
423    }
424    .build(),
425    info::Builder {
426        id: 68usize,
427        name: Str::new("datagram_dropped.reason\0"),
428        units: Units::None,
429    }
430    .build(),
431    info::Builder {
432        id: 69usize,
433        name: Str::new("handshake_remote_address_change_observed\0"),
434        units: Units::None,
435    }
436    .build(),
437    info::Builder {
438        id: 70usize,
439        name: Str::new("connection_id_updated\0"),
440        units: Units::None,
441    }
442    .build(),
443    info::Builder {
444        id: 71usize,
445        name: Str::new("ecn_state_changed\0"),
446        units: Units::None,
447    }
448    .build(),
449    info::Builder {
450        id: 72usize,
451        name: Str::new("ecn_state_changed.state\0"),
452        units: Units::None,
453    }
454    .build(),
455    info::Builder {
456        id: 73usize,
457        name: Str::new("connection_migration_denied\0"),
458        units: Units::None,
459    }
460    .build(),
461    info::Builder {
462        id: 74usize,
463        name: Str::new("connection_migration_denied.reason\0"),
464        units: Units::None,
465    }
466    .build(),
467    info::Builder {
468        id: 75usize,
469        name: Str::new("handshake_status_updated\0"),
470        units: Units::None,
471    }
472    .build(),
473    info::Builder {
474        id: 76usize,
475        name: Str::new("handshake_status_updated.complete.latency\0"),
476        units: Units::Duration,
477    }
478    .build(),
479    info::Builder {
480        id: 77usize,
481        name: Str::new("handshake_status_updated.confirmed.latency\0"),
482        units: Units::Duration,
483    }
484    .build(),
485    info::Builder {
486        id: 78usize,
487        name: Str::new("handshake_status_updated.handshake_done_acked.latency\0"),
488        units: Units::Duration,
489    }
490    .build(),
491    info::Builder {
492        id: 79usize,
493        name: Str::new("handshake_status_updated.status\0"),
494        units: Units::None,
495    }
496    .build(),
497    info::Builder {
498        id: 80usize,
499        name: Str::new("tls_exporter_ready\0"),
500        units: Units::None,
501    }
502    .build(),
503    info::Builder {
504        id: 81usize,
505        name: Str::new("tls_handshake_failed\0"),
506        units: Units::None,
507    }
508    .build(),
509    info::Builder {
510        id: 82usize,
511        name: Str::new("path_challenge_updated\0"),
512        units: Units::None,
513    }
514    .build(),
515    info::Builder {
516        id: 83usize,
517        name: Str::new("path_challenge_updated.status\0"),
518        units: Units::None,
519    }
520    .build(),
521    info::Builder {
522        id: 84usize,
523        name: Str::new("tls_client_hello\0"),
524        units: Units::None,
525    }
526    .build(),
527    info::Builder {
528        id: 85usize,
529        name: Str::new("tls_client_hello.latency\0"),
530        units: Units::Duration,
531    }
532    .build(),
533    info::Builder {
534        id: 86usize,
535        name: Str::new("tls_server_hello\0"),
536        units: Units::None,
537    }
538    .build(),
539    info::Builder {
540        id: 87usize,
541        name: Str::new("tls_server_hello.latency\0"),
542        units: Units::Duration,
543    }
544    .build(),
545    info::Builder {
546        id: 88usize,
547        name: Str::new("rx_stream_progress\0"),
548        units: Units::None,
549    }
550    .build(),
551    info::Builder {
552        id: 89usize,
553        name: Str::new("rx_stream_progress.bytes.total\0"),
554        units: Units::Bytes,
555    }
556    .build(),
557    info::Builder {
558        id: 90usize,
559        name: Str::new("rx_stream_progress.bytes\0"),
560        units: Units::Bytes,
561    }
562    .build(),
563    info::Builder {
564        id: 91usize,
565        name: Str::new("tx_stream_progress\0"),
566        units: Units::None,
567    }
568    .build(),
569    info::Builder {
570        id: 92usize,
571        name: Str::new("tx_stream_progress.bytes.total\0"),
572        units: Units::Bytes,
573    }
574    .build(),
575    info::Builder {
576        id: 93usize,
577        name: Str::new("tx_stream_progress.bytes\0"),
578        units: Units::Bytes,
579    }
580    .build(),
581    info::Builder {
582        id: 94usize,
583        name: Str::new("keep_alive_timer_expired\0"),
584        units: Units::None,
585    }
586    .build(),
587    info::Builder {
588        id: 95usize,
589        name: Str::new("mtu_updated\0"),
590        units: Units::None,
591    }
592    .build(),
593    info::Builder {
594        id: 96usize,
595        name: Str::new("mtu_updated.mtu\0"),
596        units: Units::Bytes,
597    }
598    .build(),
599    info::Builder {
600        id: 97usize,
601        name: Str::new("mtu_updated.cause\0"),
602        units: Units::None,
603    }
604    .build(),
605    info::Builder {
606        id: 98usize,
607        name: Str::new("mtu_updated.search_complete\0"),
608        units: Units::None,
609    }
610    .build(),
611    info::Builder {
612        id: 99usize,
613        name: Str::new("mtu_probing_complete_received\0"),
614        units: Units::None,
615    }
616    .build(),
617    info::Builder {
618        id: 100usize,
619        name: Str::new("mtu_probing_complete_received.packet\0"),
620        units: Units::None,
621    }
622    .build(),
623    info::Builder {
624        id: 101usize,
625        name: Str::new("mtu_probing_complete_received.mtu\0"),
626        units: Units::Bytes,
627    }
628    .build(),
629    info::Builder {
630        id: 102usize,
631        name: Str::new("slow_start_exited\0"),
632        units: Units::None,
633    }
634    .build(),
635    info::Builder {
636        id: 103usize,
637        name: Str::new("slow_start_exited.cause\0"),
638        units: Units::None,
639    }
640    .build(),
641    info::Builder {
642        id: 104usize,
643        name: Str::new("slow_start_exited.latency\0"),
644        units: Units::Duration,
645    }
646    .build(),
647    info::Builder {
648        id: 105usize,
649        name: Str::new("slow_start_exited.congestion_window\0"),
650        units: Units::Bytes,
651    }
652    .build(),
653    info::Builder {
654        id: 106usize,
655        name: Str::new("delivery_rate_sampled\0"),
656        units: Units::None,
657    }
658    .build(),
659    info::Builder {
660        id: 107usize,
661        name: Str::new("pacing_rate_updated\0"),
662        units: Units::None,
663    }
664    .build(),
665    info::Builder {
666        id: 108usize,
667        name: Str::new("pacing_rate_updated.bytes_per_second\0"),
668        units: Units::Bytes,
669    }
670    .build(),
671    info::Builder {
672        id: 109usize,
673        name: Str::new("pacing_rate_updated.burst_size\0"),
674        units: Units::Bytes,
675    }
676    .build(),
677    info::Builder {
678        id: 110usize,
679        name: Str::new("pacing_rate_updated.pacing_gain\0"),
680        units: Units::None,
681    }
682    .build(),
683    info::Builder {
684        id: 111usize,
685        name: Str::new("bbr_state_changed\0"),
686        units: Units::None,
687    }
688    .build(),
689    info::Builder {
690        id: 112usize,
691        name: Str::new("bbr_state_changed.state\0"),
692        units: Units::None,
693    }
694    .build(),
695    info::Builder {
696        id: 113usize,
697        name: Str::new("dc_state_changed\0"),
698        units: Units::None,
699    }
700    .build(),
701    info::Builder {
702        id: 114usize,
703        name: Str::new("dc_state_changed.version_negotiated.latency\0"),
704        units: Units::Duration,
705    }
706    .build(),
707    info::Builder {
708        id: 115usize,
709        name: Str::new("dc_state_changed.no_version_negotiated.latency\0"),
710        units: Units::Duration,
711    }
712    .build(),
713    info::Builder {
714        id: 116usize,
715        name: Str::new("dc_state_changed.path_secrets.latency\0"),
716        units: Units::Duration,
717    }
718    .build(),
719    info::Builder {
720        id: 117usize,
721        name: Str::new("dc_state_changed.complete.latency\0"),
722        units: Units::Duration,
723    }
724    .build(),
725    info::Builder {
726        id: 118usize,
727        name: Str::new("dc_state_changed.state\0"),
728        units: Units::None,
729    }
730    .build(),
731    info::Builder {
732        id: 119usize,
733        name: Str::new("dc_path_created\0"),
734        units: Units::None,
735    }
736    .build(),
737    info::Builder {
738        id: 120usize,
739        name: Str::new("connection_closed\0"),
740        units: Units::None,
741    }
742    .build(),
743    info::Builder {
744        id: 121usize,
745        name: Str::new("connection_closed.latency\0"),
746        units: Units::Duration,
747    }
748    .build(),
749    info::Builder {
750        id: 122usize,
751        name: Str::new("connection_closed.error\0"),
752        units: Units::None,
753    }
754    .build(),
755    info::Builder {
756        id: 123usize,
757        name: Str::new("version_information\0"),
758        units: Units::None,
759    }
760    .build(),
761    info::Builder {
762        id: 124usize,
763        name: Str::new("endpoint_packet_sent\0"),
764        units: Units::None,
765    }
766    .build(),
767    info::Builder {
768        id: 125usize,
769        name: Str::new("endpoint_packet_received\0"),
770        units: Units::None,
771    }
772    .build(),
773    info::Builder {
774        id: 126usize,
775        name: Str::new("endpoint_datagram_sent\0"),
776        units: Units::None,
777    }
778    .build(),
779    info::Builder {
780        id: 127usize,
781        name: Str::new("endpoint_datagram_sent.bytes\0"),
782        units: Units::Bytes,
783    }
784    .build(),
785    info::Builder {
786        id: 128usize,
787        name: Str::new("endpoint_datagram_sent.bytes.total\0"),
788        units: Units::Bytes,
789    }
790    .build(),
791    info::Builder {
792        id: 129usize,
793        name: Str::new("endpoint_datagram_sent.gso_offset\0"),
794        units: Units::None,
795    }
796    .build(),
797    info::Builder {
798        id: 130usize,
799        name: Str::new("endpoint_datagram_received\0"),
800        units: Units::None,
801    }
802    .build(),
803    info::Builder {
804        id: 131usize,
805        name: Str::new("endpoint_datagram_received.bytes\0"),
806        units: Units::Bytes,
807    }
808    .build(),
809    info::Builder {
810        id: 132usize,
811        name: Str::new("endpoint_datagram_received.bytes.total\0"),
812        units: Units::Bytes,
813    }
814    .build(),
815    info::Builder {
816        id: 133usize,
817        name: Str::new("endpoint_datagram_dropped\0"),
818        units: Units::None,
819    }
820    .build(),
821    info::Builder {
822        id: 134usize,
823        name: Str::new("endpoint_datagram_dropped.bytes\0"),
824        units: Units::Bytes,
825    }
826    .build(),
827    info::Builder {
828        id: 135usize,
829        name: Str::new("endpoint_datagram_dropped.bytes.total\0"),
830        units: Units::Bytes,
831    }
832    .build(),
833    info::Builder {
834        id: 136usize,
835        name: Str::new("endpoint_datagram_dropped.reason\0"),
836        units: Units::None,
837    }
838    .build(),
839    info::Builder {
840        id: 137usize,
841        name: Str::new("endpoint_connection_attempt_failed\0"),
842        units: Units::None,
843    }
844    .build(),
845    info::Builder {
846        id: 138usize,
847        name: Str::new("endpoint_connection_attempt_failed.error\0"),
848        units: Units::None,
849    }
850    .build(),
851    info::Builder {
852        id: 139usize,
853        name: Str::new("endpoint_connection_attempt_deduplicated\0"),
854        units: Units::None,
855    }
856    .build(),
857    info::Builder {
858        id: 140usize,
859        name: Str::new("platform_tx\0"),
860        units: Units::None,
861    }
862    .build(),
863    info::Builder {
864        id: 141usize,
865        name: Str::new("platform_tx.packets.total\0"),
866        units: Units::None,
867    }
868    .build(),
869    info::Builder {
870        id: 142usize,
871        name: Str::new("platform_tx.packets\0"),
872        units: Units::None,
873    }
874    .build(),
875    info::Builder {
876        id: 143usize,
877        name: Str::new("platform_tx.syscalls.total\0"),
878        units: Units::None,
879    }
880    .build(),
881    info::Builder {
882        id: 144usize,
883        name: Str::new("platform_tx.syscalls\0"),
884        units: Units::None,
885    }
886    .build(),
887    info::Builder {
888        id: 145usize,
889        name: Str::new("platform_tx.syscalls.blocked.total\0"),
890        units: Units::None,
891    }
892    .build(),
893    info::Builder {
894        id: 146usize,
895        name: Str::new("platform_tx.syscalls.blocked\0"),
896        units: Units::None,
897    }
898    .build(),
899    info::Builder {
900        id: 147usize,
901        name: Str::new("platform_tx.errors.total\0"),
902        units: Units::None,
903    }
904    .build(),
905    info::Builder {
906        id: 148usize,
907        name: Str::new("platform_tx.errors\0"),
908        units: Units::None,
909    }
910    .build(),
911    info::Builder {
912        id: 149usize,
913        name: Str::new("platform_tx.errors.dropped.total\0"),
914        units: Units::None,
915    }
916    .build(),
917    info::Builder {
918        id: 150usize,
919        name: Str::new("platform_tx.errors.dropped\0"),
920        units: Units::None,
921    }
922    .build(),
923    info::Builder {
924        id: 151usize,
925        name: Str::new("platform_tx_error\0"),
926        units: Units::None,
927    }
928    .build(),
929    info::Builder {
930        id: 152usize,
931        name: Str::new("platform_rx\0"),
932        units: Units::None,
933    }
934    .build(),
935    info::Builder {
936        id: 153usize,
937        name: Str::new("platform_rx.packets.total\0"),
938        units: Units::None,
939    }
940    .build(),
941    info::Builder {
942        id: 154usize,
943        name: Str::new("platform_rx.packets\0"),
944        units: Units::None,
945    }
946    .build(),
947    info::Builder {
948        id: 155usize,
949        name: Str::new("platform_rx.syscalls.total\0"),
950        units: Units::None,
951    }
952    .build(),
953    info::Builder {
954        id: 156usize,
955        name: Str::new("platform_rx.syscalls\0"),
956        units: Units::None,
957    }
958    .build(),
959    info::Builder {
960        id: 157usize,
961        name: Str::new("platform_rx.syscalls.blocked.total\0"),
962        units: Units::None,
963    }
964    .build(),
965    info::Builder {
966        id: 158usize,
967        name: Str::new("platform_rx.syscalls.blocked\0"),
968        units: Units::None,
969    }
970    .build(),
971    info::Builder {
972        id: 159usize,
973        name: Str::new("platform_rx.errors.total\0"),
974        units: Units::None,
975    }
976    .build(),
977    info::Builder {
978        id: 160usize,
979        name: Str::new("platform_rx.errors\0"),
980        units: Units::None,
981    }
982    .build(),
983    info::Builder {
984        id: 161usize,
985        name: Str::new("platform_rx.errors.dropped.total\0"),
986        units: Units::None,
987    }
988    .build(),
989    info::Builder {
990        id: 162usize,
991        name: Str::new("platform_rx.errors.dropped\0"),
992        units: Units::None,
993    }
994    .build(),
995    info::Builder {
996        id: 163usize,
997        name: Str::new("platform_rx_error\0"),
998        units: Units::None,
999    }
1000    .build(),
1001    info::Builder {
1002        id: 164usize,
1003        name: Str::new("platform_feature_configured\0"),
1004        units: Units::None,
1005    }
1006    .build(),
1007    info::Builder {
1008        id: 165usize,
1009        name: Str::new("platform_event_loop_wakeup\0"),
1010        units: Units::None,
1011    }
1012    .build(),
1013    info::Builder {
1014        id: 166usize,
1015        name: Str::new("platform_event_loop_sleep\0"),
1016        units: Units::None,
1017    }
1018    .build(),
1019    info::Builder {
1020        id: 167usize,
1021        name: Str::new("platform_event_loop_sleep.processing_duration\0"),
1022        units: Units::Duration,
1023    }
1024    .build(),
1025    info::Builder {
1026        id: 168usize,
1027        name: Str::new("platform_event_loop_started\0"),
1028        units: Units::None,
1029    }
1030    .build(),
1031];
1032#[derive(Debug)]
1033#[allow(dead_code)]
1034pub struct ConnectionContext {
1035    start_time: crate::event::Timestamp,
1036}
1037pub struct Subscriber<R: Registry> {
1038    #[allow(dead_code)]
1039    counters: Box<[R::Counter; 81usize]>,
1040    #[allow(dead_code)]
1041    bool_counters: Box<[R::BoolCounter; 3usize]>,
1042    #[allow(dead_code)]
1043    nominal_counters: Box<[R::NominalCounter]>,
1044    #[allow(dead_code)]
1045    nominal_counter_offsets: Box<[usize; 30usize]>,
1046    #[allow(dead_code)]
1047    measures: Box<[R::Measure; 39usize]>,
1048    #[allow(dead_code)]
1049    gauges: Box<[R::Gauge; 0usize]>,
1050    #[allow(dead_code)]
1051    timers: Box<[R::Timer; 15usize]>,
1052    #[allow(dead_code)]
1053    nominal_timers: Box<[R::NominalTimer]>,
1054    #[allow(dead_code)]
1055    nominal_timer_offsets: Box<[usize; 1usize]>,
1056    #[allow(dead_code)]
1057    registry: R,
1058}
1059impl<R: Registry + Default> Default for Subscriber<R> {
1060    fn default() -> Self {
1061        Self::new(R::default())
1062    }
1063}
1064impl<R: Registry> Subscriber<R> {
1065    #[doc = r" Creates a new subscriber with the given registry"]
1066    #[doc = r""]
1067    #[doc = r" # Note"]
1068    #[doc = r""]
1069    #[doc = r" All of the recorders are registered on initialization and cached for the lifetime"]
1070    #[doc = r" of the subscriber."]
1071    #[allow(unused_mut)]
1072    #[inline]
1073    pub fn new(registry: R) -> Self {
1074        let mut counters = Vec::with_capacity(81usize);
1075        let mut bool_counters = Vec::with_capacity(3usize);
1076        let mut nominal_counters = Vec::with_capacity(30usize);
1077        let mut nominal_counter_offsets = Vec::with_capacity(30usize);
1078        let mut measures = Vec::with_capacity(39usize);
1079        let mut gauges = Vec::with_capacity(0usize);
1080        let mut timers = Vec::with_capacity(15usize);
1081        let mut nominal_timers = Vec::with_capacity(1usize);
1082        let mut nominal_timer_offsets = Vec::with_capacity(1usize);
1083        counters.push(registry.register_counter(&INFO[0usize]));
1084        counters.push(registry.register_counter(&INFO[1usize]));
1085        counters.push(registry.register_counter(&INFO[2usize]));
1086        counters.push(registry.register_counter(&INFO[3usize]));
1087        counters.push(registry.register_counter(&INFO[4usize]));
1088        counters.push(registry.register_counter(&INFO[6usize]));
1089        counters.push(registry.register_counter(&INFO[8usize]));
1090        counters.push(registry.register_counter(&INFO[10usize]));
1091        counters.push(registry.register_counter(&INFO[11usize]));
1092        counters.push(registry.register_counter(&INFO[12usize]));
1093        counters.push(registry.register_counter(&INFO[15usize]));
1094        counters.push(registry.register_counter(&INFO[18usize]));
1095        counters.push(registry.register_counter(&INFO[20usize]));
1096        counters.push(registry.register_counter(&INFO[22usize]));
1097        counters.push(registry.register_counter(&INFO[25usize]));
1098        counters.push(registry.register_counter(&INFO[35usize]));
1099        counters.push(registry.register_counter(&INFO[37usize]));
1100        counters.push(registry.register_counter(&INFO[38usize]));
1101        counters.push(registry.register_counter(&INFO[40usize]));
1102        counters.push(registry.register_counter(&INFO[42usize]));
1103        counters.push(registry.register_counter(&INFO[44usize]));
1104        counters.push(registry.register_counter(&INFO[47usize]));
1105        counters.push(registry.register_counter(&INFO[52usize]));
1106        counters.push(registry.register_counter(&INFO[53usize]));
1107        counters.push(registry.register_counter(&INFO[56usize]));
1108        counters.push(registry.register_counter(&INFO[58usize]));
1109        counters.push(registry.register_counter(&INFO[59usize]));
1110        counters.push(registry.register_counter(&INFO[62usize]));
1111        counters.push(registry.register_counter(&INFO[63usize]));
1112        counters.push(registry.register_counter(&INFO[65usize]));
1113        counters.push(registry.register_counter(&INFO[66usize]));
1114        counters.push(registry.register_counter(&INFO[69usize]));
1115        counters.push(registry.register_counter(&INFO[70usize]));
1116        counters.push(registry.register_counter(&INFO[71usize]));
1117        counters.push(registry.register_counter(&INFO[73usize]));
1118        counters.push(registry.register_counter(&INFO[75usize]));
1119        counters.push(registry.register_counter(&INFO[80usize]));
1120        counters.push(registry.register_counter(&INFO[81usize]));
1121        counters.push(registry.register_counter(&INFO[82usize]));
1122        counters.push(registry.register_counter(&INFO[84usize]));
1123        counters.push(registry.register_counter(&INFO[86usize]));
1124        counters.push(registry.register_counter(&INFO[88usize]));
1125        counters.push(registry.register_counter(&INFO[89usize]));
1126        counters.push(registry.register_counter(&INFO[91usize]));
1127        counters.push(registry.register_counter(&INFO[92usize]));
1128        counters.push(registry.register_counter(&INFO[94usize]));
1129        counters.push(registry.register_counter(&INFO[95usize]));
1130        counters.push(registry.register_counter(&INFO[99usize]));
1131        counters.push(registry.register_counter(&INFO[102usize]));
1132        counters.push(registry.register_counter(&INFO[106usize]));
1133        counters.push(registry.register_counter(&INFO[107usize]));
1134        counters.push(registry.register_counter(&INFO[111usize]));
1135        counters.push(registry.register_counter(&INFO[113usize]));
1136        counters.push(registry.register_counter(&INFO[119usize]));
1137        counters.push(registry.register_counter(&INFO[120usize]));
1138        counters.push(registry.register_counter(&INFO[123usize]));
1139        counters.push(registry.register_counter(&INFO[124usize]));
1140        counters.push(registry.register_counter(&INFO[125usize]));
1141        counters.push(registry.register_counter(&INFO[126usize]));
1142        counters.push(registry.register_counter(&INFO[130usize]));
1143        counters.push(registry.register_counter(&INFO[133usize]));
1144        counters.push(registry.register_counter(&INFO[137usize]));
1145        counters.push(registry.register_counter(&INFO[139usize]));
1146        counters.push(registry.register_counter(&INFO[140usize]));
1147        counters.push(registry.register_counter(&INFO[141usize]));
1148        counters.push(registry.register_counter(&INFO[143usize]));
1149        counters.push(registry.register_counter(&INFO[145usize]));
1150        counters.push(registry.register_counter(&INFO[147usize]));
1151        counters.push(registry.register_counter(&INFO[149usize]));
1152        counters.push(registry.register_counter(&INFO[151usize]));
1153        counters.push(registry.register_counter(&INFO[152usize]));
1154        counters.push(registry.register_counter(&INFO[153usize]));
1155        counters.push(registry.register_counter(&INFO[155usize]));
1156        counters.push(registry.register_counter(&INFO[157usize]));
1157        counters.push(registry.register_counter(&INFO[159usize]));
1158        counters.push(registry.register_counter(&INFO[161usize]));
1159        counters.push(registry.register_counter(&INFO[163usize]));
1160        counters.push(registry.register_counter(&INFO[164usize]));
1161        counters.push(registry.register_counter(&INFO[165usize]));
1162        counters.push(registry.register_counter(&INFO[166usize]));
1163        counters.push(registry.register_counter(&INFO[168usize]));
1164        bool_counters.push(registry.register_bool_counter(&INFO[24usize]));
1165        bool_counters.push(registry.register_bool_counter(&INFO[34usize]));
1166        bool_counters.push(registry.register_bool_counter(&INFO[98usize]));
1167        {
1168            #[allow(unused_imports)]
1169            use api::*;
1170            {
1171                let offset = nominal_counters.len();
1172                let mut count = 0;
1173                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1174                    nominal_counters
1175                        .push(registry.register_nominal_counter(&INFO[5usize], variant));
1176                    count += 1;
1177                }
1178                debug_assert_ne!(count, 0, "field type needs at least one variant");
1179                nominal_counter_offsets.push(offset);
1180            }
1181            {
1182                let offset = nominal_counters.len();
1183                let mut count = 0;
1184                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1185                    nominal_counters
1186                        .push(registry.register_nominal_counter(&INFO[9usize], variant));
1187                    count += 1;
1188                }
1189                debug_assert_ne!(count, 0, "field type needs at least one variant");
1190                nominal_counter_offsets.push(offset);
1191            }
1192            {
1193                let offset = nominal_counters.len();
1194                let mut count = 0;
1195                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1196                    nominal_counters
1197                        .push(registry.register_nominal_counter(&INFO[13usize], variant));
1198                    count += 1;
1199                }
1200                debug_assert_ne!(count, 0, "field type needs at least one variant");
1201                nominal_counter_offsets.push(offset);
1202            }
1203            {
1204                let offset = nominal_counters.len();
1205                let mut count = 0;
1206                for variant in <Frame as AsVariant>::VARIANTS.iter() {
1207                    nominal_counters
1208                        .push(registry.register_nominal_counter(&INFO[14usize], variant));
1209                    count += 1;
1210                }
1211                debug_assert_ne!(count, 0, "field type needs at least one variant");
1212                nominal_counter_offsets.push(offset);
1213            }
1214            {
1215                let offset = nominal_counters.len();
1216                let mut count = 0;
1217                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1218                    nominal_counters
1219                        .push(registry.register_nominal_counter(&INFO[16usize], variant));
1220                    count += 1;
1221                }
1222                debug_assert_ne!(count, 0, "field type needs at least one variant");
1223                nominal_counter_offsets.push(offset);
1224            }
1225            {
1226                let offset = nominal_counters.len();
1227                let mut count = 0;
1228                for variant in <Frame as AsVariant>::VARIANTS.iter() {
1229                    nominal_counters
1230                        .push(registry.register_nominal_counter(&INFO[17usize], variant));
1231                    count += 1;
1232                }
1233                debug_assert_ne!(count, 0, "field type needs at least one variant");
1234                nominal_counter_offsets.push(offset);
1235            }
1236            {
1237                let offset = nominal_counters.len();
1238                let mut count = 0;
1239                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1240                    nominal_counters
1241                        .push(registry.register_nominal_counter(&INFO[19usize], variant));
1242                    count += 1;
1243                }
1244                debug_assert_ne!(count, 0, "field type needs at least one variant");
1245                nominal_counter_offsets.push(offset);
1246            }
1247            {
1248                let offset = nominal_counters.len();
1249                let mut count = 0;
1250                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1251                    nominal_counters
1252                        .push(registry.register_nominal_counter(&INFO[21usize], variant));
1253                    count += 1;
1254                }
1255                debug_assert_ne!(count, 0, "field type needs at least one variant");
1256                nominal_counter_offsets.push(offset);
1257            }
1258            {
1259                let offset = nominal_counters.len();
1260                let mut count = 0;
1261                for variant in <CongestionSource as AsVariant>::VARIANTS.iter() {
1262                    nominal_counters
1263                        .push(registry.register_nominal_counter(&INFO[36usize], variant));
1264                    count += 1;
1265                }
1266                debug_assert_ne!(count, 0, "field type needs at least one variant");
1267                nominal_counter_offsets.push(offset);
1268            }
1269            {
1270                let offset = nominal_counters.len();
1271                let mut count = 0;
1272                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1273                    nominal_counters
1274                        .push(registry.register_nominal_counter(&INFO[39usize], variant));
1275                    count += 1;
1276                }
1277                debug_assert_ne!(count, 0, "field type needs at least one variant");
1278                nominal_counter_offsets.push(offset);
1279            }
1280            {
1281                let offset = nominal_counters.len();
1282                let mut count = 0;
1283                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1284                    nominal_counters
1285                        .push(registry.register_nominal_counter(&INFO[41usize], variant));
1286                    count += 1;
1287                }
1288                debug_assert_ne!(count, 0, "field type needs at least one variant");
1289                nominal_counter_offsets.push(offset);
1290            }
1291            {
1292                let offset = nominal_counters.len();
1293                let mut count = 0;
1294                for variant in <PacketDropReason as AsVariant>::VARIANTS.iter() {
1295                    nominal_counters
1296                        .push(registry.register_nominal_counter(&INFO[43usize], variant));
1297                    count += 1;
1298                }
1299                debug_assert_ne!(count, 0, "field type needs at least one variant");
1300                nominal_counter_offsets.push(offset);
1301            }
1302            {
1303                let offset = nominal_counters.len();
1304                let mut count = 0;
1305                for variant in <KeyType as AsVariant>::VARIANTS.iter() {
1306                    nominal_counters
1307                        .push(registry.register_nominal_counter(&INFO[45usize], variant));
1308                    count += 1;
1309                }
1310                debug_assert_ne!(count, 0, "field type needs at least one variant");
1311                nominal_counter_offsets.push(offset);
1312            }
1313            {
1314                let offset = nominal_counters.len();
1315                let mut count = 0;
1316                for variant in <CipherSuite as AsVariant>::VARIANTS.iter() {
1317                    nominal_counters
1318                        .push(registry.register_nominal_counter(&INFO[46usize], variant));
1319                    count += 1;
1320                }
1321                debug_assert_ne!(count, 0, "field type needs at least one variant");
1322                nominal_counter_offsets.push(offset);
1323            }
1324            {
1325                let offset = nominal_counters.len();
1326                let mut count = 0;
1327                for variant in <KeySpace as AsVariant>::VARIANTS.iter() {
1328                    nominal_counters
1329                        .push(registry.register_nominal_counter(&INFO[51usize], variant));
1330                    count += 1;
1331                }
1332                debug_assert_ne!(count, 0, "field type needs at least one variant");
1333                nominal_counter_offsets.push(offset);
1334            }
1335            {
1336                let offset = nominal_counters.len();
1337                let mut count = 0;
1338                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1339                    nominal_counters
1340                        .push(registry.register_nominal_counter(&INFO[54usize], variant));
1341                    count += 1;
1342                }
1343                debug_assert_ne!(count, 0, "field type needs at least one variant");
1344                nominal_counter_offsets.push(offset);
1345            }
1346            {
1347                let offset = nominal_counters.len();
1348                let mut count = 0;
1349                for variant in <DuplicatePacketError as AsVariant>::VARIANTS.iter() {
1350                    nominal_counters
1351                        .push(registry.register_nominal_counter(&INFO[55usize], variant));
1352                    count += 1;
1353                }
1354                debug_assert_ne!(count, 0, "field type needs at least one variant");
1355                nominal_counter_offsets.push(offset);
1356            }
1357            {
1358                let offset = nominal_counters.len();
1359                let mut count = 0;
1360                for variant in <DatagramDropReason as AsVariant>::VARIANTS.iter() {
1361                    nominal_counters
1362                        .push(registry.register_nominal_counter(&INFO[68usize], variant));
1363                    count += 1;
1364                }
1365                debug_assert_ne!(count, 0, "field type needs at least one variant");
1366                nominal_counter_offsets.push(offset);
1367            }
1368            {
1369                let offset = nominal_counters.len();
1370                let mut count = 0;
1371                for variant in <EcnState as AsVariant>::VARIANTS.iter() {
1372                    nominal_counters
1373                        .push(registry.register_nominal_counter(&INFO[72usize], variant));
1374                    count += 1;
1375                }
1376                debug_assert_ne!(count, 0, "field type needs at least one variant");
1377                nominal_counter_offsets.push(offset);
1378            }
1379            {
1380                let offset = nominal_counters.len();
1381                let mut count = 0;
1382                for variant in <MigrationDenyReason as AsVariant>::VARIANTS.iter() {
1383                    nominal_counters
1384                        .push(registry.register_nominal_counter(&INFO[74usize], variant));
1385                    count += 1;
1386                }
1387                debug_assert_ne!(count, 0, "field type needs at least one variant");
1388                nominal_counter_offsets.push(offset);
1389            }
1390            {
1391                let offset = nominal_counters.len();
1392                let mut count = 0;
1393                for variant in <HandshakeStatus as AsVariant>::VARIANTS.iter() {
1394                    nominal_counters
1395                        .push(registry.register_nominal_counter(&INFO[79usize], variant));
1396                    count += 1;
1397                }
1398                debug_assert_ne!(count, 0, "field type needs at least one variant");
1399                nominal_counter_offsets.push(offset);
1400            }
1401            {
1402                let offset = nominal_counters.len();
1403                let mut count = 0;
1404                for variant in <PathChallengeStatus as AsVariant>::VARIANTS.iter() {
1405                    nominal_counters
1406                        .push(registry.register_nominal_counter(&INFO[83usize], variant));
1407                    count += 1;
1408                }
1409                debug_assert_ne!(count, 0, "field type needs at least one variant");
1410                nominal_counter_offsets.push(offset);
1411            }
1412            {
1413                let offset = nominal_counters.len();
1414                let mut count = 0;
1415                for variant in <MtuUpdatedCause as AsVariant>::VARIANTS.iter() {
1416                    nominal_counters
1417                        .push(registry.register_nominal_counter(&INFO[97usize], variant));
1418                    count += 1;
1419                }
1420                debug_assert_ne!(count, 0, "field type needs at least one variant");
1421                nominal_counter_offsets.push(offset);
1422            }
1423            {
1424                let offset = nominal_counters.len();
1425                let mut count = 0;
1426                for variant in <PacketHeader as AsVariant>::VARIANTS.iter() {
1427                    nominal_counters
1428                        .push(registry.register_nominal_counter(&INFO[100usize], variant));
1429                    count += 1;
1430                }
1431                debug_assert_ne!(count, 0, "field type needs at least one variant");
1432                nominal_counter_offsets.push(offset);
1433            }
1434            {
1435                let offset = nominal_counters.len();
1436                let mut count = 0;
1437                for variant in <SlowStartExitCause as AsVariant>::VARIANTS.iter() {
1438                    nominal_counters
1439                        .push(registry.register_nominal_counter(&INFO[103usize], variant));
1440                    count += 1;
1441                }
1442                debug_assert_ne!(count, 0, "field type needs at least one variant");
1443                nominal_counter_offsets.push(offset);
1444            }
1445            {
1446                let offset = nominal_counters.len();
1447                let mut count = 0;
1448                for variant in <BbrState as AsVariant>::VARIANTS.iter() {
1449                    nominal_counters
1450                        .push(registry.register_nominal_counter(&INFO[112usize], variant));
1451                    count += 1;
1452                }
1453                debug_assert_ne!(count, 0, "field type needs at least one variant");
1454                nominal_counter_offsets.push(offset);
1455            }
1456            {
1457                let offset = nominal_counters.len();
1458                let mut count = 0;
1459                for variant in <DcState as AsVariant>::VARIANTS.iter() {
1460                    nominal_counters
1461                        .push(registry.register_nominal_counter(&INFO[118usize], variant));
1462                    count += 1;
1463                }
1464                debug_assert_ne!(count, 0, "field type needs at least one variant");
1465                nominal_counter_offsets.push(offset);
1466            }
1467            {
1468                let offset = nominal_counters.len();
1469                let mut count = 0;
1470                for variant in <crate::connection::Error as AsVariant>::VARIANTS.iter() {
1471                    nominal_counters
1472                        .push(registry.register_nominal_counter(&INFO[122usize], variant));
1473                    count += 1;
1474                }
1475                debug_assert_ne!(count, 0, "field type needs at least one variant");
1476                nominal_counter_offsets.push(offset);
1477            }
1478            {
1479                let offset = nominal_counters.len();
1480                let mut count = 0;
1481                for variant in <DatagramDropReason as AsVariant>::VARIANTS.iter() {
1482                    nominal_counters
1483                        .push(registry.register_nominal_counter(&INFO[136usize], variant));
1484                    count += 1;
1485                }
1486                debug_assert_ne!(count, 0, "field type needs at least one variant");
1487                nominal_counter_offsets.push(offset);
1488            }
1489            {
1490                let offset = nominal_counters.len();
1491                let mut count = 0;
1492                for variant in <crate::connection::Error as AsVariant>::VARIANTS.iter() {
1493                    nominal_counters
1494                        .push(registry.register_nominal_counter(&INFO[138usize], variant));
1495                    count += 1;
1496                }
1497                debug_assert_ne!(count, 0, "field type needs at least one variant");
1498                nominal_counter_offsets.push(offset);
1499            }
1500        }
1501        measures.push(registry.register_measure(&INFO[7usize]));
1502        measures.push(registry.register_measure(&INFO[23usize]));
1503        measures.push(registry.register_measure(&INFO[26usize]));
1504        measures.push(registry.register_measure(&INFO[27usize]));
1505        measures.push(registry.register_measure(&INFO[28usize]));
1506        measures.push(registry.register_measure(&INFO[29usize]));
1507        measures.push(registry.register_measure(&INFO[30usize]));
1508        measures.push(registry.register_measure(&INFO[31usize]));
1509        measures.push(registry.register_measure(&INFO[32usize]));
1510        measures.push(registry.register_measure(&INFO[33usize]));
1511        measures.push(registry.register_measure(&INFO[60usize]));
1512        measures.push(registry.register_measure(&INFO[61usize]));
1513        measures.push(registry.register_measure(&INFO[64usize]));
1514        measures.push(registry.register_measure(&INFO[67usize]));
1515        measures.push(registry.register_measure(&INFO[90usize]));
1516        measures.push(registry.register_measure(&INFO[93usize]));
1517        measures.push(registry.register_measure(&INFO[96usize]));
1518        measures.push(registry.register_measure(&INFO[101usize]));
1519        measures.push(registry.register_measure(&INFO[105usize]));
1520        measures.push(registry.register_measure(&INFO[108usize]));
1521        measures.push(registry.register_measure(&INFO[109usize]));
1522        measures.push(registry.register_measure(&INFO[110usize]));
1523        measures.push(registry.register_measure(&INFO[127usize]));
1524        measures.push(registry.register_measure(&INFO[128usize]));
1525        measures.push(registry.register_measure(&INFO[129usize]));
1526        measures.push(registry.register_measure(&INFO[131usize]));
1527        measures.push(registry.register_measure(&INFO[132usize]));
1528        measures.push(registry.register_measure(&INFO[134usize]));
1529        measures.push(registry.register_measure(&INFO[135usize]));
1530        measures.push(registry.register_measure(&INFO[142usize]));
1531        measures.push(registry.register_measure(&INFO[144usize]));
1532        measures.push(registry.register_measure(&INFO[146usize]));
1533        measures.push(registry.register_measure(&INFO[148usize]));
1534        measures.push(registry.register_measure(&INFO[150usize]));
1535        measures.push(registry.register_measure(&INFO[154usize]));
1536        measures.push(registry.register_measure(&INFO[156usize]));
1537        measures.push(registry.register_measure(&INFO[158usize]));
1538        measures.push(registry.register_measure(&INFO[160usize]));
1539        measures.push(registry.register_measure(&INFO[162usize]));
1540        timers.push(registry.register_timer(&INFO[48usize]));
1541        timers.push(registry.register_timer(&INFO[49usize]));
1542        timers.push(registry.register_timer(&INFO[50usize]));
1543        timers.push(registry.register_timer(&INFO[57usize]));
1544        timers.push(registry.register_timer(&INFO[76usize]));
1545        timers.push(registry.register_timer(&INFO[77usize]));
1546        timers.push(registry.register_timer(&INFO[78usize]));
1547        timers.push(registry.register_timer(&INFO[85usize]));
1548        timers.push(registry.register_timer(&INFO[87usize]));
1549        timers.push(registry.register_timer(&INFO[114usize]));
1550        timers.push(registry.register_timer(&INFO[115usize]));
1551        timers.push(registry.register_timer(&INFO[116usize]));
1552        timers.push(registry.register_timer(&INFO[117usize]));
1553        timers.push(registry.register_timer(&INFO[121usize]));
1554        timers.push(registry.register_timer(&INFO[167usize]));
1555        {
1556            #[allow(unused_imports)]
1557            use api::*;
1558            {
1559                let offset = nominal_timers.len();
1560                let mut count = 0;
1561                for variant in <SlowStartExitCause as AsVariant>::VARIANTS.iter() {
1562                    nominal_timers.push(registry.register_nominal_timer(&INFO[104usize], variant));
1563                    count += 1;
1564                }
1565                debug_assert_ne!(count, 0, "field type needs at least one variant");
1566                nominal_timer_offsets.push(offset);
1567            }
1568        }
1569        Self {
1570            counters: counters
1571                .try_into()
1572                .unwrap_or_else(|_| panic!("invalid len")),
1573            bool_counters: bool_counters
1574                .try_into()
1575                .unwrap_or_else(|_| panic!("invalid len")),
1576            nominal_counters: nominal_counters.into(),
1577            nominal_counter_offsets: nominal_counter_offsets
1578                .try_into()
1579                .unwrap_or_else(|_| panic!("invalid len")),
1580            measures: measures
1581                .try_into()
1582                .unwrap_or_else(|_| panic!("invalid len")),
1583            gauges: gauges.try_into().unwrap_or_else(|_| panic!("invalid len")),
1584            timers: timers.try_into().unwrap_or_else(|_| panic!("invalid len")),
1585            nominal_timers: nominal_timers.into(),
1586            nominal_timer_offsets: nominal_timer_offsets
1587                .try_into()
1588                .unwrap_or_else(|_| panic!("invalid len")),
1589            registry,
1590        }
1591    }
1592    #[doc = r" Returns all of the registered counters"]
1593    #[inline]
1594    pub fn counters(&self) -> impl Iterator<Item = (&'static Info, &R::Counter)> + '_ {
1595        self.counters
1596            .iter()
1597            .enumerate()
1598            .map(|(idx, entry)| match idx {
1599                0usize => (&INFO[0usize], entry),
1600                1usize => (&INFO[1usize], entry),
1601                2usize => (&INFO[2usize], entry),
1602                3usize => (&INFO[3usize], entry),
1603                4usize => (&INFO[4usize], entry),
1604                5usize => (&INFO[6usize], entry),
1605                6usize => (&INFO[8usize], entry),
1606                7usize => (&INFO[10usize], entry),
1607                8usize => (&INFO[11usize], entry),
1608                9usize => (&INFO[12usize], entry),
1609                10usize => (&INFO[15usize], entry),
1610                11usize => (&INFO[18usize], entry),
1611                12usize => (&INFO[20usize], entry),
1612                13usize => (&INFO[22usize], entry),
1613                14usize => (&INFO[25usize], entry),
1614                15usize => (&INFO[35usize], entry),
1615                16usize => (&INFO[37usize], entry),
1616                17usize => (&INFO[38usize], entry),
1617                18usize => (&INFO[40usize], entry),
1618                19usize => (&INFO[42usize], entry),
1619                20usize => (&INFO[44usize], entry),
1620                21usize => (&INFO[47usize], entry),
1621                22usize => (&INFO[52usize], entry),
1622                23usize => (&INFO[53usize], entry),
1623                24usize => (&INFO[56usize], entry),
1624                25usize => (&INFO[58usize], entry),
1625                26usize => (&INFO[59usize], entry),
1626                27usize => (&INFO[62usize], entry),
1627                28usize => (&INFO[63usize], entry),
1628                29usize => (&INFO[65usize], entry),
1629                30usize => (&INFO[66usize], entry),
1630                31usize => (&INFO[69usize], entry),
1631                32usize => (&INFO[70usize], entry),
1632                33usize => (&INFO[71usize], entry),
1633                34usize => (&INFO[73usize], entry),
1634                35usize => (&INFO[75usize], entry),
1635                36usize => (&INFO[80usize], entry),
1636                37usize => (&INFO[81usize], entry),
1637                38usize => (&INFO[82usize], entry),
1638                39usize => (&INFO[84usize], entry),
1639                40usize => (&INFO[86usize], entry),
1640                41usize => (&INFO[88usize], entry),
1641                42usize => (&INFO[89usize], entry),
1642                43usize => (&INFO[91usize], entry),
1643                44usize => (&INFO[92usize], entry),
1644                45usize => (&INFO[94usize], entry),
1645                46usize => (&INFO[95usize], entry),
1646                47usize => (&INFO[99usize], entry),
1647                48usize => (&INFO[102usize], entry),
1648                49usize => (&INFO[106usize], entry),
1649                50usize => (&INFO[107usize], entry),
1650                51usize => (&INFO[111usize], entry),
1651                52usize => (&INFO[113usize], entry),
1652                53usize => (&INFO[119usize], entry),
1653                54usize => (&INFO[120usize], entry),
1654                55usize => (&INFO[123usize], entry),
1655                56usize => (&INFO[124usize], entry),
1656                57usize => (&INFO[125usize], entry),
1657                58usize => (&INFO[126usize], entry),
1658                59usize => (&INFO[130usize], entry),
1659                60usize => (&INFO[133usize], entry),
1660                61usize => (&INFO[137usize], entry),
1661                62usize => (&INFO[139usize], entry),
1662                63usize => (&INFO[140usize], entry),
1663                64usize => (&INFO[141usize], entry),
1664                65usize => (&INFO[143usize], entry),
1665                66usize => (&INFO[145usize], entry),
1666                67usize => (&INFO[147usize], entry),
1667                68usize => (&INFO[149usize], entry),
1668                69usize => (&INFO[151usize], entry),
1669                70usize => (&INFO[152usize], entry),
1670                71usize => (&INFO[153usize], entry),
1671                72usize => (&INFO[155usize], entry),
1672                73usize => (&INFO[157usize], entry),
1673                74usize => (&INFO[159usize], entry),
1674                75usize => (&INFO[161usize], entry),
1675                76usize => (&INFO[163usize], entry),
1676                77usize => (&INFO[164usize], entry),
1677                78usize => (&INFO[165usize], entry),
1678                79usize => (&INFO[166usize], entry),
1679                80usize => (&INFO[168usize], entry),
1680                _ => unsafe { core::hint::unreachable_unchecked() },
1681            })
1682    }
1683    #[allow(dead_code)]
1684    #[inline(always)]
1685    fn count<T: Metric>(&self, info: usize, id: usize, value: T) {
1686        let info = &INFO[info];
1687        let counter = &self.counters[id];
1688        counter.record(info, value);
1689    }
1690    #[doc = r" Returns all of the registered bool counters"]
1691    #[inline]
1692    pub fn bool_counters(&self) -> impl Iterator<Item = (&'static Info, &R::BoolCounter)> + '_ {
1693        self.bool_counters
1694            .iter()
1695            .enumerate()
1696            .map(|(idx, entry)| match idx {
1697                0usize => (&INFO[24usize], entry),
1698                1usize => (&INFO[34usize], entry),
1699                2usize => (&INFO[98usize], entry),
1700                _ => unsafe { core::hint::unreachable_unchecked() },
1701            })
1702    }
1703    #[allow(dead_code)]
1704    #[inline(always)]
1705    fn count_bool(&self, info: usize, id: usize, value: bool) {
1706        let info = &INFO[info];
1707        let counter = &self.bool_counters[id];
1708        counter.record(info, value);
1709    }
1710    #[doc = r" Returns all of the registered nominal counters"]
1711    #[inline]
1712    pub fn nominal_counters(
1713        &self,
1714    ) -> impl Iterator<Item = (&'static Info, &[R::NominalCounter], &[info::Variant])> + '_ {
1715        #[allow(unused_imports)]
1716        use api::*;
1717        self.nominal_counter_offsets
1718            .iter()
1719            .enumerate()
1720            .map(|(idx, entry)| match idx {
1721                0usize => {
1722                    let offset = *entry;
1723                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1724                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1725                    (&INFO[5usize], entries, variants)
1726                }
1727                1usize => {
1728                    let offset = *entry;
1729                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1730                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1731                    (&INFO[9usize], entries, variants)
1732                }
1733                2usize => {
1734                    let offset = *entry;
1735                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1736                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1737                    (&INFO[13usize], entries, variants)
1738                }
1739                3usize => {
1740                    let offset = *entry;
1741                    let variants = <Frame as AsVariant>::VARIANTS;
1742                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1743                    (&INFO[14usize], entries, variants)
1744                }
1745                4usize => {
1746                    let offset = *entry;
1747                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1748                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1749                    (&INFO[16usize], entries, variants)
1750                }
1751                5usize => {
1752                    let offset = *entry;
1753                    let variants = <Frame as AsVariant>::VARIANTS;
1754                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1755                    (&INFO[17usize], entries, variants)
1756                }
1757                6usize => {
1758                    let offset = *entry;
1759                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1760                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1761                    (&INFO[19usize], entries, variants)
1762                }
1763                7usize => {
1764                    let offset = *entry;
1765                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1766                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1767                    (&INFO[21usize], entries, variants)
1768                }
1769                8usize => {
1770                    let offset = *entry;
1771                    let variants = <CongestionSource as AsVariant>::VARIANTS;
1772                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1773                    (&INFO[36usize], entries, variants)
1774                }
1775                9usize => {
1776                    let offset = *entry;
1777                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1778                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1779                    (&INFO[39usize], entries, variants)
1780                }
1781                10usize => {
1782                    let offset = *entry;
1783                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1784                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1785                    (&INFO[41usize], entries, variants)
1786                }
1787                11usize => {
1788                    let offset = *entry;
1789                    let variants = <PacketDropReason as AsVariant>::VARIANTS;
1790                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1791                    (&INFO[43usize], entries, variants)
1792                }
1793                12usize => {
1794                    let offset = *entry;
1795                    let variants = <KeyType as AsVariant>::VARIANTS;
1796                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1797                    (&INFO[45usize], entries, variants)
1798                }
1799                13usize => {
1800                    let offset = *entry;
1801                    let variants = <CipherSuite as AsVariant>::VARIANTS;
1802                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1803                    (&INFO[46usize], entries, variants)
1804                }
1805                14usize => {
1806                    let offset = *entry;
1807                    let variants = <KeySpace as AsVariant>::VARIANTS;
1808                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1809                    (&INFO[51usize], entries, variants)
1810                }
1811                15usize => {
1812                    let offset = *entry;
1813                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1814                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1815                    (&INFO[54usize], entries, variants)
1816                }
1817                16usize => {
1818                    let offset = *entry;
1819                    let variants = <DuplicatePacketError as AsVariant>::VARIANTS;
1820                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1821                    (&INFO[55usize], entries, variants)
1822                }
1823                17usize => {
1824                    let offset = *entry;
1825                    let variants = <DatagramDropReason as AsVariant>::VARIANTS;
1826                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1827                    (&INFO[68usize], entries, variants)
1828                }
1829                18usize => {
1830                    let offset = *entry;
1831                    let variants = <EcnState as AsVariant>::VARIANTS;
1832                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1833                    (&INFO[72usize], entries, variants)
1834                }
1835                19usize => {
1836                    let offset = *entry;
1837                    let variants = <MigrationDenyReason as AsVariant>::VARIANTS;
1838                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1839                    (&INFO[74usize], entries, variants)
1840                }
1841                20usize => {
1842                    let offset = *entry;
1843                    let variants = <HandshakeStatus as AsVariant>::VARIANTS;
1844                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1845                    (&INFO[79usize], entries, variants)
1846                }
1847                21usize => {
1848                    let offset = *entry;
1849                    let variants = <PathChallengeStatus as AsVariant>::VARIANTS;
1850                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1851                    (&INFO[83usize], entries, variants)
1852                }
1853                22usize => {
1854                    let offset = *entry;
1855                    let variants = <MtuUpdatedCause as AsVariant>::VARIANTS;
1856                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1857                    (&INFO[97usize], entries, variants)
1858                }
1859                23usize => {
1860                    let offset = *entry;
1861                    let variants = <PacketHeader as AsVariant>::VARIANTS;
1862                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1863                    (&INFO[100usize], entries, variants)
1864                }
1865                24usize => {
1866                    let offset = *entry;
1867                    let variants = <SlowStartExitCause as AsVariant>::VARIANTS;
1868                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1869                    (&INFO[103usize], entries, variants)
1870                }
1871                25usize => {
1872                    let offset = *entry;
1873                    let variants = <BbrState as AsVariant>::VARIANTS;
1874                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1875                    (&INFO[112usize], entries, variants)
1876                }
1877                26usize => {
1878                    let offset = *entry;
1879                    let variants = <DcState as AsVariant>::VARIANTS;
1880                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1881                    (&INFO[118usize], entries, variants)
1882                }
1883                27usize => {
1884                    let offset = *entry;
1885                    let variants = <crate::connection::Error as AsVariant>::VARIANTS;
1886                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1887                    (&INFO[122usize], entries, variants)
1888                }
1889                28usize => {
1890                    let offset = *entry;
1891                    let variants = <DatagramDropReason as AsVariant>::VARIANTS;
1892                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1893                    (&INFO[136usize], entries, variants)
1894                }
1895                29usize => {
1896                    let offset = *entry;
1897                    let variants = <crate::connection::Error as AsVariant>::VARIANTS;
1898                    let entries = &self.nominal_counters[offset..offset + variants.len()];
1899                    (&INFO[138usize], entries, variants)
1900                }
1901                _ => unsafe { core::hint::unreachable_unchecked() },
1902            })
1903    }
1904    #[allow(dead_code)]
1905    #[inline(always)]
1906    fn count_nominal<T: AsVariant>(&self, info: usize, id: usize, value: &T) {
1907        let info = &INFO[info];
1908        let idx = self.nominal_counter_offsets[id] + value.variant_idx();
1909        let counter = &self.nominal_counters[idx];
1910        counter.record(info, value.as_variant(), 1usize);
1911    }
1912    #[doc = r" Returns all of the registered measures"]
1913    #[inline]
1914    pub fn measures(&self) -> impl Iterator<Item = (&'static Info, &R::Measure)> + '_ {
1915        self.measures
1916            .iter()
1917            .enumerate()
1918            .map(|(idx, entry)| match idx {
1919                0usize => (&INFO[7usize], entry),
1920                1usize => (&INFO[23usize], entry),
1921                2usize => (&INFO[26usize], entry),
1922                3usize => (&INFO[27usize], entry),
1923                4usize => (&INFO[28usize], entry),
1924                5usize => (&INFO[29usize], entry),
1925                6usize => (&INFO[30usize], entry),
1926                7usize => (&INFO[31usize], entry),
1927                8usize => (&INFO[32usize], entry),
1928                9usize => (&INFO[33usize], entry),
1929                10usize => (&INFO[60usize], entry),
1930                11usize => (&INFO[61usize], entry),
1931                12usize => (&INFO[64usize], entry),
1932                13usize => (&INFO[67usize], entry),
1933                14usize => (&INFO[90usize], entry),
1934                15usize => (&INFO[93usize], entry),
1935                16usize => (&INFO[96usize], entry),
1936                17usize => (&INFO[101usize], entry),
1937                18usize => (&INFO[105usize], entry),
1938                19usize => (&INFO[108usize], entry),
1939                20usize => (&INFO[109usize], entry),
1940                21usize => (&INFO[110usize], entry),
1941                22usize => (&INFO[127usize], entry),
1942                23usize => (&INFO[128usize], entry),
1943                24usize => (&INFO[129usize], entry),
1944                25usize => (&INFO[131usize], entry),
1945                26usize => (&INFO[132usize], entry),
1946                27usize => (&INFO[134usize], entry),
1947                28usize => (&INFO[135usize], entry),
1948                29usize => (&INFO[142usize], entry),
1949                30usize => (&INFO[144usize], entry),
1950                31usize => (&INFO[146usize], entry),
1951                32usize => (&INFO[148usize], entry),
1952                33usize => (&INFO[150usize], entry),
1953                34usize => (&INFO[154usize], entry),
1954                35usize => (&INFO[156usize], entry),
1955                36usize => (&INFO[158usize], entry),
1956                37usize => (&INFO[160usize], entry),
1957                38usize => (&INFO[162usize], entry),
1958                _ => unsafe { core::hint::unreachable_unchecked() },
1959            })
1960    }
1961    #[allow(dead_code)]
1962    #[inline(always)]
1963    fn measure<T: Metric>(&self, info: usize, id: usize, value: T) {
1964        let info = &INFO[info];
1965        let measure = &self.measures[id];
1966        measure.record(info, value);
1967    }
1968    #[doc = r" Returns all of the registered gauges"]
1969    #[inline]
1970    pub fn gauges(&self) -> impl Iterator<Item = (&'static Info, &R::Gauge)> + '_ {
1971        core::iter::empty()
1972    }
1973    #[allow(dead_code)]
1974    #[inline(always)]
1975    fn gauge<T: Metric>(&self, info: usize, id: usize, value: T) {
1976        let info = &INFO[info];
1977        let gauge = &self.gauges[id];
1978        gauge.record(info, value);
1979    }
1980    #[doc = r" Returns all of the registered timers"]
1981    #[inline]
1982    pub fn timers(&self) -> impl Iterator<Item = (&'static Info, &R::Timer)> + '_ {
1983        self.timers
1984            .iter()
1985            .enumerate()
1986            .map(|(idx, entry)| match idx {
1987                0usize => (&INFO[48usize], entry),
1988                1usize => (&INFO[49usize], entry),
1989                2usize => (&INFO[50usize], entry),
1990                3usize => (&INFO[57usize], entry),
1991                4usize => (&INFO[76usize], entry),
1992                5usize => (&INFO[77usize], entry),
1993                6usize => (&INFO[78usize], entry),
1994                7usize => (&INFO[85usize], entry),
1995                8usize => (&INFO[87usize], entry),
1996                9usize => (&INFO[114usize], entry),
1997                10usize => (&INFO[115usize], entry),
1998                11usize => (&INFO[116usize], entry),
1999                12usize => (&INFO[117usize], entry),
2000                13usize => (&INFO[121usize], entry),
2001                14usize => (&INFO[167usize], entry),
2002                _ => unsafe { core::hint::unreachable_unchecked() },
2003            })
2004    }
2005    #[allow(dead_code)]
2006    #[inline(always)]
2007    fn time(&self, info: usize, id: usize, value: core::time::Duration) {
2008        let info = &INFO[info];
2009        let timer = &self.timers[id];
2010        timer.record(info, value);
2011    }
2012    #[allow(dead_code)]
2013    #[inline(always)]
2014    fn time_nominal<T: AsVariant>(
2015        &self,
2016        info: usize,
2017        id: usize,
2018        value: &T,
2019        duration: core::time::Duration,
2020    ) {
2021        let info = &INFO[info];
2022        let idx = self.nominal_timer_offsets[id] + value.variant_idx();
2023        let counter = &self.nominal_timers[idx];
2024        counter.record(info, value.as_variant(), duration);
2025    }
2026}
2027impl<R: Registry> event::Subscriber for Subscriber<R> {
2028    type ConnectionContext = ConnectionContext;
2029    fn create_connection_context(
2030        &mut self,
2031        meta: &api::ConnectionMeta,
2032        _info: &api::ConnectionInfo,
2033    ) -> Self::ConnectionContext {
2034        Self::ConnectionContext {
2035            start_time: meta.timestamp,
2036        }
2037    }
2038    #[inline]
2039    fn on_application_protocol_information(
2040        &mut self,
2041        context: &mut Self::ConnectionContext,
2042        meta: &api::ConnectionMeta,
2043        event: &api::ApplicationProtocolInformation,
2044    ) {
2045        #[allow(unused_imports)]
2046        use api::*;
2047        self.count(0usize, 0usize, 1usize);
2048        let _ = context;
2049        let _ = meta;
2050        let _ = event;
2051    }
2052    #[inline]
2053    fn on_server_name_information(
2054        &mut self,
2055        context: &mut Self::ConnectionContext,
2056        meta: &api::ConnectionMeta,
2057        event: &api::ServerNameInformation,
2058    ) {
2059        #[allow(unused_imports)]
2060        use api::*;
2061        self.count(1usize, 1usize, 1usize);
2062        let _ = context;
2063        let _ = meta;
2064        let _ = event;
2065    }
2066    #[inline]
2067    fn on_key_exchange_group(
2068        &mut self,
2069        context: &mut Self::ConnectionContext,
2070        meta: &api::ConnectionMeta,
2071        event: &api::KeyExchangeGroup,
2072    ) {
2073        #[allow(unused_imports)]
2074        use api::*;
2075        self.count(2usize, 2usize, 1usize);
2076        let _ = context;
2077        let _ = meta;
2078        let _ = event;
2079    }
2080    #[inline]
2081    fn on_packet_skipped(
2082        &mut self,
2083        context: &mut Self::ConnectionContext,
2084        meta: &api::ConnectionMeta,
2085        event: &api::PacketSkipped,
2086    ) {
2087        #[allow(unused_imports)]
2088        use api::*;
2089        self.count(3usize, 3usize, 1usize);
2090        let _ = context;
2091        let _ = meta;
2092        let _ = event;
2093    }
2094    #[inline]
2095    fn on_packet_sent(
2096        &mut self,
2097        context: &mut Self::ConnectionContext,
2098        meta: &api::ConnectionMeta,
2099        event: &api::PacketSent,
2100    ) {
2101        #[allow(unused_imports)]
2102        use api::*;
2103        self.count(4usize, 4usize, 1usize);
2104        self.count_nominal(5usize, 0usize, &event.packet_header);
2105        self.count(6usize, 5usize, event.packet_len);
2106        self.measure(7usize, 0usize, event.packet_len);
2107        let _ = context;
2108        let _ = meta;
2109        let _ = event;
2110    }
2111    #[inline]
2112    fn on_packet_received(
2113        &mut self,
2114        context: &mut Self::ConnectionContext,
2115        meta: &api::ConnectionMeta,
2116        event: &api::PacketReceived,
2117    ) {
2118        #[allow(unused_imports)]
2119        use api::*;
2120        self.count(8usize, 6usize, 1usize);
2121        self.count_nominal(9usize, 1usize, &event.packet_header);
2122        let _ = context;
2123        let _ = meta;
2124        let _ = event;
2125    }
2126    #[inline]
2127    fn on_active_path_updated(
2128        &mut self,
2129        context: &mut Self::ConnectionContext,
2130        meta: &api::ConnectionMeta,
2131        event: &api::ActivePathUpdated,
2132    ) {
2133        #[allow(unused_imports)]
2134        use api::*;
2135        self.count(10usize, 7usize, 1usize);
2136        let _ = context;
2137        let _ = meta;
2138        let _ = event;
2139    }
2140    #[inline]
2141    fn on_path_created(
2142        &mut self,
2143        context: &mut Self::ConnectionContext,
2144        meta: &api::ConnectionMeta,
2145        event: &api::PathCreated,
2146    ) {
2147        #[allow(unused_imports)]
2148        use api::*;
2149        self.count(11usize, 8usize, 1usize);
2150        let _ = context;
2151        let _ = meta;
2152        let _ = event;
2153    }
2154    #[inline]
2155    fn on_frame_sent(
2156        &mut self,
2157        context: &mut Self::ConnectionContext,
2158        meta: &api::ConnectionMeta,
2159        event: &api::FrameSent,
2160    ) {
2161        #[allow(unused_imports)]
2162        use api::*;
2163        self.count(12usize, 9usize, 1usize);
2164        self.count_nominal(13usize, 2usize, &event.packet_header);
2165        self.count_nominal(14usize, 3usize, &event.frame);
2166        let _ = context;
2167        let _ = meta;
2168        let _ = event;
2169    }
2170    #[inline]
2171    fn on_frame_received(
2172        &mut self,
2173        context: &mut Self::ConnectionContext,
2174        meta: &api::ConnectionMeta,
2175        event: &api::FrameReceived,
2176    ) {
2177        #[allow(unused_imports)]
2178        use api::*;
2179        self.count(15usize, 10usize, 1usize);
2180        self.count_nominal(16usize, 4usize, &event.packet_header);
2181        self.count_nominal(17usize, 5usize, &event.frame);
2182        let _ = context;
2183        let _ = meta;
2184        let _ = event;
2185    }
2186    #[inline]
2187    fn on_connection_close_frame_received(
2188        &mut self,
2189        context: &mut Self::ConnectionContext,
2190        meta: &api::ConnectionMeta,
2191        event: &api::ConnectionCloseFrameReceived,
2192    ) {
2193        #[allow(unused_imports)]
2194        use api::*;
2195        self.count(18usize, 11usize, 1usize);
2196        self.count_nominal(19usize, 6usize, &event.packet_header);
2197        let _ = context;
2198        let _ = meta;
2199        let _ = event;
2200    }
2201    #[inline]
2202    fn on_packet_lost(
2203        &mut self,
2204        context: &mut Self::ConnectionContext,
2205        meta: &api::ConnectionMeta,
2206        event: &api::PacketLost,
2207    ) {
2208        #[allow(unused_imports)]
2209        use api::*;
2210        self.count(20usize, 12usize, 1usize);
2211        self.count_nominal(21usize, 7usize, &event.packet_header);
2212        self.count(22usize, 13usize, event.bytes_lost);
2213        self.measure(23usize, 1usize, event.bytes_lost);
2214        self.count_bool(24usize, 0usize, event.is_mtu_probe);
2215        let _ = context;
2216        let _ = meta;
2217        let _ = event;
2218    }
2219    #[inline]
2220    fn on_recovery_metrics(
2221        &mut self,
2222        context: &mut Self::ConnectionContext,
2223        meta: &api::ConnectionMeta,
2224        event: &api::RecoveryMetrics,
2225    ) {
2226        #[allow(unused_imports)]
2227        use api::*;
2228        self.count(25usize, 14usize, 1usize);
2229        self.measure(26usize, 2usize, event.min_rtt);
2230        self.measure(27usize, 3usize, event.smoothed_rtt);
2231        self.measure(28usize, 4usize, event.latest_rtt);
2232        self.measure(29usize, 5usize, event.rtt_variance);
2233        self.measure(30usize, 6usize, event.max_ack_delay);
2234        self.measure(31usize, 7usize, event.pto_count);
2235        self.measure(32usize, 8usize, event.congestion_window);
2236        self.measure(33usize, 9usize, event.bytes_in_flight);
2237        self.count_bool(34usize, 1usize, event.congestion_limited);
2238        let _ = context;
2239        let _ = meta;
2240        let _ = event;
2241    }
2242    #[inline]
2243    fn on_congestion(
2244        &mut self,
2245        context: &mut Self::ConnectionContext,
2246        meta: &api::ConnectionMeta,
2247        event: &api::Congestion,
2248    ) {
2249        #[allow(unused_imports)]
2250        use api::*;
2251        self.count(35usize, 15usize, 1usize);
2252        self.count_nominal(36usize, 8usize, &event.source);
2253        let _ = context;
2254        let _ = meta;
2255        let _ = event;
2256    }
2257    #[inline]
2258    fn on_rx_ack_range_dropped(
2259        &mut self,
2260        context: &mut Self::ConnectionContext,
2261        meta: &api::ConnectionMeta,
2262        event: &api::RxAckRangeDropped,
2263    ) {
2264        #[allow(unused_imports)]
2265        use api::*;
2266        self.count(37usize, 16usize, 1usize);
2267        let _ = context;
2268        let _ = meta;
2269        let _ = event;
2270    }
2271    #[inline]
2272    fn on_ack_range_received(
2273        &mut self,
2274        context: &mut Self::ConnectionContext,
2275        meta: &api::ConnectionMeta,
2276        event: &api::AckRangeReceived,
2277    ) {
2278        #[allow(unused_imports)]
2279        use api::*;
2280        self.count(38usize, 17usize, 1usize);
2281        self.count_nominal(39usize, 9usize, &event.packet_header);
2282        let _ = context;
2283        let _ = meta;
2284        let _ = event;
2285    }
2286    #[inline]
2287    fn on_ack_range_sent(
2288        &mut self,
2289        context: &mut Self::ConnectionContext,
2290        meta: &api::ConnectionMeta,
2291        event: &api::AckRangeSent,
2292    ) {
2293        #[allow(unused_imports)]
2294        use api::*;
2295        self.count(40usize, 18usize, 1usize);
2296        self.count_nominal(41usize, 10usize, &event.packet_header);
2297        let _ = context;
2298        let _ = meta;
2299        let _ = event;
2300    }
2301    #[inline]
2302    fn on_packet_dropped(
2303        &mut self,
2304        context: &mut Self::ConnectionContext,
2305        meta: &api::ConnectionMeta,
2306        event: &api::PacketDropped,
2307    ) {
2308        #[allow(unused_imports)]
2309        use api::*;
2310        self.count(42usize, 19usize, 1usize);
2311        self.count_nominal(43usize, 11usize, &event.reason);
2312        let _ = context;
2313        let _ = meta;
2314        let _ = event;
2315    }
2316    #[inline]
2317    fn on_key_update(
2318        &mut self,
2319        context: &mut Self::ConnectionContext,
2320        meta: &api::ConnectionMeta,
2321        event: &api::KeyUpdate,
2322    ) {
2323        #[allow(unused_imports)]
2324        use api::*;
2325        self.count(44usize, 20usize, 1usize);
2326        self.count_nominal(45usize, 12usize, &event.key_type);
2327        self.count_nominal(46usize, 13usize, &event.cipher_suite);
2328        let _ = context;
2329        let _ = meta;
2330        let _ = event;
2331    }
2332    #[inline]
2333    fn on_key_space_discarded(
2334        &mut self,
2335        context: &mut Self::ConnectionContext,
2336        meta: &api::ConnectionMeta,
2337        event: &api::KeySpaceDiscarded,
2338    ) {
2339        #[allow(unused_imports)]
2340        use api::*;
2341        self.count(47usize, 21usize, 1usize);
2342        {
2343            fn check(evt: &api::KeySpaceDiscarded) -> bool {
2344                matches!(evt.space, KeySpace::Initial { .. })
2345            }
2346            if check(event) {
2347                self.time(
2348                    48usize,
2349                    0usize,
2350                    meta.timestamp.saturating_duration_since(context.start_time),
2351                );
2352            }
2353        }
2354        {
2355            fn check(evt: &api::KeySpaceDiscarded) -> bool {
2356                matches!(evt.space, KeySpace::Handshake { .. })
2357            }
2358            if check(event) {
2359                self.time(
2360                    49usize,
2361                    1usize,
2362                    meta.timestamp.saturating_duration_since(context.start_time),
2363                );
2364            }
2365        }
2366        {
2367            fn check(evt: &api::KeySpaceDiscarded) -> bool {
2368                matches!(evt.space, KeySpace::OneRtt { .. })
2369            }
2370            if check(event) {
2371                self.time(
2372                    50usize,
2373                    2usize,
2374                    meta.timestamp.saturating_duration_since(context.start_time),
2375                );
2376            }
2377        }
2378        self.count_nominal(51usize, 14usize, &event.space);
2379        let _ = context;
2380        let _ = meta;
2381        let _ = event;
2382    }
2383    #[inline]
2384    fn on_connection_started(
2385        &mut self,
2386        context: &mut Self::ConnectionContext,
2387        meta: &api::ConnectionMeta,
2388        event: &api::ConnectionStarted,
2389    ) {
2390        #[allow(unused_imports)]
2391        use api::*;
2392        self.count(52usize, 22usize, 1usize);
2393        let _ = context;
2394        let _ = meta;
2395        let _ = event;
2396    }
2397    #[inline]
2398    fn on_duplicate_packet(
2399        &mut self,
2400        context: &mut Self::ConnectionContext,
2401        meta: &api::ConnectionMeta,
2402        event: &api::DuplicatePacket,
2403    ) {
2404        #[allow(unused_imports)]
2405        use api::*;
2406        self.count(53usize, 23usize, 1usize);
2407        self.count_nominal(54usize, 15usize, &event.packet_header);
2408        self.count_nominal(55usize, 16usize, &event.error);
2409        let _ = context;
2410        let _ = meta;
2411        let _ = event;
2412    }
2413    #[inline]
2414    fn on_transport_parameters_received(
2415        &mut self,
2416        context: &mut Self::ConnectionContext,
2417        meta: &api::ConnectionMeta,
2418        event: &api::TransportParametersReceived,
2419    ) {
2420        #[allow(unused_imports)]
2421        use api::*;
2422        self.count(56usize, 24usize, 1usize);
2423        self.time(
2424            57usize,
2425            3usize,
2426            meta.timestamp.saturating_duration_since(context.start_time),
2427        );
2428        let _ = context;
2429        let _ = meta;
2430        let _ = event;
2431    }
2432    #[inline]
2433    fn on_datagram_sent(
2434        &mut self,
2435        context: &mut Self::ConnectionContext,
2436        meta: &api::ConnectionMeta,
2437        event: &api::DatagramSent,
2438    ) {
2439        #[allow(unused_imports)]
2440        use api::*;
2441        self.count(58usize, 25usize, 1usize);
2442        self.count(59usize, 26usize, event.len);
2443        self.measure(60usize, 10usize, event.len);
2444        self.measure(61usize, 11usize, event.gso_offset);
2445        let _ = context;
2446        let _ = meta;
2447        let _ = event;
2448    }
2449    #[inline]
2450    fn on_datagram_received(
2451        &mut self,
2452        context: &mut Self::ConnectionContext,
2453        meta: &api::ConnectionMeta,
2454        event: &api::DatagramReceived,
2455    ) {
2456        #[allow(unused_imports)]
2457        use api::*;
2458        self.count(62usize, 27usize, 1usize);
2459        self.count(63usize, 28usize, event.len);
2460        self.measure(64usize, 12usize, event.len);
2461        let _ = context;
2462        let _ = meta;
2463        let _ = event;
2464    }
2465    #[inline]
2466    fn on_datagram_dropped(
2467        &mut self,
2468        context: &mut Self::ConnectionContext,
2469        meta: &api::ConnectionMeta,
2470        event: &api::DatagramDropped,
2471    ) {
2472        #[allow(unused_imports)]
2473        use api::*;
2474        self.count(65usize, 29usize, 1usize);
2475        self.count(66usize, 30usize, event.len);
2476        self.measure(67usize, 13usize, event.len);
2477        self.count_nominal(68usize, 17usize, &event.reason);
2478        let _ = context;
2479        let _ = meta;
2480        let _ = event;
2481    }
2482    #[inline]
2483    fn on_handshake_remote_address_change_observed(
2484        &mut self,
2485        context: &mut Self::ConnectionContext,
2486        meta: &api::ConnectionMeta,
2487        event: &api::HandshakeRemoteAddressChangeObserved,
2488    ) {
2489        #[allow(unused_imports)]
2490        use api::*;
2491        self.count(69usize, 31usize, 1usize);
2492        let _ = context;
2493        let _ = meta;
2494        let _ = event;
2495    }
2496    #[inline]
2497    fn on_connection_id_updated(
2498        &mut self,
2499        context: &mut Self::ConnectionContext,
2500        meta: &api::ConnectionMeta,
2501        event: &api::ConnectionIdUpdated,
2502    ) {
2503        #[allow(unused_imports)]
2504        use api::*;
2505        self.count(70usize, 32usize, 1usize);
2506        let _ = context;
2507        let _ = meta;
2508        let _ = event;
2509    }
2510    #[inline]
2511    fn on_ecn_state_changed(
2512        &mut self,
2513        context: &mut Self::ConnectionContext,
2514        meta: &api::ConnectionMeta,
2515        event: &api::EcnStateChanged,
2516    ) {
2517        #[allow(unused_imports)]
2518        use api::*;
2519        self.count(71usize, 33usize, 1usize);
2520        self.count_nominal(72usize, 18usize, &event.state);
2521        let _ = context;
2522        let _ = meta;
2523        let _ = event;
2524    }
2525    #[inline]
2526    fn on_connection_migration_denied(
2527        &mut self,
2528        context: &mut Self::ConnectionContext,
2529        meta: &api::ConnectionMeta,
2530        event: &api::ConnectionMigrationDenied,
2531    ) {
2532        #[allow(unused_imports)]
2533        use api::*;
2534        self.count(73usize, 34usize, 1usize);
2535        self.count_nominal(74usize, 19usize, &event.reason);
2536        let _ = context;
2537        let _ = meta;
2538        let _ = event;
2539    }
2540    #[inline]
2541    fn on_handshake_status_updated(
2542        &mut self,
2543        context: &mut Self::ConnectionContext,
2544        meta: &api::ConnectionMeta,
2545        event: &api::HandshakeStatusUpdated,
2546    ) {
2547        #[allow(unused_imports)]
2548        use api::*;
2549        self.count(75usize, 35usize, 1usize);
2550        {
2551            fn check(evt: &api::HandshakeStatusUpdated) -> bool {
2552                matches!(evt.status, HandshakeStatus::Complete { .. })
2553            }
2554            if check(event) {
2555                self.time(
2556                    76usize,
2557                    4usize,
2558                    meta.timestamp.saturating_duration_since(context.start_time),
2559                );
2560            }
2561        }
2562        {
2563            fn check(evt: &api::HandshakeStatusUpdated) -> bool {
2564                matches!(evt.status, HandshakeStatus::Confirmed { .. })
2565            }
2566            if check(event) {
2567                self.time(
2568                    77usize,
2569                    5usize,
2570                    meta.timestamp.saturating_duration_since(context.start_time),
2571                );
2572            }
2573        }
2574        {
2575            fn check(evt: &api::HandshakeStatusUpdated) -> bool {
2576                matches!(evt.status, HandshakeStatus::HandshakeDoneAcked { .. })
2577            }
2578            if check(event) {
2579                self.time(
2580                    78usize,
2581                    6usize,
2582                    meta.timestamp.saturating_duration_since(context.start_time),
2583                );
2584            }
2585        }
2586        self.count_nominal(79usize, 20usize, &event.status);
2587        let _ = context;
2588        let _ = meta;
2589        let _ = event;
2590    }
2591    #[inline]
2592    fn on_tls_exporter_ready(
2593        &mut self,
2594        context: &mut Self::ConnectionContext,
2595        meta: &api::ConnectionMeta,
2596        event: &api::TlsExporterReady,
2597    ) {
2598        #[allow(unused_imports)]
2599        use api::*;
2600        self.count(80usize, 36usize, 1usize);
2601        let _ = context;
2602        let _ = meta;
2603        let _ = event;
2604    }
2605    #[inline]
2606    fn on_tls_handshake_failed(
2607        &mut self,
2608        context: &mut Self::ConnectionContext,
2609        meta: &api::ConnectionMeta,
2610        event: &api::TlsHandshakeFailed,
2611    ) {
2612        #[allow(unused_imports)]
2613        use api::*;
2614        self.count(81usize, 37usize, 1usize);
2615        let _ = context;
2616        let _ = meta;
2617        let _ = event;
2618    }
2619    #[inline]
2620    fn on_path_challenge_updated(
2621        &mut self,
2622        context: &mut Self::ConnectionContext,
2623        meta: &api::ConnectionMeta,
2624        event: &api::PathChallengeUpdated,
2625    ) {
2626        #[allow(unused_imports)]
2627        use api::*;
2628        self.count(82usize, 38usize, 1usize);
2629        self.count_nominal(83usize, 21usize, &event.path_challenge_status);
2630        let _ = context;
2631        let _ = meta;
2632        let _ = event;
2633    }
2634    #[inline]
2635    fn on_tls_client_hello(
2636        &mut self,
2637        context: &mut Self::ConnectionContext,
2638        meta: &api::ConnectionMeta,
2639        event: &api::TlsClientHello,
2640    ) {
2641        #[allow(unused_imports)]
2642        use api::*;
2643        self.count(84usize, 39usize, 1usize);
2644        self.time(
2645            85usize,
2646            7usize,
2647            meta.timestamp.saturating_duration_since(context.start_time),
2648        );
2649        let _ = context;
2650        let _ = meta;
2651        let _ = event;
2652    }
2653    #[inline]
2654    fn on_tls_server_hello(
2655        &mut self,
2656        context: &mut Self::ConnectionContext,
2657        meta: &api::ConnectionMeta,
2658        event: &api::TlsServerHello,
2659    ) {
2660        #[allow(unused_imports)]
2661        use api::*;
2662        self.count(86usize, 40usize, 1usize);
2663        self.time(
2664            87usize,
2665            8usize,
2666            meta.timestamp.saturating_duration_since(context.start_time),
2667        );
2668        let _ = context;
2669        let _ = meta;
2670        let _ = event;
2671    }
2672    #[inline]
2673    fn on_rx_stream_progress(
2674        &mut self,
2675        context: &mut Self::ConnectionContext,
2676        meta: &api::ConnectionMeta,
2677        event: &api::RxStreamProgress,
2678    ) {
2679        #[allow(unused_imports)]
2680        use api::*;
2681        self.count(88usize, 41usize, 1usize);
2682        self.count(89usize, 42usize, event.bytes);
2683        self.measure(90usize, 14usize, event.bytes);
2684        let _ = context;
2685        let _ = meta;
2686        let _ = event;
2687    }
2688    #[inline]
2689    fn on_tx_stream_progress(
2690        &mut self,
2691        context: &mut Self::ConnectionContext,
2692        meta: &api::ConnectionMeta,
2693        event: &api::TxStreamProgress,
2694    ) {
2695        #[allow(unused_imports)]
2696        use api::*;
2697        self.count(91usize, 43usize, 1usize);
2698        self.count(92usize, 44usize, event.bytes);
2699        self.measure(93usize, 15usize, event.bytes);
2700        let _ = context;
2701        let _ = meta;
2702        let _ = event;
2703    }
2704    #[inline]
2705    fn on_keep_alive_timer_expired(
2706        &mut self,
2707        context: &mut Self::ConnectionContext,
2708        meta: &api::ConnectionMeta,
2709        event: &api::KeepAliveTimerExpired,
2710    ) {
2711        #[allow(unused_imports)]
2712        use api::*;
2713        self.count(94usize, 45usize, 1usize);
2714        let _ = context;
2715        let _ = meta;
2716        let _ = event;
2717    }
2718    #[inline]
2719    fn on_mtu_updated(
2720        &mut self,
2721        context: &mut Self::ConnectionContext,
2722        meta: &api::ConnectionMeta,
2723        event: &api::MtuUpdated,
2724    ) {
2725        #[allow(unused_imports)]
2726        use api::*;
2727        self.count(95usize, 46usize, 1usize);
2728        self.measure(96usize, 16usize, event.mtu);
2729        self.count_nominal(97usize, 22usize, &event.cause);
2730        self.count_bool(98usize, 2usize, event.search_complete);
2731        let _ = context;
2732        let _ = meta;
2733        let _ = event;
2734    }
2735    #[inline]
2736    fn on_mtu_probing_complete_received(
2737        &mut self,
2738        context: &mut Self::ConnectionContext,
2739        meta: &api::ConnectionMeta,
2740        event: &api::MtuProbingCompleteReceived,
2741    ) {
2742        #[allow(unused_imports)]
2743        use api::*;
2744        self.count(99usize, 47usize, 1usize);
2745        self.count_nominal(100usize, 23usize, &event.packet_header);
2746        self.measure(101usize, 17usize, event.mtu);
2747        let _ = context;
2748        let _ = meta;
2749        let _ = event;
2750    }
2751    #[inline]
2752    fn on_slow_start_exited(
2753        &mut self,
2754        context: &mut Self::ConnectionContext,
2755        meta: &api::ConnectionMeta,
2756        event: &api::SlowStartExited,
2757    ) {
2758        #[allow(unused_imports)]
2759        use api::*;
2760        self.count(102usize, 48usize, 1usize);
2761        self.count_nominal(103usize, 24usize, &event.cause);
2762        self.time_nominal(
2763            104usize,
2764            0usize,
2765            &event.cause,
2766            meta.timestamp.saturating_duration_since(context.start_time),
2767        );
2768        self.measure(105usize, 18usize, event.congestion_window);
2769        let _ = context;
2770        let _ = meta;
2771        let _ = event;
2772    }
2773    #[inline]
2774    fn on_delivery_rate_sampled(
2775        &mut self,
2776        context: &mut Self::ConnectionContext,
2777        meta: &api::ConnectionMeta,
2778        event: &api::DeliveryRateSampled,
2779    ) {
2780        #[allow(unused_imports)]
2781        use api::*;
2782        self.count(106usize, 49usize, 1usize);
2783        let _ = context;
2784        let _ = meta;
2785        let _ = event;
2786    }
2787    #[inline]
2788    fn on_pacing_rate_updated(
2789        &mut self,
2790        context: &mut Self::ConnectionContext,
2791        meta: &api::ConnectionMeta,
2792        event: &api::PacingRateUpdated,
2793    ) {
2794        #[allow(unused_imports)]
2795        use api::*;
2796        self.count(107usize, 50usize, 1usize);
2797        self.measure(108usize, 19usize, event.bytes_per_second);
2798        self.measure(109usize, 20usize, event.burst_size);
2799        self.measure(110usize, 21usize, event.pacing_gain);
2800        let _ = context;
2801        let _ = meta;
2802        let _ = event;
2803    }
2804    #[inline]
2805    fn on_bbr_state_changed(
2806        &mut self,
2807        context: &mut Self::ConnectionContext,
2808        meta: &api::ConnectionMeta,
2809        event: &api::BbrStateChanged,
2810    ) {
2811        #[allow(unused_imports)]
2812        use api::*;
2813        self.count(111usize, 51usize, 1usize);
2814        self.count_nominal(112usize, 25usize, &event.state);
2815        let _ = context;
2816        let _ = meta;
2817        let _ = event;
2818    }
2819    #[inline]
2820    fn on_dc_state_changed(
2821        &mut self,
2822        context: &mut Self::ConnectionContext,
2823        meta: &api::ConnectionMeta,
2824        event: &api::DcStateChanged,
2825    ) {
2826        #[allow(unused_imports)]
2827        use api::*;
2828        self.count(113usize, 52usize, 1usize);
2829        {
2830            fn check(evt: &api::DcStateChanged) -> bool {
2831                matches!(evt.state, DcState::VersionNegotiated { .. })
2832            }
2833            if check(event) {
2834                self.time(
2835                    114usize,
2836                    9usize,
2837                    meta.timestamp.saturating_duration_since(context.start_time),
2838                );
2839            }
2840        }
2841        {
2842            fn check(evt: &api::DcStateChanged) -> bool {
2843                matches!(evt.state, DcState::VersionNegotiated { .. })
2844            }
2845            if check(event) {
2846                self.time(
2847                    115usize,
2848                    10usize,
2849                    meta.timestamp.saturating_duration_since(context.start_time),
2850                );
2851            }
2852        }
2853        {
2854            fn check(evt: &api::DcStateChanged) -> bool {
2855                matches!(evt.state, DcState::PathSecretsReady { .. })
2856            }
2857            if check(event) {
2858                self.time(
2859                    116usize,
2860                    11usize,
2861                    meta.timestamp.saturating_duration_since(context.start_time),
2862                );
2863            }
2864        }
2865        {
2866            fn check(evt: &api::DcStateChanged) -> bool {
2867                matches!(evt.state, DcState::Complete { .. })
2868            }
2869            if check(event) {
2870                self.time(
2871                    117usize,
2872                    12usize,
2873                    meta.timestamp.saturating_duration_since(context.start_time),
2874                );
2875            }
2876        }
2877        self.count_nominal(118usize, 26usize, &event.state);
2878        let _ = context;
2879        let _ = meta;
2880        let _ = event;
2881    }
2882    #[inline]
2883    fn on_dc_path_created(
2884        &mut self,
2885        context: &mut Self::ConnectionContext,
2886        meta: &api::ConnectionMeta,
2887        event: &api::DcPathCreated,
2888    ) {
2889        #[allow(unused_imports)]
2890        use api::*;
2891        self.count(119usize, 53usize, 1usize);
2892        let _ = context;
2893        let _ = meta;
2894        let _ = event;
2895    }
2896    #[inline]
2897    fn on_connection_closed(
2898        &mut self,
2899        context: &mut Self::ConnectionContext,
2900        meta: &api::ConnectionMeta,
2901        event: &api::ConnectionClosed,
2902    ) {
2903        #[allow(unused_imports)]
2904        use api::*;
2905        self.count(120usize, 54usize, 1usize);
2906        self.time(
2907            121usize,
2908            13usize,
2909            meta.timestamp.saturating_duration_since(context.start_time),
2910        );
2911        self.count_nominal(122usize, 27usize, &event.error);
2912        let _ = context;
2913        let _ = meta;
2914        let _ = event;
2915    }
2916    #[inline]
2917    fn on_version_information(
2918        &mut self,
2919        meta: &api::EndpointMeta,
2920        event: &api::VersionInformation,
2921    ) {
2922        #[allow(unused_imports)]
2923        use api::*;
2924        self.count(123usize, 55usize, 1usize);
2925        let _ = event;
2926        let _ = meta;
2927    }
2928    #[inline]
2929    fn on_endpoint_packet_sent(
2930        &mut self,
2931        meta: &api::EndpointMeta,
2932        event: &api::EndpointPacketSent,
2933    ) {
2934        #[allow(unused_imports)]
2935        use api::*;
2936        self.count(124usize, 56usize, 1usize);
2937        let _ = event;
2938        let _ = meta;
2939    }
2940    #[inline]
2941    fn on_endpoint_packet_received(
2942        &mut self,
2943        meta: &api::EndpointMeta,
2944        event: &api::EndpointPacketReceived,
2945    ) {
2946        #[allow(unused_imports)]
2947        use api::*;
2948        self.count(125usize, 57usize, 1usize);
2949        let _ = event;
2950        let _ = meta;
2951    }
2952    #[inline]
2953    fn on_endpoint_datagram_sent(
2954        &mut self,
2955        meta: &api::EndpointMeta,
2956        event: &api::EndpointDatagramSent,
2957    ) {
2958        #[allow(unused_imports)]
2959        use api::*;
2960        self.count(126usize, 58usize, 1usize);
2961        self.measure(127usize, 22usize, event.len);
2962        self.measure(128usize, 23usize, event.len);
2963        self.measure(129usize, 24usize, event.gso_offset);
2964        let _ = event;
2965        let _ = meta;
2966    }
2967    #[inline]
2968    fn on_endpoint_datagram_received(
2969        &mut self,
2970        meta: &api::EndpointMeta,
2971        event: &api::EndpointDatagramReceived,
2972    ) {
2973        #[allow(unused_imports)]
2974        use api::*;
2975        self.count(130usize, 59usize, 1usize);
2976        self.measure(131usize, 25usize, event.len);
2977        self.measure(132usize, 26usize, event.len);
2978        let _ = event;
2979        let _ = meta;
2980    }
2981    #[inline]
2982    fn on_endpoint_datagram_dropped(
2983        &mut self,
2984        meta: &api::EndpointMeta,
2985        event: &api::EndpointDatagramDropped,
2986    ) {
2987        #[allow(unused_imports)]
2988        use api::*;
2989        self.count(133usize, 60usize, 1usize);
2990        self.measure(134usize, 27usize, event.len);
2991        self.measure(135usize, 28usize, event.len);
2992        self.count_nominal(136usize, 28usize, &event.reason);
2993        let _ = event;
2994        let _ = meta;
2995    }
2996    #[inline]
2997    fn on_endpoint_connection_attempt_failed(
2998        &mut self,
2999        meta: &api::EndpointMeta,
3000        event: &api::EndpointConnectionAttemptFailed,
3001    ) {
3002        #[allow(unused_imports)]
3003        use api::*;
3004        self.count(137usize, 61usize, 1usize);
3005        self.count_nominal(138usize, 29usize, &event.error);
3006        let _ = event;
3007        let _ = meta;
3008    }
3009    #[inline]
3010    fn on_endpoint_connection_attempt_deduplicated(
3011        &mut self,
3012        meta: &api::EndpointMeta,
3013        event: &api::EndpointConnectionAttemptDeduplicated,
3014    ) {
3015        #[allow(unused_imports)]
3016        use api::*;
3017        self.count(139usize, 62usize, 1usize);
3018        let _ = event;
3019        let _ = meta;
3020    }
3021    #[inline]
3022    fn on_platform_tx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTx) {
3023        #[allow(unused_imports)]
3024        use api::*;
3025        self.count(140usize, 63usize, 1usize);
3026        self.count(141usize, 64usize, event.count);
3027        self.measure(142usize, 29usize, event.count);
3028        self.count(143usize, 65usize, event.syscalls);
3029        self.measure(144usize, 30usize, event.syscalls);
3030        self.count(145usize, 66usize, event.blocked_syscalls);
3031        self.measure(146usize, 31usize, event.blocked_syscalls);
3032        self.count(147usize, 67usize, event.total_errors);
3033        self.measure(148usize, 32usize, event.total_errors);
3034        self.count(149usize, 68usize, event.dropped_errors);
3035        self.measure(150usize, 33usize, event.dropped_errors);
3036        let _ = event;
3037        let _ = meta;
3038    }
3039    #[inline]
3040    fn on_platform_tx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTxError) {
3041        #[allow(unused_imports)]
3042        use api::*;
3043        self.count(151usize, 69usize, 1usize);
3044        let _ = event;
3045        let _ = meta;
3046    }
3047    #[inline]
3048    fn on_platform_rx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRx) {
3049        #[allow(unused_imports)]
3050        use api::*;
3051        self.count(152usize, 70usize, 1usize);
3052        self.count(153usize, 71usize, event.count);
3053        self.measure(154usize, 34usize, event.count);
3054        self.count(155usize, 72usize, event.syscalls);
3055        self.measure(156usize, 35usize, event.syscalls);
3056        self.count(157usize, 73usize, event.blocked_syscalls);
3057        self.measure(158usize, 36usize, event.blocked_syscalls);
3058        self.count(159usize, 74usize, event.total_errors);
3059        self.measure(160usize, 37usize, event.total_errors);
3060        self.count(161usize, 75usize, event.dropped_errors);
3061        self.measure(162usize, 38usize, event.dropped_errors);
3062        let _ = event;
3063        let _ = meta;
3064    }
3065    #[inline]
3066    fn on_platform_rx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRxError) {
3067        #[allow(unused_imports)]
3068        use api::*;
3069        self.count(163usize, 76usize, 1usize);
3070        let _ = event;
3071        let _ = meta;
3072    }
3073    #[inline]
3074    fn on_platform_feature_configured(
3075        &mut self,
3076        meta: &api::EndpointMeta,
3077        event: &api::PlatformFeatureConfigured,
3078    ) {
3079        #[allow(unused_imports)]
3080        use api::*;
3081        self.count(164usize, 77usize, 1usize);
3082        let _ = event;
3083        let _ = meta;
3084    }
3085    #[inline]
3086    fn on_platform_event_loop_wakeup(
3087        &mut self,
3088        meta: &api::EndpointMeta,
3089        event: &api::PlatformEventLoopWakeup,
3090    ) {
3091        #[allow(unused_imports)]
3092        use api::*;
3093        self.count(165usize, 78usize, 1usize);
3094        let _ = event;
3095        let _ = meta;
3096    }
3097    #[inline]
3098    fn on_platform_event_loop_sleep(
3099        &mut self,
3100        meta: &api::EndpointMeta,
3101        event: &api::PlatformEventLoopSleep,
3102    ) {
3103        #[allow(unused_imports)]
3104        use api::*;
3105        self.count(166usize, 79usize, 1usize);
3106        self.time(167usize, 14usize, event.processing_duration);
3107        let _ = event;
3108        let _ = meta;
3109    }
3110    #[inline]
3111    fn on_platform_event_loop_started(
3112        &mut self,
3113        meta: &api::EndpointMeta,
3114        event: &api::PlatformEventLoopStarted,
3115    ) {
3116        #[allow(unused_imports)]
3117        use api::*;
3118        self.count(168usize, 80usize, 1usize);
3119        let _ = event;
3120        let _ = meta;
3121    }
3122}