aboutsummaryrefslogtreecommitdiff
path: root/shard/lib/application.ex
diff options
context:
space:
mode:
Diffstat (limited to 'shard/lib/application.ex')
-rw-r--r--shard/lib/application.ex33
1 files changed, 33 insertions, 0 deletions
diff --git a/shard/lib/application.ex b/shard/lib/application.ex
new file mode 100644
index 0000000..3e3a6ac
--- /dev/null
+++ b/shard/lib/application.ex
@@ -0,0 +1,33 @@
+defmodule Shard.Application do
+ @moduledoc """
+ Main Shard application.
+
+ Shard is a prototype peer-to-peer comunication platform with data
+ synchronization.
+ """
+
+ use Application
+
+ def start(_type, _args) do
+ import Supervisor.Spec, warn: false
+
+ {listen_port, _} = Integer.parse ((System.get_env "PORT") || "4044")
+
+ # Define workers and child supervisors to be supervised
+ children = [
+ Shard.Identity,
+ { DynamicSupervisor, strategy: :one_for_one, name: Shard.DynamicSupervisor },
+
+ # Networking
+ { SNet.TCPServer, listen_port },
+
+ # Applications & data store
+ { Shard.Manager, listen_port },
+ ]
+
+ # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
+ # for other strategies and supported options
+ opts = [strategy: :one_for_one, name: Shard.Supervisor]
+ Supervisor.start_link(children, opts)
+ end
+end