Line data Source code
1 : #ifndef HEADER_fd_src_discof_geyser_fd_replay_notif_h 2 : #define HEADER_fd_src_discof_geyser_fd_replay_notif_h 3 : 4 : #include "../../funk/fd_funk.h" 5 : #include "../../flamenco/types/fd_types.h" 6 : 7 : /* Data structure which is passed through replay_notif link */ 8 : 9 0 : #define FD_REPLAY_NOTIF_MTU 2048U 10 0 : #define FD_REPLAY_NOTIF_ACCT_MAX ((FD_REPLAY_NOTIF_MTU - 128U)/sizeof(struct fd_replay_notif_acct)) 11 : #define FD_REPLAY_NOTIF_DEPTH (1U<<15U) 12 : 13 0 : #define FD_REPLAY_ACCTS_TYPE 0x29FE5135U 14 0 : #define FD_REPLAY_SLOT_TYPE 0xD1239ACAU 15 : 16 : struct __attribute__((aligned(1))) fd_replay_notif_acct { 17 : uchar id [ 32U ]; /* Account id */ 18 : uchar flags; /* 0=nothing 1=account written */ 19 : }; 20 0 : #define FD_REPLAY_NOTIF_ACCT_WRITTEN ((uchar)1) 21 0 : #define FD_REPLAY_NOTIF_ACCT_NO_FLAGS ((uchar)0) 22 : 23 : struct __attribute__((aligned(64UL))) fd_replay_notif_msg { 24 : union { 25 : struct { 26 : fd_funk_txn_xid_t funk_xid; 27 : uchar sig[64U]; /* Transaction signature */ 28 : struct fd_replay_notif_acct accts[FD_REPLAY_NOTIF_ACCT_MAX]; 29 : uint accts_cnt; 30 : } accts; 31 : struct { 32 : ulong parent; 33 : ulong root; 34 : ulong slot; 35 : ulong height; 36 : fd_hash_t bank_hash; 37 : fd_hash_t block_hash; 38 : fd_pubkey_t identity; 39 : ulong transaction_count; 40 : } slot_exec; 41 : }; 42 : uint type; 43 : }; 44 : typedef struct fd_replay_notif_msg fd_replay_notif_msg_t; 45 : 46 : /* MTU on replay_notif link is 128 */ 47 : FD_STATIC_ASSERT( sizeof(fd_replay_notif_msg_t) <= FD_REPLAY_NOTIF_MTU, notify message too big); 48 : 49 : #endif /* HEADER_fd_src_discof_geyser_fd_replay_notif_h */