MingaAgent.SessionListing (Minga v0.1.0)

Copy Markdown View Source

A registered agent session and the result of its metadata query.

The session manager owns the stable ID and PID. Metadata belongs to the session process and can be temporarily unavailable without changing that registration. Unavailable reasons are deliberately small and safe to expose through public listing APIs.

Summary

Types

Metadata query result for a registered session.

t()

A safe public reason for unavailable session metadata.

Functions

Creates a listing with available metadata when its ID matches the registration.

Returns available metadata or the safe reason that it is unavailable.

Returns the stable registration identity.

Reads metadata for a registered session without changing its registration.

Creates a listing whose metadata is unavailable for a safe public reason.

Types

details()

@type details() ::
  {:available, MingaAgent.SessionMetadata.t()}
  | {:unavailable, unavailable_reason()}

Metadata query result for a registered session.

t()

@type t() :: %MingaAgent.SessionListing{
  details: details(),
  id: String.t(),
  pid: pid()
}

unavailable_reason()

@type unavailable_reason() :: :timeout | :unreachable | :invalid_details

A safe public reason for unavailable session metadata.

Functions

available(id, pid, metadata)

@spec available(String.t(), pid(), term()) :: t()

Creates a listing with available metadata when its ID matches the registration.

details(session_listing)

@spec details(t()) :: details()

Returns available metadata or the safe reason that it is unavailable.

identity(session_listing)

@spec identity(t()) :: {String.t(), pid()}

Returns the stable registration identity.

read(id, pid)

@spec read(String.t(), pid()) :: t()

Reads metadata for a registered session without changing its registration.

unavailable(id, pid, reason)

@spec unavailable(String.t(), pid(), unavailable_reason()) :: t()

Creates a listing whose metadata is unavailable for a safe public reason.