adk_admission_control (erlang_adk v0.7.0)

View Source

Monitored global/per-agent admission controller.

Permits are owned by Erlang processes. Owner death, explicit release, or cancellation returns capacity exactly once. When capacity is unavailable a request either fails immediately (reject) or enters a bounded queue. The queue selects the oldest request that is currently eligible, preserving FIFO order per agent while avoiding head-of-line blocking across independent agents.

Summary

Types

permit_ref/0

-type permit_ref() :: binary().

request_ref/0

-type request_ref() :: binary().

Functions

acquire(AgentId, Options)

-spec acquire(binary(), map()) -> {ok, permit_ref()} | {error, term()}.

acquire(Server, AgentId, Options)

-spec acquire(gen_server:server_ref(), binary(), map()) -> {ok, permit_ref()} | {error, term()}.

await(RequestRef, Timeout)

-spec await(request_ref(), timeout()) -> {ok, permit_ref()} | {error, term()}.

cancel(RequestRef)

-spec cancel(request_ref()) -> ok | {error, term()}.

cancel(Server, RequestRef)

-spec cancel(gen_server:server_ref(), request_ref()) -> ok | {error, term()}.

child_spec(Options)

-spec child_spec(map()) -> supervisor:child_spec().

code_change(OldVersion, State, Extra)

deadline_after(Timeout)

-spec deadline_after(non_neg_integer() | infinity) -> integer() | infinity.

handle_call(Request, From, State0)

handle_cast(Message, State)

handle_info(Info, State0)

init(Options)

release(Permit)

-spec release(permit_ref()) -> ok | {error, term()}.

release(Server, Permit)

-spec release(gen_server:server_ref(), permit_ref()) -> ok | {error, term()}.

start_link()

-spec start_link() -> gen_server:start_ret().

start_link(Options)

-spec start_link(map()) -> gen_server:start_ret().

status()

-spec status() -> {ok, map()} | {error, term()}.

status(Server)

-spec status(gen_server:server_ref()) -> {ok, map()} | {error, term()}.

submit(AgentId, Options)

-spec submit(binary(), map()) ->
                {ok, request_ref(), {granted, permit_ref()} | {queued, integer() | infinity}} |
                {error, term()}.

submit(Server, AgentId, Options)

-spec submit(gen_server:server_ref(), binary(), map()) ->
                {ok, request_ref(), {granted, permit_ref()} | {queued, integer() | infinity}} |
                {error, term()}.

terminate(Reason, State)