GenServer (Generic Server)
defmodule ReactPhoenixWeb.SimpleGen do
use GenServer
@interval 1_000
# Runs in Caller Context 🐌Alice
def start_link(arg1) do
GenServer.start_link(__MODULE__, arg1)
end
def increment(count) do
GenServer.cast(__MODULE__, {:increment, count})
end
# Runs in Single Server Context 🐨Bob
def init(arg1) do
# start_link calls this
Process.send_after(self(), :work, @interval)
{:ok, arg1}
end
def handle_info(:work, state) do
# send/send_after within the server calls this
Process.send_after(self(), :increment, @interval)
{:noreply, state}
end
def handle_call(:get_data, _from, state) do
resp = state
{:reply, resp, state}
end
def handle_cast({:increment, count}, state) do
{:noreply, state+count}
end
endRaw Examples
Raw Example without GenServer
Last updated