LCOV - code coverage report
Current view: top level - waltz/quic - fd_quic_pkt_meta.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 52 52 100.0 %
Date: 2025-10-27 04:40:00 Functions: 7 7 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      631176 :                                fd_quic_pkt_meta_t         * pool ) {
       7     3155880 :   for( ulong enc_level=0; enc_level<4; enc_level++ ) {
       8     2524704 :     void* mem = fd_quic_pkt_meta_treap_new( &tracker->sent_pkt_metas[enc_level],
       9     2524704 :                                             total_meta_cnt );
      10     2524704 :     mem = fd_quic_pkt_meta_treap_join( mem );
      11     2524704 :     if( FD_UNLIKELY( !mem ) ) return NULL;
      12     2524704 :   }
      13      631176 :   tracker->pool = pool;
      14             : 
      15      631176 :   return tracker;
      16      631176 : }
      17             : 
      18             : void
      19             : fd_quic_pkt_meta_ds_init_pool( fd_quic_pkt_meta_t * pool,
      20        3399 :                                ulong                total_meta_cnt ) {
      21        3399 :   fd_quic_pkt_meta_treap_seed( pool, total_meta_cnt, (ulong)fd_tickcount() );
      22        3399 : }
      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    17592822 :                          fd_quic_pkt_meta_t    * pool ) {
      28    17592822 :   fd_quic_pkt_meta_treap_ele_insert( ds, pkt_meta, pool );
      29    17592822 : }
      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      294484 :                                ulong                   pkt_number_hi ) {
      37             : 
      38      294484 :   fd_quic_pkt_meta_ds_fwd_iter_t    l_iter =  fd_quic_pkt_meta_ds_idx_ge( ds, pkt_number_lo, pool );
      39      294484 :   fd_quic_pkt_meta_t              * prev   =  NULL;
      40      294484 :   ulong                        cnt_removed =  0;
      41             : 
      42      294484 :   for( fd_quic_pkt_meta_ds_fwd_iter_t iter = l_iter;
      43    17862942 :                                             !fd_quic_pkt_meta_ds_fwd_iter_done( iter );
      44    17568524 :                                             iter = fd_quic_pkt_meta_ds_fwd_iter_next( iter, pool ) ) {
      45    17568524 :     fd_quic_pkt_meta_t * e = fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      46    17568524 :     if( FD_UNLIKELY( e->key.pkt_num > pkt_number_hi ) ) break;
      47    17568458 :     if( FD_LIKELY( prev ) ) {
      48    17274043 :       fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      49    17274043 :       fd_quic_pkt_meta_pool_ele_release( pool, prev );
      50    17274043 :       cnt_removed++;
      51    17274043 :     }
      52    17568458 :     prev = e;
      53    17568458 :   }
      54      294484 :   if( FD_LIKELY( prev ) ) {
      55      294415 :     fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      56      294415 :     fd_quic_pkt_meta_pool_ele_release( pool, prev );
      57      294415 :     cnt_removed++;
      58      294415 :   }
      59      294484 :   return cnt_removed;
      60      294484 : }
      61             : 
      62             : void
      63             : fd_quic_pkt_meta_remove( fd_quic_pkt_meta_ds_t * ds,
      64             :                          fd_quic_pkt_meta_t    * pool,
      65          15 :                          fd_quic_pkt_meta_t    * pkt_meta ) {
      66          15 :   fd_quic_pkt_meta_treap_ele_remove( ds, pkt_meta, pool );
      67          15 :   fd_quic_pkt_meta_pool_ele_release( pool, pkt_meta );
      68          15 : }
      69             : 
      70             : fd_quic_pkt_meta_t *
      71             : fd_quic_pkt_meta_min( fd_quic_pkt_meta_ds_t * ds,
      72    71675429 :                       fd_quic_pkt_meta_t    * pool ) {
      73             : 
      74    71675429 :   fd_quic_pkt_meta_ds_fwd_iter_t iter = fd_quic_pkt_meta_ds_fwd_iter_init( ds, pool );
      75    71675429 :   if( FD_UNLIKELY( fd_quic_pkt_meta_ds_fwd_iter_done( iter ) ) ) return NULL;
      76    17262764 :   return fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      77    71675429 : }
      78             : 
      79             : void
      80             : fd_quic_pkt_meta_ds_clear( fd_quic_pkt_meta_tracker_t * tracker,
      81      105804 :                         uint                         enc_level ) {
      82      105804 :   ulong ele_max = fd_quic_pkt_meta_treap_ele_max( &tracker->sent_pkt_metas[enc_level] );
      83      105804 :   fd_quic_pkt_meta_treap_new( &tracker->sent_pkt_metas[enc_level], ele_max );
      84      105804 : }

Generated by: LCOV version 1.14