|
const char * | grpc_chttp2_initiate_write_reason_string (grpc_chttp2_initiate_write_reason reason) |
|
void | grpc_chttp2_initiate_write (grpc_chttp2_transport *t, grpc_chttp2_initiate_write_reason reason) |
| Transport writing call flow: grpc_chttp2_initiate_write() is called anywhere that we know bytes need to go out on the wire. More...
|
|
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) |
|
grpc_error * | grpc_chttp2_perform_read (grpc_chttp2_transport *t, const grpc_slice &slice) |
| Process one slice of incoming data; return 1 if the connection is still viable after reading, or 0 if the connection should be torn down. More...
|
|
bool | grpc_chttp2_list_add_writable_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_pop_writable_stream (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
| Get a writable stream returns non-zero if there was a stream available. More...
|
|
bool | grpc_chttp2_list_remove_writable_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_add_writing_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_have_writing_streams (grpc_chttp2_transport *t) |
|
bool | grpc_chttp2_list_pop_writing_stream (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
|
void | grpc_chttp2_list_add_written_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_pop_written_stream (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
|
void | grpc_chttp2_list_add_waiting_for_concurrency (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_pop_waiting_for_concurrency (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
|
void | grpc_chttp2_list_remove_waiting_for_concurrency (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_list_add_stalled_by_transport (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_pop_stalled_by_transport (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
|
void | grpc_chttp2_list_remove_stalled_by_transport (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_list_add_stalled_by_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
bool | grpc_chttp2_list_pop_stalled_by_stream (grpc_chttp2_transport *t, grpc_chttp2_stream **s) |
|
bool | grpc_chttp2_list_remove_stalled_by_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_act_on_flowctl_action (const grpc_core::chttp2::FlowControlAction &action, grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
grpc_chttp2_stream * | grpc_chttp2_parsing_lookup_stream (grpc_chttp2_transport *t, uint32_t id) |
|
grpc_chttp2_stream * | grpc_chttp2_parsing_accept_stream (grpc_chttp2_transport *t, uint32_t id) |
|
void | grpc_chttp2_add_incoming_goaway (grpc_chttp2_transport *t, uint32_t goaway_error, uint32_t last_stream_id, const grpc_slice &goaway_text) |
|
void | grpc_chttp2_parsing_become_skip_parser (grpc_chttp2_transport *t) |
|
void | grpc_chttp2_complete_closure_step (grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_closure **pclosure, grpc_error *error, const char *desc) |
|
void | grpc_chttp2_fake_status (grpc_chttp2_transport *t, grpc_chttp2_stream *stream, grpc_error *error) |
|
void | grpc_chttp2_mark_stream_closed (grpc_chttp2_transport *t, grpc_chttp2_stream *s, int close_reads, int close_writes, grpc_error *error) |
|
void | grpc_chttp2_start_writing (grpc_chttp2_transport *t) |
|
void | grpc_chttp2_stream_ref (grpc_chttp2_stream *s, const char *reason) |
|
void | grpc_chttp2_stream_unref (grpc_chttp2_stream *s, const char *reason) |
|
void | grpc_chttp2_unref_transport (grpc_chttp2_transport *t, const char *reason, const char *file, int line) |
|
void | grpc_chttp2_ref_transport (grpc_chttp2_transport *t, const char *reason, const char *file, int line) |
|
void | grpc_chttp2_ack_ping (grpc_chttp2_transport *t, uint64_t id) |
|
void | grpc_chttp2_add_ping_strike (grpc_chttp2_transport *t) |
| Add a new ping strike to ping_recv_state.ping_strikes. More...
|
|
void | grpc_chttp2_mark_stream_writable (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
| add a ref to the stream and add it to the writable list; ref will be dropped in writing.c More...
|
|
void | grpc_chttp2_cancel_stream (grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *due_to_error) |
|
void | grpc_chttp2_maybe_complete_recv_initial_metadata (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_maybe_complete_recv_message (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_maybe_complete_recv_trailing_metadata (grpc_chttp2_transport *t, grpc_chttp2_stream *s) |
|
void | grpc_chttp2_fail_pending_writes (grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *error) |
|
void | grpc_chttp2_config_default_keepalive_args (grpc_channel_args *args, bool is_client) |
| Set the default keepalive configurations, must only be called at initialization. More...
|
|
void | grpc_chttp2_retry_initiate_ping (void *tp, grpc_error *error) |
|
Transport writing call flow: grpc_chttp2_initiate_write() is called anywhere that we know bytes need to go out on the wire.
If no other write has been started, a task is enqueued onto our workqueue. When that task executes, it obtains the global lock, and gathers the data to write. The global lock is dropped and we do the syscall to write. After writing, a follow-up check is made to see if another round of writing should be performed.
The actual call chain is documented in the implementation of this function.