Current section

Files

Jump to
pixie lib client state.ex
Raw

lib/client/state.ex

defmodule Pixie.Client.State do
alias Pixie.Client
def unconnected?(%Client{state: :unconnected}), do: true
def unconnected?(%Client{state: _}), do: false
def connecting?(%Client{state: :connecting}), do: true
def connecting?(%Client{state: _}), do: false
def connected?(%Client{state: :connected}), do: true
def connected?(%Client{state: _}), do: false
def disconnected?(%Client{state: :disconnected}), do: true
def disconnected?(%Client{state: _}), do: false
def connecting! %Client{state: :unconnected}=client do
%{client | state: :connecting}
end
def connecting! %Client{state: state} do
raise "Can't transition from :#{state} to :connecting"
end
def connected! %Client{state: :connecting}=client do
%{client | state: :connected}
end
def connected! %Client{state: state} do
raise "Can't transition from :#{state} to :connected"
end
def disconnected! %Client{state: :connected}=client do
%{client | state: :disconnected}
end
def disconnected! %Client{state: state} do
raise "Can't transition from :#{state} to :disconnected"
end
end