Quic.Cleanup (elixir_quic v1.0.0-rc.9)

Copy Markdown View Source

Retained cleanup evidence for one exclusive standalone client endpoint.

Construct this scope before calling Quic.client/1 with its birth lease. A successful receipt joins every enrolled actor and the actual UDP Port. It does not establish peer delivery or resolve an unknown operation outcome. Handles remain readable after the observer exits, within the same VM.

Summary

Functions

Retain that the original operation's result is unknown, independently of cleanup.

Retain an operation intent before its native call; never replay an unknown call.

Record a known return from the original operation producer.

Types

deadline()

@type deadline() :: {:abs_ms, integer()}

descriptor()

@type descriptor() :: %{handle: handle(), lease: lease()}

handle()

@opaque handle()

lease()

@opaque lease()

permit()

@opaque permit()

result()

@type result() ::
  {:pending, snapshot()}
  | {:ok, terminal_snapshot(:confirmed)}
  | {:error,
     {:cleanup_unconfirmed,
      :birth_unresolved
      | :observation_cap
      | :observer_lost
      | :unsupported_native_socket}, terminal_snapshot(:unconfirmed)}

snapshot()

@type snapshot() :: %{
  version: 1,
  scope: :exclusive_endpoint,
  generation: reference(),
  admission: :open | :closed,
  enrolled: integer(),
  down: integer(),
  unresolved_births: integer(),
  unresolved_operations: integer(),
  native_outcome: :resolved | :indeterminate,
  roles: %{
    endpoint: integer(),
    io: integer(),
    port: integer(),
    connection: integer()
  }
}

terminal_snapshot(cleanup)

@type terminal_snapshot(cleanup) :: %{
  version: 1,
  scope: :exclusive_endpoint,
  generation: reference(),
  admission: :open | :closed,
  enrolled: integer(),
  down: integer(),
  unresolved_births: integer(),
  unresolved_operations: integer(),
  native_outcome: :resolved | :indeterminate,
  roles: %{
    endpoint: integer(),
    io: integer(),
    port: integer(),
    connection: integer()
  },
  cleanup: cleanup
}

Functions

await(handle, arg)

@spec await(Quic.Cleanup.Handle.t(), deadline()) :: result()

indeterminate(permit)

Retain that the original operation's result is unknown, independently of cleanup.

new(opts \\ [])

@spec new(keyword()) ::
  {:ok, Quic.Cleanup.Handle.t(), Quic.Cleanup.Lease.t()} | {:error, term()}

operation(lease, target, ref, kind, bound)

Retain an operation intent before its native call; never replay an unknown call.

resolved(permit)

Record a known return from the original operation producer.

retire(lease, bound)

@spec retire(Quic.Cleanup.Lease.t(), deadline()) :: result()

status(handle)

@spec status(Quic.Cleanup.Handle.t()) :: result()