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: 2025-12-06 04:45:29 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             : 
       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           0 : #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             : };
      18             : 
      19             : typedef struct fd_ssresolve_result fd_ssresolve_result_t;
      20             : 
      21             : /* fd_ssresolve is responsible for resolving snapshots from a given
      22             :    peer by sending http requests and parsing http redirect responses.
      23             : 
      24             :    It is used by fd_http_resolver_t to resolve snapshots slots for each
      25             :    peer. */
      26             : struct fd_ssresolve_private;
      27             : typedef struct fd_ssresolve_private fd_ssresolve_t;
      28             : 
      29             : FD_PROTOTYPES_BEGIN
      30             : 
      31             : FD_FN_CONST ulong
      32             : fd_ssresolve_align( void );
      33             : 
      34             : FD_FN_CONST ulong
      35             : fd_ssresolve_footprint( void );
      36             : 
      37             : void *
      38             : fd_ssresolve_new( void * shmem );
      39             : 
      40             : fd_ssresolve_t *
      41             : fd_ssresolve_join( void * ssresolve );
      42             : 
      43             : void
      44             : fd_ssresolve_init( fd_ssresolve_t * ssresolve,
      45             :                    fd_ip4_port_t    addr,
      46             :                    int              sockfd,
      47             :                    int              full );
      48             : 
      49             : #if FD_HAS_OPENSSL
      50             : void
      51             : fd_ssresolve_init_https( fd_ssresolve_t * ssresolve,
      52             :                          fd_ip4_port_t    addr,
      53             :                          int              sockfd,
      54             :                          int              full,
      55             :                          char const *     hostname,
      56             :                          SSL_CTX *        ssl_ctx );
      57             : #endif
      58             : 
      59           0 : #define FD_SSRESOLVE_ADVANCE_ERROR   (-1) /* fatal error */
      60           0 : #define FD_SSRESOLVE_ADVANCE_AGAIN   ( 0) /* try again */
      61           0 : #define FD_SSRESOLVE_ADVANCE_SUCCESS ( 1) /* successful advance */
      62           0 : #define FD_SSRESOLVE_ADVANCE_RESULT  ( 2) /* successful advance with valid resolve result */
      63             : 
      64             : /* fd_ssresolve_advance_poll_out advances the ssresolve state machine
      65             :    when its socket file descriptor is ready for sending data. */
      66             : int
      67             : fd_ssresolve_advance_poll_out( fd_ssresolve_t * ssresolve );
      68             : 
      69             : /* fd_ssresolve_advance_poll_in advances the ssresolve state machine
      70             :    when its socket file descriptor is ready for receiving data. */
      71             : int
      72             : fd_ssresolve_advance_poll_in( fd_ssresolve_t *        ssresolve,
      73             :                               fd_ssresolve_result_t * result );
      74             : 
      75             : /* fd_ssresolve_is_done returns whether the ssresolve state machine
      76             :    is completed.  Once the state machine is completed, it must be
      77             :    reinitialized by fd_ssresolve_init. */
      78             : int
      79             : fd_ssresolve_is_done( fd_ssresolve_t * ssresolve );
      80             : 
      81             : void
      82             : fd_ssresolve_cancel( fd_ssresolve_t * ssresolve );
      83             : 
      84             : FD_PROTOTYPES_END
      85             : 
      86             : #endif /* HEADER_fd_src_discof_restore_utils_fd_ssresolve_h */

Generated by: LCOV version 1.14