summaryrefslogtreecommitdiff
path: root/lib/powerdnsex/server_setup.ex
diff options
context:
space:
mode:
authorTiago Freire <code.tiago.frire@locaweb.com.br>2016-08-22 21:26:56 -0300
committerTiago Freire <code.tiago.frire@locaweb.com.br>2016-08-26 14:19:28 -0300
commit416539a6acb4391b52f80d91b96fdab07658953d (patch)
tree6ea82b452f3acfe8f64ef703ed0386b6fca561a4 /lib/powerdnsex/server_setup.ex
parentAdd Delete Record feature (diff)
WIP - Add elixir GenServer
Diffstat (limited to '')
-rw-r--r--lib/powerdnsex/server_setup.ex29
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