Packages

Track system processes across multiple instances over ssh connections

Current section

Files

Jump to
worker_tracker lib tmux_tracker server.ex
Raw

lib/tmux_tracker/server.ex

defmodule TmuxTracker.Server do
use GenServer
alias TmuxTracker.Client
@refresh_interval :timer.seconds(10)
def start_link(instance) do
name = name_via_registry(instance)
GenServer.start_link(__MODULE__, instance, name: name)
end
def get_instance(instance) do
name = name_via_registry(instance)
GenServer.call(name, :get_instance)
end
def init(instance) do
client = instance |> Client.create()
Process.send_after(self(), :update_client, @refresh_interval)
{:ok, client}
end
def handle_call(:get_instance, _from, client) do
{:reply, client, client}
end
def handle_info(:update_client, client) do
client = client.instance |> Client.create()
Process.send_after(self(), :update_client, @refresh_interval)
{:noreply, client}
end
defp name_via_registry(name) do
{:via, Registry, {WorkerTracker.TmuxRegistry, name}}
end
end