Line data Source code
1 : #ifndef HEADER_fd_src_disco_repair_fd_repair_tile_h 2 : #define HEADER_fd_src_disco_repair_fd_repair_tile_h 3 : 4 : #include "../../disco/tiles.h" 5 : #include "../../disco/shred/fd_shred_tile.h" 6 : 7 0 : #define REPAIR_SIG_FEC (0UL) 8 0 : #define REPAIR_SIG_BLK (1UL) 9 : 10 : struct fd_repair_out_fec { 11 : ulong slot; 12 : uint fec_set_idx; 13 : fd_hash_t mr; 14 : fd_hash_t block_id; 15 : ulong parent_slot; 16 : fd_hash_t parent_block_id; 17 : uint update_parent_fec_idx; /* the fec_set_idx of the detected parentUpdate in the slot, 0 if none or undetected. */ 18 : uchar slot_complete : 1; 19 : uchar data_complete : 1; 20 : uchar is_leader : 1; 21 : uchar is_known : 1; /* 0 if it's an eager repair blk, otherwise 1. */ 22 : uchar is_finalized : 1; 23 : 24 : /* metrics */ 25 : 26 : uchar votor_repaired; /* 1 if the FEC was delivered under a repaired by-id version of its slot, 0 under its turbine version, our leader blocks included */ 27 : long fec_completed_ts_nanos; /* network arrival (wallclock ns) of the shred that completed this FEC, 0 if unavailable */ 28 : ulong highest_fec_complete_slot; /* highest slot with a FEC completed off the network, our leader FECs excluded: the cluster tip */ 29 : }; 30 : typedef struct fd_repair_out_fec fd_repair_out_fec_t; 31 : 32 : struct fd_repair_out_blk { 33 : ulong slot; 34 : fd_hash_t block_id; 35 : ulong parent_slot; 36 : fd_hash_t parent_block_id; 37 : uint fec_set_cnt; 38 : uchar merkle_roots[ FD_FEC_BLK_MAX ][ FD_SHRED_MERKLE_NODE_SZ ]; 39 : }; 40 : typedef struct fd_repair_out_blk fd_repair_out_blk_t; 41 : 42 : #endif /* HEADER_fd_src_disco_repair_fd_repair_tile_h */