adk_admission_control (erlang_adk v0.7.0)
View SourceMonitored 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
Functions
-spec acquire(binary(), map()) -> {ok, permit_ref()} | {error, term()}.
-spec acquire(gen_server:server_ref(), binary(), map()) -> {ok, permit_ref()} | {error, term()}.
-spec await(request_ref(), timeout()) -> {ok, permit_ref()} | {error, term()}.
-spec cancel(request_ref()) -> ok | {error, term()}.
-spec cancel(gen_server:server_ref(), request_ref()) -> ok | {error, term()}.
-spec child_spec(map()) -> supervisor:child_spec().
-spec deadline_after(non_neg_integer() | infinity) -> integer() | infinity.
-spec release(permit_ref()) -> ok | {error, term()}.
-spec release(gen_server:server_ref(), permit_ref()) -> ok | {error, term()}.
-spec start_link() -> gen_server:start_ret().
-spec start_link(map()) -> gen_server:start_ret().
-spec status(gen_server:server_ref()) -> {ok, map()} | {error, term()}.
-spec submit(binary(), map()) -> {ok, request_ref(), {granted, permit_ref()} | {queued, integer() | infinity}} | {error, term()}.
-spec submit(gen_server:server_ref(), binary(), map()) -> {ok, request_ref(), {granted, permit_ref()} | {queued, integer() | infinity}} | {error, term()}.