17#ifndef __mod_h2__h2_stream__
18#define __mod_h2__h2_stream__
67#define H2_STRM_MAGIC_OK 0x5354524d
68#define H2_STRM_MAGIC_SDEL 0x5344454c
69#define H2_STRM_MAGIC_PDEL 0x5044454c
71#define H2_STRM_ASSIGN_MAGIC(s,m) ((s)->magic = m)
72#define H2_STRM_ASSERT_MAGIC(s,m) ap_assert((s)->magic == m)
74#define H2_STRM_ASSIGN_MAGIC(s,m) ((void)0)
75#define H2_STRM_ASSERT_MAGIC(s,m) ((void)0)
96#if AP_HAS_RESPONSE_BUCKETS
133#define H2_STREAM_RST(s, def) (s->rst_error? s->rst_error : (def))
305#if AP_HAS_RESPONSE_BUCKETS
316#if AP_HAS_RESPONSE_BUCKETS
338#define H2_STRM_MSG(s, msg) \
339 "h2_stream(%d-%lu-%d,%s): "msg, s->session->child_num, \
340 (unsigned long)s->session->id, s->id, h2_stream_state_str(s)
342#define H2_STRM_LOG(aplogno, s, msg) aplogno H2_STRM_MSG(s, msg)
const char apr_size_t len
apr_brigade_flush void * ctx
const char apr_ssize_t int flags
const char int apr_pool_t * pool
apr_status_t h2_stream_add_header(h2_stream *stream, const char *name, size_t nlen, const char *value, size_t vlen)
apr_status_t h2_stream_set_request_rec(h2_stream *stream, request_rec *r, int eos)
void h2_stream_dispatch(h2_stream *stream, h2_stream_event_t ev)
void h2_stream_set_request(h2_stream *stream, const h2_request *r)
apr_status_t h2_stream_recv_DATA(h2_stream *stream, uint8_t flags, const uint8_t *data, size_t len)
apr_status_t h2_stream_submit_pushes(h2_stream *stream, struct h2_headers *response)
const char * h2_stream_state_str(const h2_stream *stream)
apr_status_t h2_stream_in_consumed(h2_stream *stream, apr_off_t amount)
int h2_stream_is_at(const h2_stream *stream, h2_stream_state_t state)
void h2_stream_destroy(h2_stream *stream)
void h2_stream_event_cb(void *ctx, h2_stream *stream, h2_stream_event_t ev)
void h2_stream_set_monitor(h2_stream *stream, h2_stream_monitor *monitor)
void h2_stream_cleanup(h2_stream *stream)
void h2_stream_on_output_change(h2_stream *stream)
h2_stream * h2_stream_create(int id, apr_pool_t *pool, struct h2_session *session, h2_stream_monitor *monitor, int initiated_on)
void h2_stream_rst(h2_stream *stream, int error_code)
apr_status_t h2_stream_end_headers(h2_stream *stream, int eos, size_t raw_bytes)
apr_status_t h2_stream_send_frame(h2_stream *stream, int frame_type, int flags, size_t frame_len)
int h2_stream_is_at_or_past(const h2_stream *stream, h2_stream_state_t state)
void h2_stream_on_input_change(h2_stream *stream)
apr_status_t h2_stream_prepare_processing(h2_stream *stream)
apr_status_t h2_stream_recv_frame(h2_stream *stream, int frame_type, int flags, size_t frame_len)
int h2_stream_is_ready(h2_stream *stream)
int h2_stream_wants_send_data(h2_stream *stream)
apr_table_t * h2_stream_get_trailers(h2_stream *stream)
apr_status_t h2_stream_read_to(h2_stream *stream, apr_bucket_brigade *bb, apr_off_t *plen, int *peos)
const struct h2_priority * h2_stream_get_priority(h2_stream *stream, struct h2_headers *response)
void h2_stream_state_cb(void *ctx, h2_stream *stream)
Structure to store things which are per connection.
h2_stream_state_cb * on_state_enter
h2_stream_event_cb * on_state_event
h2_stream_event_cb * on_event
h2_stream_state_cb * on_state_invalid
struct h2_headers * response
struct h2_bucket_beam * output
unsigned int input_closed
apr_off_t in_trailer_octets
h2_stream_monitor * monitor
struct h2_bucket_beam * input
int request_headers_failed
const h2_priority * pref_priority
apr_table_t * trailers_in
apr_bucket_brigade * out_buffer
apr_off_t out_data_octets
int request_headers_added
unsigned int sent_trailers
apr_off_t out_frame_octets
apr_off_t out_data_frames
const struct h2_request * request
apr_bucket_brigade * in_buffer
struct h2_session * session
A structure that represents the current request.