MingaEditor.State.Remote (Minga v0.1.0)

Copy Markdown View Source

State for remote agent sessions and remote file buffers.

Summary

Types

Remote session metadata is normally MingaAgent.SessionMetadata.t(). The map fallback keeps compatibility with older remote nodes that may return decoded persisted metadata before both nodes share the exact struct module version.

t()

Functions

Returns all tracked remote buffers with their server names and paths.

Finds an open buffer for a remote file.

Returns all tracked remote buffers for path, across servers.

Tracks the buffer pid used to display a remote file.

Marks a server's connection status.

Stores the latest discovered remote sessions for a server.

Returns a server's known connection status.

Returns all discovered remote sessions grouped by server name.

Types

remote_connection_status()

@type remote_connection_status() :: :connected | :disconnected | :ended | :unavailable

remote_file_key()

@type remote_file_key() :: {String.t(), String.t()}

remote_session_entry()

@type remote_session_entry() :: {String.t(), pid(), session_metadata()}

session_metadata()

@type session_metadata() :: MingaAgent.SessionMetadata.t() | map()

Remote session metadata is normally MingaAgent.SessionMetadata.t(). The map fallback keeps compatibility with older remote nodes that may return decoded persisted metadata before both nodes share the exact struct module version.

t()

@type t() :: %MingaEditor.State.Remote{
  buffers: %{required(remote_file_key()) => pid()},
  server_status: %{required(String.t()) => remote_connection_status()},
  sessions: %{required(String.t()) => [remote_session_entry()]}
}

Functions

all_buffers(remote)

@spec all_buffers(t()) :: [{String.t(), String.t(), pid()}]

Returns all tracked remote buffers with their server names and paths.

buffer(remote, server_name, path)

@spec buffer(t(), String.t(), String.t()) :: pid() | nil

Finds an open buffer for a remote file.

buffers_for_path(remote, path)

@spec buffers_for_path(t(), String.t()) :: [{String.t(), pid()}]

Returns all tracked remote buffers for path, across servers.

put_buffer(remote, server_name, path, buffer)

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

Tracks the buffer pid used to display a remote file.

put_server_status(remote, server_name, status)

@spec put_server_status(t(), String.t(), remote_connection_status()) :: t()

Marks a server's connection status.

put_sessions(remote, server_name, sessions)

@spec put_sessions(t(), String.t(), [remote_session_entry()]) :: t()

Stores the latest discovered remote sessions for a server.

server_status(remote, server_name)

@spec server_status(t(), String.t()) :: remote_connection_status()

Returns a server's known connection status.

sessions(remote)

@spec sessions(t()) :: %{required(String.t()) => [remote_session_entry()]}

Returns all discovered remote sessions grouped by server name.