shackle_server (shackle v0.8.0)

View Source

Summary

Types

client_state/0

-type client_state() :: term().

id/0

-type id() :: {shackle_pool:name(), index()}.

index/0

-type index() :: pos_integer().

init_options/0

-type init_options() :: term().

name/0

-type name() :: atom().

opts/0

reconnect_state/0

-type reconnect_state() ::
          #reconnect_state{current :: undefined | shackle:time(),
                           max :: shackle:time() | infinity,
                           min :: shackle:time()}.

state/0

-type state() ::
          #state{address :: shackle:inet_address(),
                 backlog :: atomics:atomics_ref(),
                 client :: shackle:client(),
                 id :: id(),
                 init_options :: init_options(),
                 max_requests :: pos_integer() | infinity,
                 name :: name(),
                 parent :: pid(),
                 pool_name :: shackle_pool:name(),
                 port :: shackle:inet_port(),
                 protocol :: shackle:protocol(),
                 queue :: #{shackle:external_request_id() => {shackle:cast(), integer()}},
                 reconnect_state :: undefined | reconnect_state(),
                 requests_left :: non_neg_integer() | infinity,
                 socket :: undefined | shackle:socket(),
                 socket_options :: shackle:socket_options(),
                 sweep_deadline :: integer(),
                 sweep_ref :: undefined | reference(),
                 telemetry :: boolean(),
                 timer_ref :: undefined | reference()}.

Functions

handle_msg(Msg, _)

-spec handle_msg(term(), {state(), client_state()}) -> {ok, term()}.

init(Name, Parent, Opts)

-spec init(name(), pid(), opts()) -> no_return().

start_link(Name, Opts)

-spec start_link(name(), opts()) -> {ok, pid()}.

terminate(Reason, _)

-spec terminate(term(), term()) -> ok.