View Source GenServer.Proxy behaviour (GenServer Proxy v0.1.44)
Invokes the following functions with a GenServer registered via a server ID:
Will wait a bit if the GenServer is not yet registered on restarts. Note this is an assumption as the GenServer may have never started.
Link to this section Summary
Types
Server ID
Callbacks
Called to convert the server_id
into a server name.
Called when the server remains unregistered despite waiting a bit. Should serve to print a relevant message about the failed request.
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 GenServer registered via server_id
.
Will wait a bit if the GenServer is not yet registered on restarts.
Sends an async request to the GenServer registered via server_id
.
Will wait a bit if the GenServer is not yet registered on restarts.
Synchronously stops the GenServer registered via server_id
.
Will wait a bit if the GenServer is not yet registered on restarts.
Link to this section Types
@type server_id() :: term()
Server ID
Link to this section Callbacks
@callback server_name(server_id()) :: GenServer.name()
Called to convert the server_id
into a server name.
examples
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}}
Called when the server remains unregistered despite waiting a bit. Should serve to print a relevant message about the failed request.
examples
Examples
@impl GenServer.Proxy
def server_unregistered(game_name),
do: :ok = IO.puts("Game #{game_name} not started.")
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
Examples
use GenServer.Proxy, alias: Proxy
use GenServer.Proxy
import GenServer.Proxy
Makes a synchronous call to the GenServer registered via server_id
.
Will wait a bit if the GenServer 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
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: :ok = 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(game_name, :summary)
...
end
Sends an async request to the GenServer registered via server_id
.
Will wait a bit if the GenServer 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).
stop(server_id, reason \\ :normal, timeout \\ :infinity, module \\ nil)
View Source (macro)Synchronously stops the GenServer registered via server_id
.
Will wait a bit if the GenServer 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).