Line data Source code
1 : #ifndef HEADER_fd_src_choreo_votor_ag_pool_h 2 : #define HEADER_fd_src_choreo_votor_ag_pool_h 3 : 4 : #include "ag_votor_base.h" 5 : #include "ag_cert.h" 6 : #include "ag_epoch_info.h" 7 : #include "ag_event.h" 8 : #include "ag_slot_state.h" 9 : #include "ag_vote.h" 10 : 11 4293 : #define AG_POOL_SUCCESS ( 0) 12 174 : #define AG_POOL_ERR_SLOT_OUT_OF_BOUNDS (-1) 13 12 : #define AG_POOL_ERR_DUPLICATE (-2) 14 6 : #define AG_POOL_ERR_SLASHABLE (-3) 15 0 : #define AG_POOL_ERR_CERT_VERIFY (-4) 16 : 17 : typedef struct ag_pool ag_pool_t; 18 : 19 : FD_PROTOTYPES_BEGIN 20 : 21 : FD_FN_CONST ulong 22 : ag_pool_align( void ); 23 : 24 : FD_FN_CONST ulong 25 : ag_pool_footprint( ulong slot_max ); 26 : 27 : void * 28 : ag_pool_new( void * mem, 29 : ulong slot_max, 30 : ulong seed ); 31 : 32 : ag_pool_t * 33 : ag_pool_join( void * mem ); 34 : 35 : void * 36 : ag_pool_leave( ag_pool_t const * pool ); 37 : 38 : void * 39 : ag_pool_delete( void * mem ); 40 : 41 : void 42 : ag_pool_init( ag_pool_t * self, 43 : ulong slot ); 44 : 45 : void 46 : ag_pool_fini( ag_pool_t * self ); 47 : 48 : FD_FN_CONST char const * 49 : ag_pool_strerror( int err ); 50 : 51 : void 52 : ag_pool_advance_epoch( ag_pool_t * self, 53 : ag_epoch_info_t const * epoch_info, 54 : ulong epoch_rank, 55 : ulong epoch_slot ); 56 : 57 : int 58 : ag_pool_add_cert( ag_pool_t * self, 59 : ag_cert_t const * cert, 60 : fd_bls_set_t * bad ); 61 : 62 : int 63 : ag_pool_add_vote( ag_pool_t * self, 64 : ag_vote_t const * vote, 65 : fd_bls_set_t * bad ); 66 : 67 : int 68 : ag_pool_add_block( ag_pool_t * self, 69 : ag_block_id_t const * block_id, 70 : ag_block_id_t const * parent_id, 71 : fd_bls_set_t * bad ); 72 : 73 : ag_slot_state_t const * 74 : ag_pool_slot_state( ag_pool_t const * self, 75 : ulong slot ); 76 : 77 : void 78 : ag_pool_recover_from_standstill( ag_pool_t * self ); 79 : 80 : FD_FN_PURE ulong 81 : ag_pool_finalized_slot( ag_pool_t const * self ); 82 : 83 : FD_FN_PURE uchar const * 84 : ag_pool_finalized_block_hash( ag_pool_t const * self ); 85 : 86 : ag_block_id_t const * 87 : ag_pool_parents_ready( ag_pool_t * self, 88 : ulong slot, 89 : ulong * cnt ); 90 : 91 : ag_block_id_t 92 : ag_pool_wait_for_parent_ready( ag_pool_t * self, 93 : ulong slot ); 94 : 95 : int 96 : ag_pool_poll_pool_event( ag_pool_t * self, 97 : ag_event_pool_t * event ); 98 : 99 : int 100 : ag_pool_poll_repair_event( ag_pool_t * self, 101 : ag_event_repair_t * event ); 102 : 103 : FD_PROTOTYPES_END 104 : 105 : #endif