Current section
Files
Jump to
Current section
Files
lib/runtime/event_poller.ex
defmodule Orange.Runtime.EventPoller do
@moduledoc false
alias Orange.Terminal
def child_spec(args) do
%{
id: __MODULE__,
start: {__MODULE__, :start_link, args}
}
end
def start_link(params),
do: {:ok, spawn_link(fn -> poll_event_loop(params[:event_receiver]) end)}
defp poll_event_loop(event_receiver) do
event = terminal_impl().poll_event()
send(event_receiver, {:event, event})
poll_event_loop(event_receiver)
end
defp terminal_impl(), do: Application.get_env(:orange, :terminal, Terminal)
end