Packages

An Elixir IRC module providing GenStage/callback based IRC Clients.

Current section

Files

Jump to
elixirc lib elixirc.ex
Raw

lib/elixirc.ex

defmodule Elixirc do
use Supervisor
import Supervisor.Spec
defmodule State do
defstruct address: "",
port: "",
ssl: false,
nick: "",
name: "",
pass: "",
pinging: false,
reconnect: false,
channels: {},
users: %{},
socket: nil,
state: %{} # sub state
end
def start!(state) do
Supervisor.start_link(__MODULE__, state, name: __MODULE__)
end
def init(state) do
{:ok, socket} = Elixirc.Connection.Connector.connect(%{ssl?: state.ssl}, state.address, state.port)
children = [
worker(Elixirc.EventManager, [%{ssl?: state.ssl, socket: socket, reconnect: state.reconnect}]),
]
supervise(children, strategy: :one_for_one)
end
end