Module cow_http2_machine

Data Types

http2_machine()

abstract datatype: http2_machine()

opts()

opts() = #{connection_window_margin_size => 0..2147483647, connection_window_update_threshold => 0..2147483647, enable_connect_protocol => boolean(), initial_connection_window_size => 65535..2147483647, initial_stream_window_size => 0..2147483647, max_connection_window_size => 0..2147483647, max_concurrent_streams => non_neg_integer() | infinity, max_decode_table_size => non_neg_integer(), max_encode_table_size => non_neg_integer(), max_fragmented_header_block_size => 16384..2147483647, max_frame_size_received => 16384..16777215, max_frame_size_sent => 16384..16777215 | infinity, max_stream_window_size => 0..2147483647, message_tag => any(), preface_timeout => timeout(), settings_timeout => timeout(), stream_window_data_threshold => 0..2147483647, stream_window_margin_size => 0..2147483647, stream_window_update_threshold => 0..2147483647}

Function Index

ensure_window/2
ensure_window/3
frame/2
get_connection_local_buffer_size/1
get_last_streamid/1
get_local_setting/2
get_remote_settings/1
get_stream_local_buffer_size/2
get_stream_local_state/2
get_stream_remote_state/2
ignored_frame/1
init/2
init_stream/2
init_upgrade_stream/2
is_lingering_stream/2
is_remote_concurrency_limit_reached/1
prepare_headers/5
prepare_push_promise/4
prepare_trailers/3
reset_stream/2
send_or_queue_data/4
set_last_streamid/1
terminate/1
timeout/3
update_window/2
update_window/3

Function Details

ensure_window/2

ensure_window(Size::non_neg_integer(), State) -> ok | {ok, pos_integer(), State}

ensure_window/3

ensure_window(StreamID::cow_http2:streamid(), Size::non_neg_integer(), State) -> ok | {ok, pos_integer(), State}

frame/2

frame(Frame::cow_http2:frame(), State) -> {ok, State} | {ok, {data, cow_http2:streamid(), cow_http:fin(), binary()}, State} | {ok, {headers, cow_http2:streamid(), cow_http:fin(), cow_http:headers(), cow_http:pseudo_headers(), non_neg_integer() | undefined}, State} | {ok, {trailers, cow_http2:streamid(), cow_http:headers()}, State} | {ok, {rst_stream, cow_http2:streamid(), cow_http2:error()}, State} | {ok, {push_promise, cow_http2:streamid(), cow_http2:streamid(), cow_http:headers(), cow_http:pseudo_headers()}, State} | {ok, {goaway, cow_http2:streamid(), cow_http2:error(), binary()}, State} | {send, [{cow_http2:streamid(), cow_http:fin(), [{data, iodata()} | #sendfile{offset = non_neg_integer(), bytes = pos_integer(), path = file:name_all()} | {trailers, cow_http:headers()}]}], State} | {error, {stream_error, cow_http2:streamid(), cow_http2:error(), atom()}, State} | {error, {connection_error, cow_http2:error(), atom()}, State}

get_connection_local_buffer_size/1

get_connection_local_buffer_size(Http2_machine::http2_machine()) -> non_neg_integer()

get_last_streamid/1

get_last_streamid(Http2_machine::http2_machine()) -> cow_http2:streamid()

get_local_setting/2

get_local_setting(Key::atom(), Http2_machine::http2_machine()) -> atom() | integer()

get_remote_settings/1

get_remote_settings(Http2_machine::http2_machine()) -> map()

get_stream_local_buffer_size/2

get_stream_local_buffer_size(StreamID::cow_http2:streamid(), State::http2_machine()) -> {ok, non_neg_integer()} | {error, not_found | closed}

get_stream_local_state/2

get_stream_local_state(StreamID::cow_http2:streamid(), State::http2_machine()) -> {ok, idle | cow_http:fin(), empty | nofin | fin} | {error, not_found | closed}

get_stream_remote_state/2

get_stream_remote_state(StreamID::cow_http2:streamid(), State::http2_machine()) -> {ok, idle | cow_http:fin()} | {error, not_found | closed}

ignored_frame/1

ignored_frame(State) -> {ok, State} | {error, {connection_error, protocol_error, atom()}, State}

init/2

init(X1::client | server, Opts::opts()) -> {ok, iodata(), http2_machine()}

init_stream/2

init_stream(Method::binary(), State) -> {ok, cow_http2:streamid(), State}

init_upgrade_stream/2

init_upgrade_stream(Method::binary(), State) -> {ok, cow_http2:streamid(), State}

is_lingering_stream/2

is_lingering_stream(StreamID::cow_http2:streamid(), Http2_machine::http2_machine()) -> boolean()

is_remote_concurrency_limit_reached/1

is_remote_concurrency_limit_reached(State::http2_machine()) -> boolean()

prepare_headers/5

prepare_headers(StreamID::cow_http2:streamid(), State, IsFin0::idle | cow_http:fin(), PseudoHeaders::cow_http:pseudo_headers(), Headers0::cow_http:headers()) -> {ok, cow_http:fin(), iodata(), State}

prepare_push_promise/4

prepare_push_promise(StreamID::cow_http2:streamid(), State, PseudoHeaders::cow_http:pseudo_headers(), Headers0::cow_http:headers()) -> {ok, cow_http2:streamid(), iodata(), State} | {error, no_push}

prepare_trailers/3

prepare_trailers(StreamID::cow_http2:streamid(), State, Trailers::cow_http:headers()) -> {ok, iodata(), State}

reset_stream/2

reset_stream(StreamID::cow_http2:streamid(), State) -> {ok, State} | {error, not_found}

send_or_queue_data/4

send_or_queue_data(StreamID::cow_http2:streamid(), State, IsFin0::cow_http:fin(), DataOrFileOrTrailers) -> {ok, State} | {send, [{cow_http2:streamid(), cow_http:fin(), [DataOrFileOrTrailers]}], State}

set_last_streamid/1

set_last_streamid(State::http2_machine()) -> {cow_http2:streamid(), http2_machine()}

terminate/1

terminate(State::http2_machine()) -> ok

timeout/3

timeout(X1::preface_timeout | settings_timeout, TRef::reference(), State) -> {ok, State} | {error, {connection_error, cow_http2:error(), atom()}, State}

update_window/2

update_window(Size::1..2147483647, State) -> State

update_window/3

update_window(StreamID::cow_http2:streamid(), Size::1..2147483647, State) -> State


Generated by EDoc