|
|
|
@ -106,30 +106,26 @@ typedef enum { |
|
|
|
|
const char* grpc_chttp2_initiate_write_reason_string( |
|
|
|
|
grpc_chttp2_initiate_write_reason reason); |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
struct grpc_chttp2_ping_queue { |
|
|
|
|
grpc_closure_list lists[GRPC_CHTTP2_PCL_COUNT] = {}; |
|
|
|
|
uint64_t inflight_id = 0; |
|
|
|
|
} grpc_chttp2_ping_queue; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
}; |
|
|
|
|
struct grpc_chttp2_repeated_ping_policy { |
|
|
|
|
int max_pings_without_data; |
|
|
|
|
int max_ping_strikes; |
|
|
|
|
grpc_millis min_sent_ping_interval_without_data; |
|
|
|
|
grpc_millis min_recv_ping_interval_without_data; |
|
|
|
|
} grpc_chttp2_repeated_ping_policy; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
}; |
|
|
|
|
struct grpc_chttp2_repeated_ping_state { |
|
|
|
|
grpc_millis last_ping_sent_time; |
|
|
|
|
int pings_before_data_required; |
|
|
|
|
grpc_timer delayed_ping_timer; |
|
|
|
|
bool is_delayed_ping_timer_set; |
|
|
|
|
} grpc_chttp2_repeated_ping_state; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
}; |
|
|
|
|
struct grpc_chttp2_server_ping_recv_state { |
|
|
|
|
grpc_millis last_ping_recv_time; |
|
|
|
|
int ping_strikes; |
|
|
|
|
} grpc_chttp2_server_ping_recv_state; |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
/* deframer state for the overall http2 stream of bytes */ |
|
|
|
|
typedef enum { |
|
|
|
|
/* prefix: one entry per http2 connection prefix byte */ |
|
|
|
@ -173,16 +169,14 @@ typedef enum { |
|
|
|
|
GRPC_DTS_FRAME |
|
|
|
|
} grpc_chttp2_deframe_transport_state; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
struct grpc_chttp2_stream_list { |
|
|
|
|
grpc_chttp2_stream* head; |
|
|
|
|
grpc_chttp2_stream* tail; |
|
|
|
|
} grpc_chttp2_stream_list; |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
}; |
|
|
|
|
struct grpc_chttp2_stream_link { |
|
|
|
|
grpc_chttp2_stream* next; |
|
|
|
|
grpc_chttp2_stream* prev; |
|
|
|
|
} grpc_chttp2_stream_link; |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
/* We keep several sets of connection wide parameters */ |
|
|
|
|
typedef enum { |
|
|
|
|
/* The settings our peer has asked for (and we have acked) */ |
|
|
|
@ -678,15 +672,14 @@ struct grpc_chttp2_stream { |
|
|
|
|
void grpc_chttp2_initiate_write(grpc_chttp2_transport* t, |
|
|
|
|
grpc_chttp2_initiate_write_reason reason); |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
struct grpc_chttp2_begin_write_result { |
|
|
|
|
/** are we writing? */ |
|
|
|
|
bool writing; |
|
|
|
|
/** if writing: was it a complete flush (false) or a partial flush (true) */ |
|
|
|
|
bool partial; |
|
|
|
|
/** did we queue any completions as part of beginning the write */ |
|
|
|
|
bool early_results_scheduled; |
|
|
|
|
} grpc_chttp2_begin_write_result; |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
grpc_chttp2_begin_write_result grpc_chttp2_begin_write( |
|
|
|
|
grpc_chttp2_transport* t); |
|
|
|
|
void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error* error); |
|
|
|
|