Raxol.Terminal.Manager (Raxol v0.3.0)

View Source

Terminal manager module.

This module manages terminal sessions, including:

  • Session creation
  • Session destruction
  • Session listing
  • Session monitoring

Summary

Functions

Returns a specification to start this module under a supervisor.

Gets the count of terminal sessions.

Creates a new terminal session.

Destroys a terminal session.

Gets a terminal session by ID.

Lists all terminal sessions.

Monitors a terminal session.

Starts the terminal manager.

Unmonitors a terminal session.

Types

t()

@type t() :: %Raxol.Terminal.Manager{sessions: map()}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

count_sessions(pid \\ __MODULE__)

Gets the count of terminal sessions.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, _} = Manager.create_session(pid)
iex> {:ok, _} = Manager.create_session(pid)
iex> Manager.count_sessions(pid)
2

create_session(pid \\ __MODULE__, opts \\ [])

Creates a new terminal session.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id} = Manager.create_session(pid, %{width: 80, height: 24})
iex> is_binary(session_id)
true

destroy_session(pid \\ __MODULE__, session_id)

Destroys a terminal session.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id} = Manager.create_session(pid)
iex> :ok = Manager.destroy_session(pid, session_id)
iex> Manager.get_session(pid, session_id)
{:error, :not_found}

get_session(pid \\ __MODULE__, session_id)

Gets a terminal session by ID.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id} = Manager.create_session(pid)
iex> {:ok, session} = Manager.get_session(pid, session_id)
iex> session.id
session_id

get_state()

list_sessions(pid \\ __MODULE__)

Lists all terminal sessions.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id1} = Manager.create_session(pid)
iex> {:ok, session_id2} = Manager.create_session(pid)
iex> sessions = Manager.list_sessions(pid)
iex> length(sessions)
2

monitor_session(pid \\ __MODULE__, session_id)

Monitors a terminal session.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id} = Manager.create_session(pid)
iex> :ok = Manager.monitor_session(pid, session_id)
iex> Process.whereis({:via, Registry, {Registry, session_id}})
#PID<0.123.0>

start_link(_)

Starts the terminal manager.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> Process.alive?(pid)
true

unmonitor_session(pid \\ __MODULE__, session_id)

Unmonitors a terminal session.

Examples

iex> {:ok, pid} = Manager.start_link()
iex> {:ok, session_id} = Manager.create_session(pid)
iex> :ok = Manager.monitor_session(pid, session_id)
iex> :ok = Manager.unmonitor_session(pid, session_id)
iex> Process.whereis({:via, Registry, {Registry, session_id}})
nil

update_state(new_state)