Packages
gen_server_proxy
0.1.38
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/stopper.ex
defmodule GenServer.Proxy.Stopper do
use PersistConfig
alias GenServer.Proxy
alias GenServer.Proxy.{Log, Timer}
@timeout get_env(:timeout)
@times get_env(:times)
@spec stop(Proxy.server_id(), term, timeout, module) :: :ok | {:error, term}
def stop(server_id, reason, timeout, module) do
server = module.server_name(server_id)
try do
GenServer.stop(server, reason, timeout)
catch
:exit, cause ->
failed = {:stop, 3, server, @timeout, @times, cause, __ENV__}
:ok = Log.warn(:failed, failed)
:ok = Timer.wait(server)
try do
GenServer.stop(server, reason, timeout)
catch
:exit, cause ->
:ok = Log.warn(:failed_again, {:stop, 3, server, cause, __ENV__})
module.server_unregistered(server_id)
{:error, cause}
end
end
end
end