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-01 05:00:49 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    13337494 :                          fd_quic_pkt_meta_t    * pool ) {
      28    13337494 :   fd_quic_pkt_meta_treap_ele_insert( ds, pkt_meta, pool );
      29    13337494 : }
      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      251370 :                                ulong                   pkt_number_hi ) {
      37             : 
      38      251370 :   fd_quic_pkt_meta_ds_fwd_iter_t    l_iter =  fd_quic_pkt_meta_ds_idx_ge( ds, pkt_number_lo, pool );
      39      251370 :   fd_quic_pkt_meta_t              * prev   =  NULL;
      40      251370 :   ulong                        cnt_removed =  0;
      41             : 
      42      251370 :   for( fd_quic_pkt_meta_ds_fwd_iter_t iter = l_iter;
      43    13564458 :                                             !fd_quic_pkt_meta_ds_fwd_iter_done( iter );
      44    13319166 :                                             iter = fd_quic_pkt_meta_ds_fwd_iter_next( iter, pool ) ) {
      45    13319166 :     fd_quic_pkt_meta_t * e = fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      46    13319166 :     if( FD_UNLIKELY( e->key.pkt_num > pkt_number_hi ) ) break;
      47    13313088 :     if( FD_LIKELY( prev ) ) {
      48    13061787 :       fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      49    13061787 :       fd_quic_pkt_meta_pool_ele_release( pool, prev );
      50    13061787 :       cnt_removed++;
      51    13061787 :     }
      52    13313088 :     prev = e;
      53    13313088 :   }
      54      251370 :   if( FD_LIKELY( prev ) ) {
      55      251301 :     fd_quic_pkt_meta_treap_ele_remove( ds, prev, pool );
      56      251301 :     fd_quic_pkt_meta_pool_ele_release( pool, prev );
      57      251301 :     cnt_removed++;
      58      251301 :   }
      59      251370 :   return cnt_removed;
      60      251370 : }
      61             : 
      62             : fd_quic_pkt_meta_t *
      63             : fd_quic_pkt_meta_min( fd_quic_pkt_meta_ds_t * ds,
      64    54463144 :                       fd_quic_pkt_meta_t    * pool ) {
      65             : 
      66    54463144 :   fd_quic_pkt_meta_ds_fwd_iter_t iter = fd_quic_pkt_meta_ds_fwd_iter_init( ds, pool );
      67    54463144 :   if( FD_UNLIKELY( fd_quic_pkt_meta_ds_fwd_iter_done( iter ) ) ) return NULL;
      68    13092547 :   return fd_quic_pkt_meta_ds_fwd_iter_ele( iter, pool );
      69    54463144 : }
      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