LCOV - code coverage report
Current view: top level - flamenco/accdb - fd_accdb_user.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 7 13 53.8 %
Date: 2025-12-28 05:17:03 Functions: 5 372 1.3 %

          Line data    Source code
       1             : #ifndef HEADER_fd_src_flamenco_accdb_fd_accdb_user_h
       2             : #define HEADER_fd_src_flamenco_accdb_fd_accdb_user_h
       3             : 
       4             : #include "fd_accdb_base.h"
       5             : #include "fd_accdb_ref.h"
       6             : 
       7             : /* FD_ACCDB_DEPTH_MAX specifies the max non-rooted fork depth. */
       8             : 
       9       17844 : #define FD_ACCDB_DEPTH_MAX (128UL)
      10             : 
      11        1188 : #define FD_ACCDB_FLAG_CREATE   (1)
      12         603 : #define FD_ACCDB_FLAG_TRUNCATE (2)
      13             : 
      14             : /* fd_accdb_user_vt_t specifies the interface (vtable) for the account
      15             :    DB client. */
      16             : 
      17             : struct fd_accdb_user_vt {
      18             : 
      19             :   void
      20             :   (* fini)( fd_accdb_user_t * accdb );
      21             : 
      22             :   fd_accdb_peek_t *
      23             :   (* peek)( fd_accdb_user_t *         accdb,
      24             :             fd_accdb_peek_t *         peek,
      25             :             fd_funk_txn_xid_t const * xid,
      26             :             void const *              address );
      27             : 
      28             :   fd_accdb_ro_t *
      29             :   (* open_ro)( fd_accdb_user_t *         accdb,
      30             :                fd_accdb_ro_t *           ro,
      31             :                fd_funk_txn_xid_t const * xid,
      32             :                void const *              address );
      33             : 
      34             :   void
      35             :   (* close_ro)( fd_accdb_user_t * accdb,
      36             :                 fd_accdb_ro_t *   ro );
      37             : 
      38             :   fd_accdb_rw_t *
      39             :   (* open_rw)( fd_accdb_user_t *         accdb,
      40             :                fd_accdb_rw_t *           rw,
      41             :                fd_funk_txn_xid_t const * xid,
      42             :                void const *              address,
      43             :                ulong                     data_max,
      44             :                int                       flags );
      45             : 
      46             :   void
      47             :   (* close_rw)( fd_accdb_user_t * accdb,
      48             :                 fd_accdb_rw_t *   write );
      49             : 
      50             : };
      51             : 
      52             : typedef struct fd_accdb_user_vt fd_accdb_user_vt_t;
      53             : 
      54             : struct fd_accdb_user_base {
      55             :   fd_accdb_user_vt_t const * vt;
      56             :   uint                       accdb_type;
      57             : 
      58             :   ulong rw_active;
      59             :   ulong ro_active;
      60             :   ulong created_cnt;
      61             : };
      62             : 
      63             : typedef struct fd_accdb_user_base fd_accdb_user_base_t;
      64             : 
      65             : struct fd_accdb_user {
      66             :   fd_accdb_user_base_t base;
      67             : 
      68             :   uchar impl[ 4096 ] __attribute__((aligned(64)));
      69             : };
      70             : 
      71             : FD_PROTOTYPES_BEGIN
      72             : 
      73             : static inline ulong
      74           0 : fd_accdb_user_align( void ) {
      75           0 :   return alignof(fd_accdb_user_t);
      76           0 : }
      77             : 
      78             : static inline ulong
      79           0 : fd_accdb_user_footprint( void ) {
      80           0 :   return sizeof(fd_accdb_user_t);
      81           0 : }
      82             : 
      83             : static inline void
      84        8889 : fd_accdb_user_fini( fd_accdb_user_t * accdb ) {
      85        8889 :   accdb->base.vt->fini( accdb );
      86        8889 :   accdb->base.accdb_type = 0;
      87        8889 : }
      88             : 
      89             : FD_PROTOTYPES_END
      90             : 
      91             : #endif /* HEADER_fd_src_flamenco_accdb_fd_accdb_user_h */

Generated by: LCOV version 1.14