LCOV - code coverage report
Current view: top level - discof/restore/utils - fd_ssresolve.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 1 6 16.7 %
Date: 2026-06-29 05:51:35 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef HEADER_fd_src_discof_restore_utils_fd_ssresolve_h
       2             : #define HEADER_fd_src_discof_restore_utils_fd_ssresolve_h
       3             : 
       4             : #include "../../../flamenco/fd_flamenco_base.h"
       5             : #include "../../../util/net/fd_net_headers.h"
       6             : 
       7             : #if FD_HAS_OPENSSL
       8             : #include <openssl/ssl.h>
       9             : #endif
      10             : 
      11           0 : #define FD_SSRESOLVE_MAGIC (0xF17EDA2CE55E510) /* FIREDANCER HTTP RESOLVE V0 */
      12        7680 : #define FD_SSRESOLVE_ALIGN (8UL)
      13             : 
      14             : struct fd_ssresolve_result {
      15             :   ulong     slot;                      /* slot of the snapshot */
      16             :   ulong     base_slot;                 /* base slot of incremental snapshot or ULONG_MAX */
      17             :   uchar     hash[ FD_HASH_FOOTPRINT ]; /* hash of the snapshot */
      18             : };
      19             : 
      20             : typedef struct fd_ssresolve_result fd_ssresolve_result_t;
      21             : 
      22             : /* fd_ssresolve is responsible for resolving snapshots from a given
      23             :    peer by sending http requests and parsing http redirect responses.
      24             : 
      25             :    It is used by fd_http_resolver_t to resolve snapshots slots for each
      26             :    peer. */
      27             : struct fd_ssresolve_private;
      28             : typedef struct fd_ssresolve_private fd_ssresolve_t;
      29             : 
      30             : FD_PROTOTYPES_BEGIN
      31             : 
      32             : FD_FN_CONST ulong
      33             : fd_ssresolve_align( void );
      34             : 
      35             : FD_FN_CONST ulong
      36             : fd_ssresolve_footprint( void );
      37             : 
      38             : void *
      39             : fd_ssresolve_new( void * shmem );
      40             : 
      41             : fd_ssresolve_t *
      42             : fd_ssresolve_join( void * ssresolve );
      43             : 
      44             : void
      45             : fd_ssresolve_init( fd_ssresolve_t * ssresolve,
      46             :                    fd_ip4_port_t    addr,
      47             :                    int              sockfd,
      48             :                    int              full,
      49             :                    char const *     hostname );
      50             : 
      51             : #if FD_HAS_OPENSSL
      52             : void
      53             : fd_ssresolve_init_https( fd_ssresolve_t * ssresolve,
      54             :                          fd_ip4_port_t    addr,
      55             :                          int              sockfd,
      56             :                          int              full,
      57             :                          char const *     hostname,
      58             :                          SSL_CTX *        ssl_ctx );
      59             : #endif
      60             : 
      61           0 : #define FD_SSRESOLVE_ADVANCE_ERROR   (-1) /* fatal error */
      62           0 : #define FD_SSRESOLVE_ADVANCE_AGAIN   ( 0) /* try again */
      63           0 : #define FD_SSRESOLVE_ADVANCE_SUCCESS ( 1) /* successful advance */
      64           0 : #define FD_SSRESOLVE_ADVANCE_RESULT  ( 2) /* successful advance with valid resolve result */
      65             : 
      66             : /* fd_ssresolve_advance_poll_out advances the ssresolve state machine
      67             :    when its socket file descriptor is ready for sending data. */
      68             : int
      69             : fd_ssresolve_advance_poll_out( fd_ssresolve_t * ssresolve );
      70             : 
      71             : /* fd_ssresolve_advance_poll_in advances the ssresolve state machine
      72             :    when its socket file descriptor is ready for receiving data. */
      73             : int
      74             : fd_ssresolve_advance_poll_in( fd_ssresolve_t *        ssresolve,
      75             :                               fd_ssresolve_result_t * result );
      76             : 
      77             : /* fd_ssresolve_is_done returns whether the ssresolve state machine
      78             :    is completed.  Once the state machine is completed, it must be
      79             :    reinitialized by fd_ssresolve_init. */
      80             : int
      81             : fd_ssresolve_is_done( fd_ssresolve_t * ssresolve );
      82             : 
      83             : void
      84             : fd_ssresolve_cancel( fd_ssresolve_t * ssresolve );
      85             : 
      86             : FD_PROTOTYPES_END
      87             : 
      88             : #endif /* HEADER_fd_src_discof_restore_utils_fd_ssresolve_h */

Generated by: LCOV version 1.14