← All compilation units

Flyology.Capacity.Gate

Description

Idempotently reject new acquisitions and release queued callers. A readiness descriptor is signalled only when one was borrowed. A signalling failure raises Program_Error.

Acquire

entry Acquire (Accepted : out Boolean)

Wait until a permit is available or shutdown has been requested.

Parameters
Accepted

True when one permit was acquired; False on shutdown

Active

function Active return Natural

Return the number of active permits.

Return value

Current active count

Await_Drained

entry Await_Drained

Wait until shutdown has been requested and every permit is released.

Release

procedure Release

Release one acquired permit.

Raised exceptions
Program_Error

No permit is active

Request_Shutdown

procedure Request_Shutdown

Idempotently reject new acquisitions and release queued callers. A readiness descriptor is signalled only when one was borrowed. A signalling failure raises Program_Error.

Shutdown_Requested

function Shutdown_Requested return Boolean

Report whether shutdown has been requested.

Return value

True after Request_Shutdown

Try_Acquire

procedure Try_Acquire (Result : out Acquire_Result)

Attempt to acquire without waiting.

Parameters
Result

Permit_Acquired, Gate_Full, or Gate_Closed

Wait_Source

procedure Wait_Source
  (FD                : out Interfaces.C.int;
   Already_Requested : out Boolean)

Borrow a readable descriptor that becomes ready on shutdown. This is intended for composing a Gate with task-aware descriptor waits; the caller must not close it and the Gate must outlive the wait.

Parameters
FD

Borrowed descriptor, or -1 after shutdown

Already_Requested

Whether shutdown already started

Raised exceptions
Program_Error

Wake descriptor creation fails

Waiting

function Waiting return Natural

Return the number of callers queued at Acquire.

Return value

Current Acquire entry count