Skip to content

Instantly share code, notes, and snippets.

@wktdev
Created October 23, 2022 04:01
Show Gist options
  • Save wktdev/3986430c6d078f1b75f9c6b5a90941f6 to your computer and use it in GitHub Desktop.
Save wktdev/3986430c6d078f1b75f9c6b5a90941f6 to your computer and use it in GitHub Desktop.
defmodule App do
use GenServer
def start_link([]) do
GenServer.start_link(__MODULE__, [])
end
def init(state) do
{:ok, state}
end
def get_state(pid) do
GenServer.call(pid, :get_state)
end
def set_state(pid,state) do
GenServer.call(pid, {:set_state, state})
end
def handle_call(:get_state, _from, state) do
{:reply, state, state}
end
def handle_call({:set_state, new_state}, _from, state)do
{:reply,state,[new_state | state]}
end
end
defmodule App.Supervisor do
use Supervisor
def start_link([])do
Supervisor.start_link(__MODULE__, [])
end
def init(_) do
children = [
{App, []}
]
Supervisor.init(children, strategy: :one_for_one)
end
end
App.Supervisor.start_link([])
{:ok, pid} = App.start_link([])
Process.exit(pid, :kill)
pid = Process.whereis(App)
IO.inspect pid
@losvedir
Copy link

losvedir commented Oct 24, 2022

defmodule App do
  use GenServer

  def start_link([]) do
    # give the genserver a name, so you can `whereis` it later
    GenServer.start_link(__MODULE__, [], name: :the_app_process)
  end

  def init(state) do
     {:ok, state}
  end

  def get_state(pid) do
     GenServer.call(pid, :get_state)
  end

  def set_state(pid,state) do
     GenServer.call(pid, {:set_state, state})
  end


  def handle_call(:get_state, _from, state) do
     {:reply, state, state}
  end


  def handle_call({:set_state, new_state}, _from, state)do
    {:reply,state,[new_state | state]}
  end
   
end

defmodule App.Supervisor do
  use Supervisor

  def start_link([])do
    Supervisor.start_link(__MODULE__, [])
  end

  def init(_) do
     children = [
        {App, []}
     ]
    Supervisor.init(children, strategy: :one_for_one)
  end
end





App.Supervisor.start_link([])
app_pid = Process.whereis(:the_app_process)
Process.exit(app_pid, :kill)
Process.whereis(:the_app_process)

# {:ok, pid} = App.start_link([])
# Process.exit(pid, :kill)
# pid = Process.whereis(App)
# IO.inspect pid

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment