Packages
islands_engine
0.1.72
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.46
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.13
0.2.12
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
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.41
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.0
Models the Game of Islands.
Current section
Files
Jump to
Current section
Files
lib/islands/engine/game/server/error.ex
defmodule Islands.Engine.Game.Server.Error do
@moduledoc false
alias Islands.Engine.Game.Server
alias Islands.Engine.{App, Game}
require Logger
@spec log(atom, tuple) :: :ok
def log(event, details), do: do_log(event, details, App.log?())
@spec reply(Game.t(), Server.request(), atom, Game.player_id()) ::
Server.reply()
def reply(game, request, reason, player_id) do
game
|> Game.update_request(request)
|> Game.update_response({:error, reason})
|> Server.save()
|> Server.reply(player_id)
end
## Private functions
@spec do_log(atom, tuple, boolean) :: :ok
defp do_log(_event, _details, false = _log?), do: :ok
defp do_log(:handle_call, {non_matched_value, request, game}, true = _log?) do
removed = Logger.remove_backend(:console, flush: true)
"""
\n#{game.name |> Server.via() |> inspect()} #{self() |> inspect()}
`handle_call` request...
#{inspect(request, pretty: true)}
`with` non-matched value...
#{inspect(non_matched_value, pretty: true)}
game being processed...
#{inspect(game, pretty: true)}
"""
|> Logger.error()
if removed == :ok, do: Logger.add_backend(:console, flush: true)
:ok
end
defp do_log(:terminate, {reason, game}, true) do
removed = Logger.remove_backend(:console, flush: true)
"""
\n#{game.name |> Server.via() |> inspect()} #{self() |> inspect()}
`handle_call` request...
#{inspect(game.request, pretty: true)}
`terminate` reason...
#{inspect(reason, pretty: true)}
game being terminated...
#{inspect(game, pretty: true)}
"""
|> Logger.error()
if removed == :ok, do: Logger.add_backend(:console, flush: true)
:ok
end
end