diff options
Diffstat (limited to 'lib/chessh/ssh/client/screen.ex')
-rw-r--r-- | lib/chessh/ssh/client/screen.ex | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/chessh/ssh/client/screen.ex b/lib/chessh/ssh/client/screen.ex new file mode 100644 index 0000000..0437b23 --- /dev/null +++ b/lib/chessh/ssh/client/screen.ex @@ -0,0 +1,18 @@ +defmodule Chessh.SSH.Client.Screen do + @callback render(width :: integer(), height :: integer(), state :: any()) :: any() + @callback input(width :: integer(), height :: integer(), action :: any(), state :: any()) :: + any() + + defmacro __using__(_) do + quote do + @behaviour Chessh.SSH.Client.Screen + use GenServer + + def handle_info({:render, width, height}, state), + do: {:noreply, render(width, height, state)} + + def handle_info({:input, width, height, action}, state), + do: {:noreply, input(width, height, action, state)} + end + end +end |