19 #ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H
20 #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H
111 uint64_t inflight_id = 0;
255 static void NextLocked(
void* arg,
grpc_error* error_ignored);
256 static void OrphanLocked(
void* arg,
grpc_error* error_ignored);
258 void MaybeCreateStreamDecompressionCtx();
268 uint32_t remaining_bytes_;
340 const void* server_data);
758 uint32_t goaway_error,
759 uint32_t last_stream_id,
769 #define GRPC_HEADER_SIZE_IN_BYTES 5
770 #define MAX_SIZE_T (~(size_t)0)
772 #define GRPC_CHTTP2_CLIENT_CONNECT_STRING "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
773 #define GRPC_CHTTP2_CLIENT_CONNECT_STRLEN \
774 (sizeof(GRPC_CHTTP2_CLIENT_CONNECT_STRING) - 1)
779 #define GRPC_CHTTP2_IF_TRACING(stmt) \
781 if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) { \
794 #define GRPC_CHTTP2_STREAM_REF(stream, reason) \
795 grpc_chttp2_stream_ref(stream, reason)
796 #define GRPC_CHTTP2_STREAM_UNREF(stream, reason) \
797 grpc_chttp2_stream_unref(stream, reason)
801 #define GRPC_CHTTP2_STREAM_REF(stream, reason) grpc_chttp2_stream_ref(stream)
802 #define GRPC_CHTTP2_STREAM_UNREF(stream, reason) \
803 grpc_chttp2_stream_unref(stream)
809 #define GRPC_CHTTP2_REF_TRANSPORT(t, r) \
810 grpc_chttp2_ref_transport(t, r, __FILE__, __LINE__)
811 #define GRPC_CHTTP2_UNREF_TRANSPORT(t, r) \
812 grpc_chttp2_unref_transport(t, r, __FILE__, __LINE__)
814 const char* reason,
const char* file,
821 const char* reason,
const char* file,
826 #define GRPC_CHTTP2_REF_TRANSPORT(t, r) grpc_chttp2_ref_transport(t)
827 #define GRPC_CHTTP2_UNREF_TRANSPORT(t, r) grpc_chttp2_unref_transport(t)
Definition: byte_stream.h:36
uint32_t flags() const
Definition: byte_stream.h:66
Definition: internal.h:213
grpc_error * Pull(grpc_slice *slice) override
Definition: chttp2_transport.cc:3055
uint32_t remaining_bytes() const
Definition: internal.h:252
grpc_closure * on_complete
Definition: internal.h:276
grpc_error * Push(const grpc_slice &slice, grpc_slice *slice_out)
Definition: chttp2_transport.cc:3110
void PublishError(grpc_error *error)
Definition: chttp2_transport.cc:3100
grpc_error * Finished(grpc_error *error, bool reset_on_error)
Definition: chttp2_transport.cc:3128
Chttp2IncomingByteStream(grpc_chttp2_transport *transport, grpc_chttp2_stream *stream, uint32_t frame_size, uint32_t flags)
Definition: chttp2_transport.cc:2953
grpc_closure closure
Definition: internal.h:274
void Ref()
Definition: internal.h:239
size_t max_size_hint
Definition: internal.h:275
bool Next(size_t max_size_hint, grpc_closure *on_complete) override
Definition: chttp2_transport.cc:3029
void Orphan() override
Definition: chttp2_transport.cc:2976
void Shutdown(grpc_error *error) override
Definition: chttp2_transport.cc:3143
void Unref()
Definition: internal.h:240
Definition: combiner.h:33
Definition: connectivity_state.h:89
A list of RPC Contexts.
Definition: context_list.h:30
Definition: debug_location.h:31
Definition: manual_constructor.h:104
Definition: ref_counted.h:62
void Ref(Value n=1)
Definition: ref_counted.h:88
bool Unref()
Definition: ref_counted.h:174
Definition: flow_control.h:57
Definition: flow_control.h:339
Definition: flow_control.h:393
Definition: flow_control.h:411
Definition: flow_control.h:145
Definition: flow_control.h:202
Definition: flow_control.h:222
#define GRPC_CLOSURE_LIST_INIT
Definition: closure.h:168
#define GRPC_ERROR_NONE
The following "special" errors can be propagated without allocating memory.
Definition: error.h:125
int64_t grpc_millis
Definition: exec_ctx.h:35
#define GRPC_MILLIS_INF_FUTURE
Definition: exec_ctx.h:37
@ GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE
Definition: http2_settings.h:33
#define GRPC_CHTTP2_NUM_SETTINGS
Definition: http2_settings.h:39
void grpc_chttp2_list_add_waiting_for_concurrency(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:171
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: chttp2_transport.cc:1880
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *error)
Definition: chttp2_transport.cc:2174
void grpc_chttp2_add_ping_strike(grpc_chttp2_transport *t)
Add a new ping strike to ping_recv_state.ping_strikes.
Definition: chttp2_transport.cc:1785
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.
Definition: stream_lists.cc:147
bool grpc_chttp2_list_pop_writing_stream(grpc_chttp2_transport *t, grpc_chttp2_stream **s)
Definition: stream_lists.cc:166
grpc_chttp2_stream * grpc_chttp2_parsing_lookup_stream(grpc_chttp2_transport *t, uint32_t id)
Definition: internal.h:749
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,...
Definition: parsing.cc:52
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....
Definition: chttp2_transport.cc:924
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport *t, grpc_chttp2_stream *s, int close_reads, int close_writes, grpc_error *error)
Definition: chttp2_transport.cc:2196
grpc_chttp2_initiate_write_reason
Definition: internal.h:83
@ GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT
Definition: internal.h:91
@ GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API
Definition: internal.h:93
@ GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS
Definition: internal.h:96
@ GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING
Definition: internal.h:97
@ GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA
Definition: internal.h:87
@ GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING
Definition: internal.h:99
@ GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING
Definition: internal.h:89
@ GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE
Definition: internal.h:102
@ GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM
Definition: internal.h:92
@ GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING
Definition: internal.h:100
@ GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM
Definition: internal.h:85
@ GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS
Definition: internal.h:90
@ GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA
Definition: internal.h:88
@ GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL
Definition: internal.h:94
@ GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL
Definition: internal.h:95
@ GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM
Definition: internal.h:103
@ GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE
Definition: internal.h:98
@ GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED
Definition: internal.h:101
@ GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE
Definition: internal.h:86
@ GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE
Definition: internal.h:84
struct grpc_chttp2_write_cb grpc_chttp2_write_cb
grpc_chttp2_write_state
Definition: internal.h:65
@ GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
Definition: internal.h:68
@ GRPC_CHTTP2_WRITE_STATE_IDLE
Definition: internal.h:66
@ GRPC_CHTTP2_WRITE_STATE_WRITING
Definition: internal.h:67
void grpc_chttp2_list_add_written_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
grpc_chttp2_ping_closure_list
Definition: internal.h:76
@ GRPC_CHTTP2_PCL_NEXT
Definition: internal.h:78
@ GRPC_CHTTP2_PCL_COUNT
Definition: internal.h:80
@ GRPC_CHTTP2_PCL_INFLIGHT
Definition: internal.h:79
@ GRPC_CHTTP2_PCL_INITIATE
Definition: internal.h:77
void grpc_chttp2_act_on_flowctl_action(const grpc_core::chttp2::FlowControlAction &action, grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: chttp2_transport.cc:2448
void grpc_chttp2_fake_status(grpc_chttp2_transport *t, grpc_chttp2_stream *stream, grpc_error *error)
Definition: chttp2_transport.cc:2096
bool grpc_chttp2_list_pop_stalled_by_stream(grpc_chttp2_transport *t, grpc_chttp2_stream **s)
Definition: stream_lists.cc:208
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 ...
Definition: chttp2_transport.cc:884
bool grpc_chttp2_list_add_writing_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:157
bool grpc_chttp2_list_pop_written_stream(grpc_chttp2_transport *t, grpc_chttp2_stream **s)
bool grpc_chttp2_list_add_writable_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:141
void grpc_chttp2_start_writing(grpc_chttp2_transport *t)
void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport *t)
Definition: parsing.cc:342
void grpc_chttp2_ack_ping(grpc_chttp2_transport *t, uint64_t id)
Definition: chttp2_transport.cc:1754
grpc_published_metadata_method
Definition: internal.h:501
@ GRPC_METADATA_PUBLISHED_AT_CLOSE
Definition: internal.h:505
@ GRPC_METADATA_PUBLISHED_FROM_WIRE
Definition: internal.h:504
@ GRPC_METADATA_NOT_PUBLISHED
Definition: internal.h:502
@ GRPC_METADATA_SYNTHESIZED_FROM_FAKE
Definition: internal.h:503
grpc_chttp2_setting_set
Definition: internal.h:187
@ GRPC_PEER_SETTINGS
Definition: internal.h:189
@ GRPC_ACKED_SETTINGS
Definition: internal.h:195
@ GRPC_LOCAL_SETTINGS
Definition: internal.h:191
@ GRPC_SENT_SETTINGS
Definition: internal.h:193
@ GRPC_NUM_SETTING_SETS
Definition: internal.h:196
grpc_chttp2_deframe_transport_state
Definition: internal.h:134
@ GRPC_DTS_CLIENT_PREFIX_15
Definition: internal.h:151
@ GRPC_DTS_FH_4
Definition: internal.h:166
@ GRPC_DTS_FRAME
Definition: internal.h:173
@ GRPC_DTS_CLIENT_PREFIX_23
Definition: internal.h:159
@ GRPC_DTS_FH_3
Definition: internal.h:165
@ GRPC_DTS_CLIENT_PREFIX_20
Definition: internal.h:156
@ GRPC_DTS_CLIENT_PREFIX_0
Definition: internal.h:136
@ GRPC_DTS_FH_8
Definition: internal.h:171
@ GRPC_DTS_CLIENT_PREFIX_6
Definition: internal.h:142
@ GRPC_DTS_CLIENT_PREFIX_21
Definition: internal.h:157
@ GRPC_DTS_CLIENT_PREFIX_3
Definition: internal.h:139
@ GRPC_DTS_CLIENT_PREFIX_2
Definition: internal.h:138
@ GRPC_DTS_CLIENT_PREFIX_9
Definition: internal.h:145
@ GRPC_DTS_CLIENT_PREFIX_5
Definition: internal.h:141
@ GRPC_DTS_FH_1
Definition: internal.h:163
@ GRPC_DTS_FH_6
Definition: internal.h:168
@ GRPC_DTS_CLIENT_PREFIX_13
Definition: internal.h:149
@ GRPC_DTS_CLIENT_PREFIX_17
Definition: internal.h:153
@ GRPC_DTS_FH_5
Definition: internal.h:167
@ GRPC_DTS_CLIENT_PREFIX_10
Definition: internal.h:146
@ GRPC_DTS_CLIENT_PREFIX_1
Definition: internal.h:137
@ GRPC_DTS_CLIENT_PREFIX_12
Definition: internal.h:148
@ GRPC_DTS_FH_2
Definition: internal.h:164
@ GRPC_DTS_CLIENT_PREFIX_16
Definition: internal.h:152
@ GRPC_DTS_CLIENT_PREFIX_19
Definition: internal.h:155
@ GRPC_DTS_CLIENT_PREFIX_8
Definition: internal.h:144
@ GRPC_DTS_CLIENT_PREFIX_22
Definition: internal.h:158
@ GRPC_DTS_CLIENT_PREFIX_4
Definition: internal.h:140
@ GRPC_DTS_CLIENT_PREFIX_18
Definition: internal.h:154
@ GRPC_DTS_FH_0
Definition: internal.h:162
@ GRPC_DTS_CLIENT_PREFIX_14
Definition: internal.h:150
@ GRPC_DTS_CLIENT_PREFIX_7
Definition: internal.h:143
@ GRPC_DTS_CLIENT_PREFIX_11
Definition: internal.h:147
@ GRPC_DTS_FH_7
Definition: internal.h:169
grpc_chttp2_stream * grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport *t, uint32_t id)
Definition: chttp2_transport.cc:753
bool grpc_chttp2_list_remove_stalled_by_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:213
void grpc_chttp2_cancel_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_error *due_to_error)
Definition: chttp2_transport.cc:2072
bool grpc_chttp2_list_pop_stalled_by_transport(grpc_chttp2_transport *t, grpc_chttp2_stream **s)
Definition: stream_lists.cc:192
bool grpc_chttp2_list_have_writing_streams(grpc_chttp2_transport *t)
Definition: stream_lists.cc:162
grpc_chttp2_sent_goaway_state
Definition: internal.h:199
@ GRPC_CHTTP2_NO_GOAWAY_SEND
Definition: internal.h:200
@ GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED
Definition: internal.h:201
@ GRPC_CHTTP2_GOAWAY_SENT
Definition: internal.h:202
void grpc_chttp2_end_write(grpc_chttp2_transport *t, grpc_error *error)
Definition: writing.cc:679
grpc_chttp2_keepalive_state
Definition: internal.h:283
@ GRPC_CHTTP2_KEEPALIVE_STATE_WAITING
Definition: internal.h:284
@ GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED
Definition: internal.h:287
@ GRPC_CHTTP2_KEEPALIVE_STATE_PINGING
Definition: internal.h:285
@ GRPC_CHTTP2_KEEPALIVE_STATE_DYING
Definition: internal.h:286
void grpc_chttp2_stream_ref(grpc_chttp2_stream *s, const char *reason)
Definition: chttp2_transport.cc:605
const char * grpc_chttp2_initiate_write_reason_string(grpc_chttp2_initiate_write_reason reason)
Definition: chttp2_transport.cc:3253
void grpc_chttp2_list_remove_waiting_for_concurrency(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:181
void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: chttp2_transport.cc:1965
void grpc_chttp2_list_add_stalled_by_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:202
bool grpc_chttp2_list_pop_waiting_for_concurrency(grpc_chttp2_transport *t, grpc_chttp2_stream **s)
Definition: stream_lists.cc:176
void grpc_chttp2_list_remove_stalled_by_transport(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:197
void grpc_chttp2_stream_unref(grpc_chttp2_stream *s, const char *reason)
Definition: chttp2_transport.cc:608
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport *t, uint32_t goaway_error, uint32_t last_stream_id, const grpc_slice &goaway_text)
Definition: chttp2_transport.cc:1066
grpc_chttp2_stream_list_id
Definition: internal.h:54
@ GRPC_CHTTP2_LIST_WAITING_FOR_CONCURRENCY
streams that are waiting to start because there are too many concurrent streams on the connection
Definition: internal.h:61
@ GRPC_CHTTP2_LIST_WRITING
Definition: internal.h:56
@ GRPC_CHTTP2_LIST_WRITABLE
Definition: internal.h:55
@ GRPC_CHTTP2_LIST_STALLED_BY_STREAM
Definition: internal.h:58
@ GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT
Definition: internal.h:57
@ STREAM_LIST_COUNT
Definition: internal.h:62
grpc_chttp2_optimization_target
Definition: internal.h:71
@ GRPC_CHTTP2_OPTIMIZE_FOR_THROUGHPUT
Definition: internal.h:73
@ GRPC_CHTTP2_OPTIMIZE_FOR_LATENCY
Definition: internal.h:72
void grpc_chttp2_list_add_stalled_by_transport(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:186
bool grpc_chttp2_list_remove_writable_stream(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: stream_lists.cc:152
void grpc_chttp2_unref_transport(grpc_chttp2_transport *t, const char *reason, const char *file, int line)
Definition: internal.h:813
void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport *t, grpc_chttp2_stream *s)
Definition: chttp2_transport.cc:1863
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport *t, grpc_chttp2_stream *s, grpc_closure **pclosure, grpc_error *error, const char *desc)
Definition: chttp2_transport.cc:1185
grpc_chttp2_begin_write_result grpc_chttp2_begin_write(grpc_chttp2_transport *t)
Definition: writing.cc:632
void grpc_chttp2_retry_initiate_ping(void *tp, grpc_error *error)
Definition: chttp2_transport.cc:1738
void grpc_chttp2_ref_transport(grpc_chttp2_transport *t, const char *reason, const char *file, int line)
Definition: internal.h:820
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.
Definition: chttp2_transport.cc:2699
Round Robin Policy.
Definition: backend_metric.cc:24
std::unique_ptr< T, Deleter > OrphanablePtr
Definition: orphanable.h:68
GPRAPI grpc_slice grpc_empty_slice(void)
Definition: slice.cc:40
grpc_stream_compression_method
Definition: stream_compression.h:38
@ GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS
Definition: stream_compression.h:40
@ GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
Definition: stream_compression.h:39
void * grpc_chttp2_stream_map_find(grpc_chttp2_stream_map *map, uint32_t key)
Definition: stream_map.cc:145
An array of arguments that can be passed around.
Definition: grpc_types.h:132
Definition: internal.h:681
bool partial
if writing: was it a complete flush (false) or a partial flush (true)
Definition: internal.h:685
bool early_results_scheduled
did we queue any completions as part of beginning the write
Definition: internal.h:687
bool writing
are we writing?
Definition: internal.h:683
Definition: frame_data.h:46
Definition: frame_goaway.h:40
Definition: hpack_encoder.h:41
Definition: hpack_parser.h:47
Definition: frame_ping.h:27
Definition: internal.h:109
Definition: internal.h:114
grpc_millis min_recv_ping_interval_without_data
Definition: internal.h:118
int max_ping_strikes
Definition: internal.h:116
grpc_millis min_sent_ping_interval_without_data
Definition: internal.h:117
int max_pings_without_data
Definition: internal.h:115
Definition: internal.h:121
grpc_millis last_ping_sent_time
Definition: internal.h:122
grpc_timer delayed_ping_timer
Definition: internal.h:124
int pings_before_data_required
Definition: internal.h:123
bool is_delayed_ping_timer_set
Definition: internal.h:125
Definition: frame_rst_stream.h:28
Definition: internal.h:128
grpc_millis last_ping_recv_time
Definition: internal.h:129
int ping_strikes
Definition: internal.h:130
Definition: frame_settings.h:37
Definition: internal.h:519
Reffer(grpc_chttp2_stream *s)
Definition: chttp2_transport.cc:620
Definition: internal.h:181
grpc_chttp2_stream * prev
Definition: internal.h:183
grpc_chttp2_stream * next
Definition: internal.h:182
Definition: internal.h:176
grpc_chttp2_stream * tail
Definition: internal.h:178
grpc_chttp2_stream * head
Definition: internal.h:177
Definition: stream_map.h:32
Definition: internal.h:508
size_t unprocessed_incoming_frames_buffer_cached_length
Definition: internal.h:593
grpc_metadata_batch * send_initial_metadata
things the upper layers would like to send
Definition: internal.h:533
bool received_last_frame
Definition: internal.h:600
grpc_chttp2_data_parser data_parser
parsing state for data frames
Definition: internal.h:612
bool eos_received
Definition: internal.h:572
grpc_error * write_closed_error
the error that resulted in this stream being write-closed
Definition: internal.h:578
grpc_closure * send_trailing_metadata_finished
Definition: internal.h:536
bool sent_initial_metadata
Definition: internal.h:616
grpc_closure * fetching_send_message_finished
Definition: internal.h:545
grpc_chttp2_write_cb * on_write_finished_cbs
Definition: internal.h:628
grpc_metadata_batch * send_trailing_metadata
Definition: internal.h:535
bool eos_sent
Definition: internal.h:573
grpc_slice_buffer compressed_data_buffer
Buffer storing data that is compressed but not sent.
Definition: internal.h:655
grpc_closure complete_fetch_locked
Definition: internal.h:544
grpc_core::OrphanablePtr< grpc_core::ByteStream > * recv_message
Definition: internal.h:550
uint32_t fetched_send_message_length
Definition: internal.h:539
uint8_t header_frames_received
how many header frames have we received?
Definition: internal.h:607
grpc_published_metadata_method published_metadata[2]
Definition: internal.h:580
uint8_t included[STREAM_LIST_COUNT]
Definition: internal.h:527
grpc_slice_buffer flow_controlled_buffer
Definition: internal.h:625
grpc_metadata_batch * recv_trailing_metadata
Definition: internal.h:552
grpc_chttp2_write_cb * on_flow_controlled_cbs
Definition: internal.h:627
grpc_error * forced_close_error
saw some stream level error
Definition: internal.h:605
size_t byte_counter
Byte counter for number of bytes written.
Definition: internal.h:647
size_t sending_bytes
Definition: internal.h:630
grpc_slice_buffer unprocessed_incoming_frames_buffer
Definition: internal.h:597
grpc_transport_stream_stats stats
Definition: internal.h:556
grpc_closure * send_initial_metadata_finished
Definition: internal.h:534
grpc_closure * recv_trailing_metadata_finished
Definition: internal.h:553
grpc_error * read_closed_error
the error that resulted in this stream being read-closed
Definition: internal.h:576
int64_t flow_controlled_bytes_written
Definition: internal.h:542
bool final_metadata_requested
Definition: internal.h:581
grpc_chttp2_stream_link links[STREAM_LIST_COUNT]
Definition: internal.h:526
bool traced
Whether the bytes needs to be traced using Fathom.
Definition: internal.h:643
bool unprocessed_incoming_frames_decompressed
Whether bytes stored in unprocessed_incoming_byte_stream is decompressed.
Definition: internal.h:641
size_t decompressed_header_bytes
gRPC header bytes that are already decompressed
Definition: internal.h:645
grpc_millis deadline
Definition: internal.h:602
bool all_incoming_byte_streams_finished
Are all published incoming byte streams closed.
Definition: internal.h:563
grpc_error * byte_stream_error
Definition: internal.h:599
bool pending_byte_stream
Definition: internal.h:588
grpc_closure reset_byte_stream
Definition: internal.h:598
grpc_stream_compression_context * stream_compression_ctx
Stream compression compress context.
Definition: internal.h:653
bool write_closed
Is this stream closed for writing.
Definition: internal.h:559
bool sent_trailing_metadata
Definition: internal.h:617
grpc_stream_compression_context * stream_decompression_ctx
Stream compression decompress context.
Definition: internal.h:658
grpc_chttp2_incoming_metadata_buffer metadata_buffer[2]
Definition: internal.h:583
grpc_chttp2_stream(grpc_chttp2_transport *t, grpc_stream_refcount *refcount, const void *server_data, grpc_core::Arena *arena)
Definition: chttp2_transport.cc:628
grpc_closure * destroy_stream_arg
Definition: internal.h:524
grpc_closure * recv_initial_metadata_ready
Definition: internal.h:548
struct grpc_chttp2_stream::Reffer reffer
grpc_core::PolymorphicManualConstructor< grpc_core::chttp2::StreamFlowControlBase, grpc_core::chttp2::StreamFlowControl, grpc_core::chttp2::StreamFlowControlDisabled > flow_control
Definition: internal.h:623
grpc_metadata_batch * recv_initial_metadata
Definition: internal.h:547
grpc_stream_compression_method stream_compression_method
Definition: internal.h:633
int64_t flow_controlled_bytes_flowed
Definition: internal.h:543
grpc_slice_buffer frame_storage
Definition: internal.h:585
grpc_closure * recv_message_ready
Definition: internal.h:551
size_t uncompressed_data_size
Amount of uncompressed bytes sent out when compressed_data_buffer is emptied.
Definition: internal.h:651
void * context
Definition: internal.h:513
grpc_slice fetching_slice
Definition: internal.h:540
grpc_slice_buffer decompressed_data_buffer
Temporary buffer storing decompressed data.
Definition: internal.h:663
int64_t next_message_end_offset
Definition: internal.h:541
grpc_chttp2_transport * t
Definition: internal.h:514
grpc_closure destroy_stream
Definition: internal.h:523
grpc_core::OrphanablePtr< grpc_core::ByteStream > fetching_send_message
Definition: internal.h:538
int64_t received_bytes
number of bytes received - reset at end of parse thread execution
Definition: internal.h:614
bool write_buffering
Are we buffering writes on this stream? If yes, we won't become writable until there's enough queued ...
Definition: internal.h:569
bool read_closed
Is this stream reading half-closed.
Definition: internal.h:561
~grpc_chttp2_stream()
Definition: chttp2_transport.cc:658
grpc_stream_refcount * refcount
Definition: internal.h:515
grpc_stream_compression_method stream_decompression_method
Definition: internal.h:636
grpc_transport_stream_stats * collecting_stats
Definition: internal.h:555
grpc_chttp2_write_cb * finish_after_write
Definition: internal.h:629
bool * trailing_metadata_available
Definition: internal.h:549
grpc_closure * on_next
Definition: internal.h:587
bool seen_error
Has this stream seen an error.
Definition: internal.h:566
Definition: internal.h:290
char * peer_string
Definition: internal.h:299
grpc_core::ContextList * cl
Definition: internal.h:489
void * parser_data
Definition: internal.h:430
grpc_millis keepalive_timeout
grace period for a ping to complete before watchdog kicks in
Definition: internal.h:482
uint32_t write_buffer_size
how much data are we willing to buffer when the WRITE_BUFFER_HINT is set?
Definition: internal.h:358
grpc_closure read_action_locked
Definition: internal.h:328
uint8_t header_eof
Definition: internal.h:423
bool is_client
is this a client?
Definition: internal.h:351
size_t ping_ack_capacity
Definition: internal.h:393
grpc_closure benign_reclaimer_locked
benign cleanup closure
Definition: internal.h:456
grpc_closure write_action_end_locked
Definition: internal.h:326
grpc_closure finish_keepalive_ping_locked
Cousure to run when the keepalive ping ack is received.
Definition: internal.h:472
uint64_t * ping_acks
Definition: internal.h:394
uint32_t next_stream_id
what is the next stream id to be allocated by this peer? copied to next_stream_id in parsing when par...
Definition: internal.h:379
grpc_chttp2_rst_stream_parser rst_stream
Definition: internal.h:404
int64_t initial_window_update
initial window change.
Definition: internal.h:417
grpc_chttp2_settings_parser settings
Definition: internal.h:402
grpc_chttp2_window_update_parser window_update
Definition: internal.h:401
grpc_millis keepalive_time
time duration in between pings
Definition: internal.h:480
bool bdp_ping_started
If start_bdp_ping_locked has been called.
Definition: internal.h:463
grpc_chttp2_sent_goaway_state sent_goaway_state
Definition: internal.h:364
grpc_closure finish_bdp_ping_locked
Definition: internal.h:441
grpc_chttp2_deframe_transport_state deframe_state
Definition: internal.h:420
grpc_timer keepalive_ping_timer
timer to initiate ping events
Definition: internal.h:476
grpc_closure * notify_on_receive_settings
Definition: internal.h:305
bool dirtied_local_settings
are the local settings dirty and need to be sent?
Definition: internal.h:367
grpc_core::RefCountedPtr< grpc_core::channelz::SocketNode > channelz_socket
Definition: internal.h:490
grpc_closure_list run_after_write
Definition: internal.h:448
uint64_t ping_ctr
Definition: internal.h:388
bool reading_paused_on_pending_induced_frames
Definition: internal.h:498
grpc_timer keepalive_watchdog_timer
watchdog to kill the transport when waiting for the keepalive ping
Definition: internal.h:478
size_t ping_ack_count
ping acks
Definition: internal.h:392
grpc_chttp2_stream ** accepting_stream
address to place a newly accepted stream - set and unset by grpc_chttp2_parsing_accept_stream; used b...
Definition: internal.h:336
uint32_t incoming_frame_size
Definition: internal.h:426
bool keepalive_permit_without_calls
if keepalive pings are allowed when there's no outstanding streams
Definition: internal.h:484
grpc_slice_buffer outbuf
data to write now
Definition: internal.h:347
grpc_chttp2_goaway_parser goaway_parser
parser for goaway frames
Definition: internal.h:407
void * accept_stream_cb_user_data
Definition: internal.h:341
grpc_chttp2_repeated_ping_policy ping_policy
Definition: internal.h:386
uint32_t last_new_stream_id
last new stream id
Definition: internal.h:382
uint32_t num_pending_induced_frames
The number of pending induced frames (SETTINGS_ACK, PINGS_ACK and RST_STREAM) in the outgoing buffer ...
Definition: internal.h:497
grpc_chttp2_ping_queue ping_queue
ping queues for various ping insertion points
Definition: internal.h:385
grpc_timer next_bdp_ping_timer
Definition: internal.h:464
bool keepalive_ping_started
If start_keepalive_ping_locked has been called.
Definition: internal.h:486
bool benign_reclaimer_registered
have we scheduled a benign cleanup?
Definition: internal.h:452
uint8_t endpoint_reading
is there a read request to the endpoint outstanding?
Definition: internal.h:316
grpc_chttp2_stream_list lists[STREAM_LIST_COUNT]
various lists of streams
Definition: internal.h:319
bool is_first_frame
Definition: internal.h:424
grpc_closure start_keepalive_ping_locked
Closure to run when the keepalive ping is sent.
Definition: internal.h:470
grpc_chttp2_stream_map stream_map
maps stream id to grpc_chttp2_stream objects
Definition: internal.h:322
grpc_chttp2_stream * incoming_stream
Definition: internal.h:431
grpc_resource_user * resource_user
Definition: internal.h:301
grpc_closure next_bdp_ping_timer_expired_locked
Definition: internal.h:439
grpc_slice_buffer qbuf
data to write next write
Definition: internal.h:354
grpc_chttp2_write_state write_state
write execution state of the transport
Definition: internal.h:308
grpc_closure retry_initiate_ping_locked
Definition: internal.h:389
grpc_closure keepalive_watchdog_fired_locked
Closrue to run when the keepalive ping timeouts.
Definition: internal.h:474
uint32_t num_messages_in_next_write
Definition: internal.h:491
uint8_t destroying
is the transport destroying itself?
Definition: internal.h:311
grpc_chttp2_keepalive_state keepalive_state
keep-alive state machine state
Definition: internal.h:488
grpc_chttp2_hpack_parser hpack_parser
parser for headers
Definition: internal.h:398
~grpc_chttp2_transport()
Definition: chttp2_transport.cc:175
grpc_closure destructive_reclaimer_locked
destructive cleanup closure
Definition: internal.h:458
grpc_slice_buffer read_buffer
incoming read bytes
Definition: internal.h:331
grpc_core::RefCount refs
Definition: internal.h:297
grpc_endpoint * ep
Definition: internal.h:298
uint32_t expect_continuation_stream_id
Definition: internal.h:425
grpc_error * close_transport_on_writes_finished
Definition: internal.h:445
grpc_closure write_action_begin_locked
Definition: internal.h:324
grpc_transport base
Definition: internal.h:296
uint8_t incoming_frame_type
Definition: internal.h:421
bool have_next_bdp_ping_timer
Definition: internal.h:461
uint32_t settings[GRPC_NUM_SETTING_SETS][GRPC_CHTTP2_NUM_SETTINGS]
settings values
Definition: internal.h:375
void(* accept_stream_cb)(void *user_data, grpc_transport *transport, const void *server_data)
Definition: internal.h:339
union grpc_chttp2_transport::@11 simple
simple one shot parsers
uint32_t incoming_stream_id
Definition: internal.h:427
bool destructive_reclaimer_registered
have we scheduled a destructive cleanup?
Definition: internal.h:454
grpc_core::ConnectivityStateTracker state_tracker
connectivity tracking
Definition: internal.h:344
bool sent_local_settings
have local settings been sent?
Definition: internal.h:369
grpc_chttp2_ping_parser ping
Definition: internal.h:403
grpc_core::PolymorphicManualConstructor< grpc_core::chttp2::TransportFlowControlBase, grpc_core::chttp2::TransportFlowControl, grpc_core::chttp2::TransportFlowControlDisabled > flow_control
Definition: internal.h:413
grpc_chttp2_transport(const grpc_channel_args *channel_args, grpc_endpoint *ep, bool is_client, grpc_resource_user *resource_user)
Definition: chttp2_transport.cc:440
grpc_chttp2_repeated_ping_state ping_state
Definition: internal.h:387
uint32_t force_send_settings
bitmask of setting indexes to send out Hack: it's common for implementations to assume 65536 bytes in...
Definition: internal.h:373
grpc_closure init_keepalive_ping_locked
Closure to initialize a keepalive ping.
Definition: internal.h:468
grpc_chttp2_server_ping_recv_state ping_recv_state
Definition: internal.h:395
uint8_t incoming_frame_flags
Definition: internal.h:422
grpc_error * goaway_error
Set to a grpc_error object if a goaway frame is received.
Definition: internal.h:362
grpc_core::Combiner * combiner
Definition: internal.h:303
grpc_chttp2_hpack_compressor hpack_compressor
hpack encoding
Definition: internal.h:349
grpc_error * closed_with_error
has the upper layer closed the transport?
Definition: internal.h:313
grpc_closure start_bdp_ping_locked
Definition: internal.h:440
grpc_closure write_action
Definition: internal.h:325
grpc_chttp2_write_cb * write_cb_pool
Definition: internal.h:436
Definition: frame_window_update.h:28
Definition: internal.h:205
grpc_closure * closure
Definition: internal.h:207
struct grpc_chttp2_write_cb * next
Definition: internal.h:208
int64_t call_at_byte
Definition: internal.h:206
A closure over a grpc_iomgr_cb_func.
Definition: closure.h:56
Definition: endpoint.h:102
Definition: error_internal.h:39
Definition: resource_quota.cc:63
Represents an expandable array of slices, to be interpreted as a single item.
Definition: slice.h:78
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1].
Definition: slice.h:60
Definition: stream_compression.h:34
Definition: transport.h:56
Definition: transport.h:128
Definition: transport_impl.h:66