Current section

Files

Jump to
islands_text_client lib islands text_client remote_procedure_call.ex
Raw

lib/islands/text_client/remote_procedure_call.ex

defmodule Islands.TextClient.RemoteProcedureCall do
@moduledoc false
use PersistConfig
alias Islands.Engine
alias Islands.Engine.Tally
@node Application.get_env(@app, :islands_node)
@spec new_game(String.t()) :: String.t() | no_return
def new_game(game_name) do
Node.connect(@node)
:ok = :global.sync()
me = self()
case :rpc.call(@node, Engine, :new_game, [game_name, me]) do
{:ok, _pid} -> game_name
error -> exit(error)
end
end
@spec add_player(String.t(), String.t()) :: String.t() | no_return
def add_player(game_name, player_name) do
Node.connect(@node)
:ok = :global.sync()
me = self()
case :rpc.call(@node, Engine, :add_player, [game_name, player_name, me]) do
%Tally{response: {:ok, :player2_added}} -> game_name
error -> exit(error)
end
end
end