LCOV - code coverage report
Current view: top level - choreo/votor - ag_parent_ready_tracker.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 5 5 100.0 %
Date: 2026-09-17 04:28:31 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef HEADER_fd_src_choreo_votor_ag_parent_ready_tracker_h
       2             : #define HEADER_fd_src_choreo_votor_ag_parent_ready_tracker_h
       3             : 
       4             : #include "ag_votor_base.h"
       5             : #include "ag_finality_tracker.h"
       6             : 
       7             : struct ag_parent_ready {
       8             :   ulong         slot;
       9             :   ag_block_id_t parent;
      10             : };
      11             : typedef struct ag_parent_ready ag_parent_ready_t;
      12             : 
      13             : struct ag_parent_ready_state {
      14             :   ulong slot; /* map key */
      15             :   ulong next; /* reserved for fd_pool, fd_map_chain */
      16             : 
      17             :   int skip;
      18             : 
      19             :   ag_block_hash_t notar_fallbacks[AG_NOTAR_FALLBACK_CERT_MAX];
      20             :   uchar           notar_fallbacks_cnt;
      21             : 
      22             :   int           is_ready;
      23             :   ag_block_id_t ready_ids[AG_SLOTS_PER_WINDOW*AG_NOTAR_FALLBACK_CERT_MAX];
      24             :   ulong         ready_id_cnt;
      25             : };
      26             : typedef struct ag_parent_ready_state ag_parent_ready_state_t;
      27             : 
      28             : #define POOL_NAME ag_parent_ready_state_pool
      29         294 : #define POOL_T    ag_parent_ready_state_t
      30             : #include "../../util/tmpl/fd_pool.c"
      31             : 
      32             : #define MAP_NAME               ag_parent_ready_state_map
      33             : #define MAP_ELE_T              ag_parent_ready_state_t
      34         855 : #define MAP_KEY                slot
      35             : #define MAP_KEY_T              ulong
      36        2109 : #define MAP_KEY_EQ(k0,k1)      ((*(k0))==(*(k1)))
      37        3732 : #define MAP_KEY_HASH(key,seed) (fd_ulong_hash( (*(key)) ^ (seed) ))
      38        1371 : #define MAP_NEXT               next
      39             : #include "../../util/tmpl/fd_map_chain.c"
      40             : 
      41             : struct ag_parent_ready_states {
      42             :   ag_parent_ready_state_t *     pool;
      43             :   ag_parent_ready_state_map_t * map;
      44             : };
      45             : typedef struct ag_parent_ready_states ag_parent_ready_states_t;
      46             : 
      47             : struct __attribute__((aligned(128UL))) ag_parent_ready_tracker {
      48             :   ag_parent_ready_states_t states;
      49             :   ulong                    root;
      50             : };
      51             : typedef struct ag_parent_ready_tracker ag_parent_ready_tracker_t;
      52             : 
      53             : FD_PROTOTYPES_BEGIN
      54             : 
      55             : FD_FN_CONST ulong
      56             : ag_parent_ready_tracker_align( void );
      57             : 
      58             : FD_FN_CONST ulong
      59             : ag_parent_ready_tracker_footprint( ulong slot_max );
      60             : 
      61             : void *
      62             : ag_parent_ready_tracker_new( void * shmem,
      63             :                              ulong  slot_max,
      64             :                              ulong  seed );
      65             : 
      66             : ag_parent_ready_tracker_t *
      67             : ag_parent_ready_tracker_join( void * shtracker );
      68             : 
      69             : void *
      70             : ag_parent_ready_tracker_leave( ag_parent_ready_tracker_t const * tracker );
      71             : 
      72             : void *
      73             : ag_parent_ready_tracker_delete( void * shtracker );
      74             : 
      75             : void
      76             : ag_parent_ready_tracker_mark_notar_fallback( ag_parent_ready_tracker_t * self,
      77             :                                              ag_block_id_t const *       id,
      78             :                                              ag_parent_ready_t *         newly_certified,
      79             :                                              ulong *                     newly_certified_cnt );
      80             : 
      81             : void
      82             : ag_parent_ready_tracker_mark_skipped( ag_parent_ready_tracker_t * self,
      83             :                                       ulong                       marked_slot,
      84             :                                       ag_parent_ready_t *         newly_certified,
      85             :                                       ulong *                     newly_certified_cnt );
      86             : 
      87             : ag_parent_ready_t
      88             : ag_parent_ready_tracker_handle_finalization( ag_parent_ready_tracker_t *     self,
      89             :                                              ag_finalization_event_t const * event,
      90             :                                              ag_parent_ready_t *             newly_certified,
      91             :                                              ulong *                         newly_certified_cnt );
      92             : 
      93             : ag_block_id_t const *
      94             : ag_parent_ready_tracker_parents_ready( ag_parent_ready_tracker_t * self,
      95             :                                        ulong                       slot,
      96             :                                        ulong *                     cnt );
      97             : 
      98             : ag_block_id_t
      99             : ag_parent_ready_tracker_wait_for_parent_ready( ag_parent_ready_tracker_t * self,
     100             :                                                ulong                       slot );
     101             : 
     102             : void
     103             : ag_parent_ready_tracker_prune( ag_parent_ready_tracker_t * self,
     104             :                                ulong                       new_root );
     105             : 
     106             : FD_PROTOTYPES_END
     107             : 
     108             : #endif

Generated by: LCOV version 1.14