View Source quicer_stream behaviour (quicer v0.0.303)

Summary

Callbacks

Handle API call with callback state.
Handle continue from other callbacks with callback state.
Handle unhandled info with callback state.
Stream handle data
Prepare callback state before ownership handoff
Stream accepter is assigned to the owner of the new stream
Stream now in 'passive' mode.
Handle stream 'peer_accepted'. The stream which **was not accepted** due to peer flow control is now accepted by the peer.
Handle stream peer_receive_aborted
Handle stream peer_send_aborted.
Handle stream peer_send_shutdown.
Post handoff with PostData if any. Most common action is to set the stream mode to active.
Handle send completed.
Handle stream send_shutdown_complete. Happen immediately on an abortive send or after a graceful send has been acknowledged by the peer.
Handle local initiated stream start completed
Handle stream closed, Both endpoints of sending and receiving of the stream have been shut down.

Functions

Start a new stream owner process and then handoff ownership to this process --------------------------------------------------------------------

Types

-type cb_ret() ::
    {ok, cb_state()} |
    {error, Reason :: term(), cb_state()} |
    {hibernate, cb_state()} |
    {{continue, Continue :: term()}, cb_state()} |
    {timeout(), cb_state()} |
    {stop, Reason :: term(), cb_state()}.
-type cb_state() :: term().
-type conf_handle() :: reference().
-type connection_handle() :: reference().
-type global_handle() :: quic_global.
-type listener_handle() :: reference().
-type new_stream_props() :: #{is_orphan := boolean(), flags := stream_open_flags()}.
-type reg_handle() :: reference().
-type state() ::
    #{stream := quicer:stream_handle(),
      conn := quicer:connection_handle(),
      callback := atom(),
      callback_state := term(),
      is_owner := boolean(),
      stream_opts := map()}.
-type stream_handle() :: reference().
-type stream_open_flags() :: 0 | 1 | 2.

Callbacks

Link to this callback

handle_call/3

View Source (optional)
-callback handle_call(Req :: term(), gen_server:from(), cb_state()) -> cb_ret().
Handle API call with callback state.
Link to this callback

handle_continue/2

View Source (optional)
-callback handle_continue(Cont :: term(), cb_state()) -> cb_ret().
Handle continue from other callbacks with callback state.
Link to this callback

handle_info/2

View Source (optional)
-callback handle_info(Info :: term(), cb_state()) -> cb_ret().
Handle unhandled info with callback state.
Link to this callback

handle_stream_data/4

View Source (optional)
-callback handle_stream_data(stream_handle(), binary(), recv_data_props(), cb_state()) -> cb_ret().
Stream handle data
-callback init_handoff(stream_handle(), stream_opts(), connection_handle(), new_stream_props()) -> cb_ret().
Prepare callback state before ownership handoff
-callback new_stream(stream_handle(), new_stream_props(), connection_handle()) -> cb_ret().
Stream accepter is assigned to the owner of the new stream
-callback passive(stream_handle(), undefined, cb_state()) -> cb_ret().
Stream now in 'passive' mode.
-callback peer_accepted(connection_handle(), stream_handle(), cb_state()) -> cb_ret().
Handle stream 'peer_accepted'. The stream which **was not accepted** due to peer flow control is now accepted by the peer.
-callback peer_receive_aborted(stream_handle(), error_code(), cb_state()) -> cb_ret().
Handle stream peer_receive_aborted
-callback peer_send_aborted(stream_handle(), error_code(), cb_state()) -> cb_ret().
Handle stream peer_send_aborted.
-callback peer_send_shutdown(stream_handle(), undefined, cb_state()) -> cb_ret().
Handle stream peer_send_shutdown.
Link to this callback

post_handoff/3

View Source (optional)
-callback post_handoff(stream_handle(), PostInfo :: term(), cb_state()) -> cb_ret().
Post handoff with PostData if any. Most common action is to set the stream mode to active.
-callback send_complete(stream_handle(), IsCanceled :: boolean(), cb_state()) -> cb_ret().
Handle send completed.
Link to this callback

send_shutdown_complete/3

View Source
-callback send_shutdown_complete(stream_handle(), IsGraceful :: boolean(), cb_state()) -> cb_ret().
Handle stream send_shutdown_complete. Happen immediately on an abortive send or after a graceful send has been acknowledged by the peer.
-callback start_completed(stream_handle(), stream_start_completed_props(), cb_state()) -> cb_ret().
Handle local initiated stream start completed
-callback stream_closed(stream_handle(), stream_closed_props(), cb_state()) -> cb_ret().
Handle stream closed, Both endpoints of sending and receiving of the stream have been shut down.

Functions

-spec send(pid(), binary()) -> {ok, Length :: non_neg_integer()} | {error, any()}.
Link to this function

send(StreamProc, Data, Flag)

View Source
Link to this function

start_link(Callback, Conn, StreamOpts)

View Source
-spec start_link(Callback :: module(), Conn :: quicer:connection_handle(), StreamOpts :: map()) ->
              {ok, Pid :: pid()} |
              {error, Error :: {already_started, pid()}} |
              {error, Error :: term()} |
              ignore.
Starts the server
Link to this function

start_link(Callback, Stream, Conn, StreamOpts, Props)

View Source
-spec start_link(Callback :: module(),
           Stream :: quicer:connection_handle(),
           Conn :: quicer:connection_handle(),
           StreamOpts :: map(),
           Props :: new_stream_props()) ->
              {ok, Pid :: pid()} |
              {error, Error :: {already_started, pid()}} |
              {error, Error :: term()} |
              ignore.
Start a new stream owner process and then handoff ownership to this process --------------------------------------------------------------------
Link to this function

wait_for_handoff(FromOwner, Stream)

View Source