Raxol.Terminal.Manager (Raxol v0.3.0)
View SourceTerminal 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
@type t() :: %Raxol.Terminal.Manager{sessions: map()}
Functions
Returns a specification to start this module under a supervisor.
See Supervisor
.
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
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
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}
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
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
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>
Starts the terminal manager.
Examples
iex> {:ok, pid} = Manager.start_link()
iex> Process.alive?(pid)
true
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