|
|
@ -186,24 +186,24 @@ typedef struct grpc_chttp2_write_cb { |
|
|
|
struct grpc_chttp2_incoming_byte_stream { |
|
|
|
struct grpc_chttp2_incoming_byte_stream { |
|
|
|
grpc_byte_stream base; |
|
|
|
grpc_byte_stream base; |
|
|
|
gpr_refcount refs; |
|
|
|
gpr_refcount refs; |
|
|
|
struct grpc_chttp2_incoming_byte_stream *next_message; |
|
|
|
struct grpc_chttp2_incoming_byte_stream *next_message; /* unused; should be removed */ |
|
|
|
grpc_error *error; |
|
|
|
grpc_error *error; /* protected by slice_mu */ |
|
|
|
bool push_closed; |
|
|
|
bool push_closed; /* protected by slice_mu */ |
|
|
|
|
|
|
|
|
|
|
|
grpc_chttp2_transport *transport; |
|
|
|
grpc_chttp2_transport *transport; /* immutable */ |
|
|
|
grpc_chttp2_stream *stream; |
|
|
|
grpc_chttp2_stream *stream; /* immutable */ |
|
|
|
bool is_tail; |
|
|
|
bool is_tail; /* immutable */ |
|
|
|
|
|
|
|
|
|
|
|
gpr_mu slice_mu; // protects slices, on_next
|
|
|
|
gpr_mu slice_mu; |
|
|
|
grpc_slice_buffer slices; |
|
|
|
grpc_slice_buffer slices; /* unused; should be removed */ |
|
|
|
grpc_closure *on_next; |
|
|
|
grpc_closure *on_next; /* protected by slice_mu */ |
|
|
|
uint32_t remaining_bytes; |
|
|
|
uint32_t remaining_bytes; /* guaranteed one thread access */ |
|
|
|
|
|
|
|
|
|
|
|
struct { |
|
|
|
struct { |
|
|
|
grpc_closure closure; |
|
|
|
grpc_closure closure; |
|
|
|
size_t max_size_hint; |
|
|
|
size_t max_size_hint; |
|
|
|
grpc_closure *on_complete; |
|
|
|
grpc_closure *on_complete; |
|
|
|
} next_action; |
|
|
|
} next_action; /* guaranteed one thread access */ |
|
|
|
grpc_closure destroy_action; |
|
|
|
grpc_closure destroy_action; |
|
|
|
grpc_closure finished_action; |
|
|
|
grpc_closure finished_action; |
|
|
|
}; |
|
|
|
}; |
|
|
@ -488,10 +488,10 @@ struct grpc_chttp2_stream { |
|
|
|
|
|
|
|
|
|
|
|
grpc_chttp2_incoming_metadata_buffer metadata_buffer[2]; |
|
|
|
grpc_chttp2_incoming_metadata_buffer metadata_buffer[2]; |
|
|
|
|
|
|
|
|
|
|
|
grpc_chttp2_incoming_byte_stream *incoming_frames; |
|
|
|
grpc_chttp2_incoming_byte_stream *incoming_frames; /* protected by buffer_mu */ |
|
|
|
gpr_mu buffer_mu; /* protects unprocessed_incoming_frames_buffer and
|
|
|
|
gpr_mu buffer_mu; /* protects unprocessed_incoming_frames_buffer and
|
|
|
|
parse_data */ |
|
|
|
data_parser */ |
|
|
|
grpc_slice_buffer unprocessed_incoming_frames_buffer; |
|
|
|
grpc_slice_buffer unprocessed_incoming_frames_buffer; /* protected by buffer_mu */ |
|
|
|
|
|
|
|
|
|
|
|
gpr_timespec deadline; |
|
|
|
gpr_timespec deadline; |
|
|
|
|
|
|
|
|
|
|
@ -504,7 +504,7 @@ struct grpc_chttp2_stream { |
|
|
|
* incoming_window = incoming_window_delta + transport.initial_window_size */ |
|
|
|
* incoming_window = incoming_window_delta + transport.initial_window_size */ |
|
|
|
int64_t incoming_window_delta; |
|
|
|
int64_t incoming_window_delta; |
|
|
|
/** parsing state for data frames */ |
|
|
|
/** parsing state for data frames */ |
|
|
|
grpc_chttp2_data_parser data_parser; |
|
|
|
grpc_chttp2_data_parser data_parser; /* protected by buffer_mu */ |
|
|
|
/** number of bytes received - reset at end of parse thread execution */ |
|
|
|
/** number of bytes received - reset at end of parse thread execution */ |
|
|
|
int64_t received_bytes; |
|
|
|
int64_t received_bytes; |
|
|
|
|
|
|
|
|
|
|
|