Packages
gen_server_proxy
0.1.34
0.1.72
0.1.71
0.1.70
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Invokes call, cast or stop with a GenServer registered via a server ID. Will wait a bit if the GenServer is not yet registered on restarts.
Current section
Files
Jump to
Current section
Files
lib/gen_server/proxy/timer.ex
defmodule GenServer.Proxy.Timer do
use PersistConfig
alias GenServer.Proxy.Log
@timeout get_env(:timeout)
@times get_env(:times)
@spec wait(GenServer.name()) :: :ok
def wait(server), do: wait(server, @times)
## Private functions
# On restarts, wait if server not yet registered...
@spec wait(GenServer.name(), non_neg_integer) :: :ok
defp wait(_server, 0) do
:ok
end
defp wait(server, times_left) do
Process.sleep(@timeout)
times_left = times_left - 1
case GenServer.whereis(server) do
pid when is_pid(pid) ->
times = @times - times_left
registered = {server, @timeout, times, pid, __ENV__}
:ok = Log.warn(:registered, registered)
nil ->
unregistered = {server, @timeout, times_left, __ENV__}
:ok = Log.warn(:unregistered, unregistered)
wait(server, times_left)
end
end
end