diff options
author | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-22 21:26:56 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-08-26 14:19:28 -0300 |
commit | 416539a6acb4391b52f80d91b96fdab07658953d (patch) | |
tree | 6ea82b452f3acfe8f64ef703ed0386b6fca561a4 /lib/powerdnsex/server_setup.ex | |
parent | Add Delete Record feature (diff) |
WIP - Add elixir GenServer
Diffstat (limited to '')
-rw-r--r-- | lib/powerdnsex/server_setup.ex | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/powerdnsex/server_setup.ex b/lib/powerdnsex/server_setup.ex new file mode 100644 index 0000000..3b5cb14 --- /dev/null +++ b/lib/powerdnsex/server_setup.ex @@ -0,0 +1,29 @@ +defmodule PowerDNSex.ServerSetup do + defmacro __using__(opts \\ []) do + quote bind_quoted: [opts: opts] do + use Application + + @name opts[:process_name] || :PowerDNSex + @config opts[:config] + + @spec start(term, term) :: GenServer.on_start + def start(_, _), do: start + + @spec start() :: GenServer.on_start + @doc false + def start do + import Supervisor.Spec + + children = [worker(Server, [@name, @config])] + + options = [strategy: :one_for_one, name: :"#{@name}.Supervisor"] + + case Supervisor.start_link(children, options) do + {:ok, pid} -> {:ok, pid} + {:error, {:already_started, pid}} -> {:ok, pid} + other -> other + end + end + end + end +end |