10#ifndef __CWIST_GRPC_CLIENT_H__
11#define __CWIST_GRPC_CLIENT_H__
51 const void *request,
size_t request_len,
61 const void *request,
size_t request_len,
62 uint64_t timeout_ms, uint32_t previous_attempts);
gRPC over HTTP/2 helpers for CWIST.
enum cwist_grpc_status cwist_grpc_status_t
struct cwist_grpc_client cwist_grpc_client
void cwist_grpc_client_close(cwist_grpc_client *client)
Close the client: send GOAWAY, tear down TLS and the socket, free all state.
cwist_grpc_client * cwist_grpc_client_connect(const char *host, uint16_t port, const cwist_grpc_client_options *options)
Connect to a gRPC server and complete the HTTP/2 handshake.
int cwist_grpc_call_recv(cwist_grpc_call *call, cwist_grpc_message *out)
Receive the next response message of a call.
int cwist_grpc_call_committed(const cwist_grpc_call *call)
Whether response headers have committed the RPC (gRFC A6).
int cwist_grpc_call_await_headers(cwist_grpc_call *call)
Block until response headers arrive or the stream ends.
int cwist_grpc_client_dead(cwist_grpc_client *client)
Whether the client connection is unusable.
cwist_grpc_call * cwist_grpc_call_start(cwist_grpc_client *client, const char *method, const void *request, size_t request_len, uint64_t timeout_ms)
Start a unary call (no previous-attempt marker).
int cwist_grpc_call_refused(const cwist_grpc_call *call)
Whether the call failed before commit in a retryable way (gRFC A6 case 3: REFUSED_STREAM before heade...
void cwist_grpc_call_cancel(cwist_grpc_call *call)
Cancel a call: send RST_STREAM(CANCEL), mark it failed with CWIST_GRPC_CANCELLED, and end its stream.
int cwist_grpc_call_retry_pushback_ms(const cwist_grpc_call *call, int32_t *out_ms)
Report the server-provided retry pushback delay, if any.
void cwist_grpc_call_destroy(cwist_grpc_call *call)
Destroy a call: cancel it if still open, release it as the client's active call, and free all queued ...
struct cwist_grpc_call cwist_grpc_call
cwist_grpc_status_t cwist_grpc_call_finish(cwist_grpc_call *call, const char **message)
Drain the call to completion and return its final status.
cwist_grpc_status_t cwist_grpc_call_status(const cwist_grpc_call *call)
Current gRPC status code of a call.
cwist_grpc_call * cwist_grpc_call_start_ex(cwist_grpc_client *client, const char *method, const void *request, size_t request_len, uint64_t timeout_ms, uint32_t previous_attempts)
Start a unary call, with a gRFC A6 retry-attempt marker.
const char * tls_server_name
uint64_t connect_timeout_ms