LCOV - code coverage report
Current view: top level - discof/restore/utils - fd_ssresolve.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 6 0.0 %
Date: 2026-02-14 05:50:46 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 "../../../util/fd_util_base.h"
       5             : #include "../../../util/net/fd_net_headers.h"
       6             : #include "../../../flamenco/types/fd_types_custom.h"
       7             : 
       8             : #if FD_HAS_OPENSSL
       9             : #include <openssl/ssl.h>
      10             : #endif
      11             : 
      12           0 : #define FD_SSRESOLVE_MAGIC (0xF17EDA2CE55E510) /* FIREDANCER HTTP RESOLVE V0 */
      13           0 : #define FD_SSRESOLVE_ALIGN (8UL)
      14             : 
      15             : struct fd_ssresolve_result {
      16             :   ulong     slot;                      /* slot of the snapshot */
      17             :   ulong     base_slot;                 /* base slot of incremental snapshot or ULONG_MAX */
      18             :   uchar     hash[ FD_HASH_FOOTPRINT ]; /* hash of the snapshot */
      19             : };
      20             : 
      21             : typedef struct fd_ssresolve_result fd_ssresolve_result_t;
      22             : 
      23             : /* fd_ssresolve is responsible for resolving snapshots from a given
      24             :    peer by sending http requests and parsing http redirect responses.
      25             : 
      26             :    It is used by fd_http_resolver_t to resolve snapshots slots for each
      27             :    peer. */
      28             : struct fd_ssresolve_private;
      29             : typedef struct fd_ssresolve_private fd_ssresolve_t;
      30             : 
      31             : FD_PROTOTYPES_BEGIN
      32             : 
      33             : FD_FN_CONST ulong
      34             : fd_ssresolve_align( void );
      35             : 
      36             : FD_FN_CONST ulong
      37             : fd_ssresolve_footprint( void );
      38             : 
      39             : void *
      40             : fd_ssresolve_new( void * shmem );
      41             : 
      42             : fd_ssresolve_t *
      43             : fd_ssresolve_join( void * ssresolve );
      44             : 
      45             : void
      46             : fd_ssresolve_init( fd_ssresolve_t * ssresolve,
      47             :                    fd_ip4_port_t    addr,
      48             :                    int              sockfd,
      49             :                    int              full );
      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