LCOV - code coverage report
Current view: top level - waltz/quic - fd_quic_pkt_meta.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 48 48 100.0 %
Date: 2025-07-14 05:02:59 Functions: 6 6 100.0 %

          Line data    Source code
       1             : #include "fd_quic_pkt_meta.h"
       2             : 
       3             : void *
       4             : fd_quic_pkt_meta_tracker_init( fd_quic_pkt_meta_tracker_t * tracker,
       5             :                                ulong                        total_meta_cnt,
       6      316671 :                                fd_quic_pkt_meta_t         * pool ) {
       7     1583355 :   for( ulong enc_level=0; enc_level<4; enc_level++ ) {
       8     1266684 :     void* mem = fd_quic_pkt_meta_treap_new( &tracker->sent_pkt_metas[enc_level],
       9     1266684 :                                             total_meta_cnt );
      10     1266684 :     mem = fd_quic_pkt_meta_treap_join( mem );
      11     1266684 :     if( FD_UNLIKELY( !mem ) ) return NULL;
      12     1266684 :   }
      13      316671 :   tracker->pool = pool;
      14             : 
      15      316671 :   return tracker;
      16      316671 : }
      17             : 
      18             : void
      19             : fd_quic_pkt_meta_ds_init_pool( fd_quic_pkt_meta_t * pool,
      20        3387 :                                ulong                total_meta_cnt ) {
      21        3387 :   fd_quic_pkt_meta_treap_seed( pool, total_meta_cnt, (ulong)fd_log_wallclock() );
      22        3387 : }
      23             : 
      24             : void
      25             : fd_quic_pkt_meta_insert( fd_quic_pkt_meta_ds_t * ds,
      26             :                          fd_quic_pkt_meta_t    * pkt_meta,
      27    13142738 :                          fd_quic_pkt_meta_t    * pool ) {
      28    13142738 :   fd_quic_pkt_meta_treap_ele_insert( ds, pkt_meta, pool );
      29    13142738 : }
      30             : 
      31             : 
      32             : ulong
      33             : fd_quic_pkt_meta_remove_range( fd_quic_pkt_meta_ds_t * ds,
      34             :                                fd_quic_pkt_meta_t    * pool,
      35             :                                ulong                   pkt_number_lo,
      36      247954 :                                ulong                   pkt_number_hi ) {
      37             : 
      38      247954 :   fd_quic_pkt_meta_ds_fwd_iter_t    l_iter =  fd_quic_pkt_meta_ds_idx_ge( ds, pkt_number_lo, pool );
      39      247954 :   fd_quic_pkt_meta_t              * prev   =  NULL;
      40      247954 :   ulong                        cnt_removed =  0;
      41             : 
      42      247954 :   for( fd_quic_pkt_meta_ds_fwd_iter_t iter = l_iter;
      43    13366330 :                                             !fd_quic_pkt_meta_ds_fwd_iter_done( iter );
      44    13124454 :                                             iter = fd_quic_pkt_meta_ds_fwd_iter_next( iter, pool ) ) {
      45    13124454 :     fd_quic_pkt_meta_t * e = fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      46    13124454 :     if( FD_UNLIKELY( e->key.pkt_num > pkt_number_hi ) ) break;
      47    13118376 :     if( FD_LIKELY( prev ) ) {
      48    12870491 :       fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      49    12870491 :       fd_quic_pkt_meta_pool_ele_release( pool, prev );
      50    12870491 :       cnt_removed++;
      51    12870491 :     }
      52    13118376 :     prev = e;
      53    13118376 :   }
      54      247954 :   if( FD_LIKELY( prev ) ) {
      55      247885 :     fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      56      247885 :     fd_quic_pkt_meta_pool_ele_release( pool, prev );
      57      247885 :     cnt_removed++;
      58      247885 :   }
      59      247954 :   return cnt_removed;
      60      247954 : }
      61             : 
      62             : fd_quic_pkt_meta_t *
      63             : fd_quic_pkt_meta_min( fd_quic_pkt_meta_ds_t * ds,
      64    53667052 :                       fd_quic_pkt_meta_t    * pool ) {
      65             : 
      66    53667052 :   fd_quic_pkt_meta_ds_fwd_iter_t iter = fd_quic_pkt_meta_ds_fwd_iter_init( ds, pool );
      67    53667052 :   if( FD_UNLIKELY( fd_quic_pkt_meta_ds_fwd_iter_done( iter ) ) ) return NULL;
      68    12901207 :   return fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      69    53667052 : }
      70             : 
      71             : void
      72             : fd_quic_pkt_meta_ds_clear( fd_quic_pkt_meta_tracker_t * tracker,
      73       48168 :                         uint                         enc_level ) {
      74       48168 :   ulong ele_max = fd_quic_pkt_meta_treap_ele_max( &tracker->sent_pkt_metas[enc_level] );
      75       48168 :   fd_quic_pkt_meta_treap_new( &tracker->sent_pkt_metas[enc_level], ele_max );
      76       48168 : }

Generated by: LCOV version 1.14