GenServer.Proxy behaviour (GenServer Proxy v0.1.33) View Source
Invokes call, cast or stop in GenServer with a registered server name.
Will wait a bit if the server name is not yet registered on restarts.
Link to this section Summary
Functions
Either aliases GenServer.Proxy (this module) and requires the alias or
imports GenServer.Proxy. In the latter case, you could instead simply
import GenServer.Proxy.
Makes a synchronous call to the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
Sends an async request to the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
Synchronously stops the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
Callbacks
Converts server_id into a server name like a via tuple.
Called when the server remains unregistered despite waiting a bit.
Link to this section Functions
Either aliases GenServer.Proxy (this module) and requires the alias or
imports GenServer.Proxy. In the latter case, you could instead simply
import GenServer.Proxy.
Examples
use GenServer.Proxy, alias: Proxy
use GenServer.Proxy
import GenServer.Proxy
Makes a synchronous call to the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
The given module (or by default <caller's_module>.GenServerProxy) must
implement the 2 callbacks of GenServer.Proxy (this module).
Examples
# Assuming the following callback module:
defmodule Game.Engine.GenServerProxy do
@behaviour GenServer.Proxy
@impl GenServer.Proxy
def server_name(game_name),
do: {:via, Registry, {:registry, game_name}}
@impl GenServer.Proxy
def server_unregistered(game_name),
do: IO.puts("Game #{game_name} not started.")
end
# We could use the call macro like so:
defmodule Game.Engine do
use GenServer.Proxy
def summary(game_name), do: call(:summary, game_name)
...
end
Sends an async request to the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
The given module (or by default <caller's_module>.GenServerProxy) must
implement the 2 callbacks of GenServer.Proxy (this module).
Synchronously stops the server registered via server_id.
Will wait a bit if the server is not yet registered on restarts.
The given module (or by default <caller's_module>.GenServerProxy) must
implement the 2 callbacks of GenServer.Proxy (this module).
Link to this section Callbacks
Specs
server_name(server_id :: term()) :: GenServer.name()
Converts server_id into a server name like a via tuple.
Examples
@impl GenServer.Proxy
def server_name(game_name),
do: {:via, Registry, {:registry, game_name}}
@impl GenServer.Proxy
def server_name(game_name),
do: {:global, {GameServer, game_name}}
Specs
Called when the server remains unregistered despite waiting a bit.
Examples
@impl GenServer.Proxy
def server_unregistered(game_name),
do: IO.puts("Game #{game_name} not started.")