From ae1856e1f2a96381f77425ee03a6545bd314e93a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Wed, 16 Feb 2011 16:50:57 +0100 Subject: [PATCH] Added supervisor structure --- src/ggs_app.erl | 14 ++++++++++++++ src/ggs_sup.erl | 41 +++++++++++++++++++++++++++++++++++++++++ src/start_ggs.erl | 7 +++++++ 3 files changed, 62 insertions(+) create mode 100644 src/ggs_app.erl create mode 100644 src/ggs_sup.erl create mode 100644 src/start_ggs.erl diff --git a/src/ggs_app.erl b/src/ggs_app.erl new file mode 100644 index 0000000..d8b2e60 --- /dev/null +++ b/src/ggs_app.erl @@ -0,0 +1,14 @@ +-module(ggs_app). +-behaviour(application). +-export([start/2, stop/1]). + +start(_StartType, _StartArgs) -> + case ggs_sup:start_link(9000) of + {ok, Pid} -> + {ok, Pid}; + Other -> + {error, Other} + end. + +stop(_State) -> + ok. diff --git a/src/ggs_sup.erl b/src/ggs_sup.erl new file mode 100644 index 0000000..bfb2617 --- /dev/null +++ b/src/ggs_sup.erl @@ -0,0 +1,41 @@ +-module(ggs_sup). +-behaviour(supervisor). + +%% API +-export([start/1, start_link/1]). + +%% Supervisor callbacks +-export([init/1]). +-define(SERVER, ?MODULE). + +start(Port) -> + [FirstArg] = Port, + {IntPort, _} = string:to_integer(FirstArg), + start_link(IntPort). + +start_link(Port) -> + supervisor:start_link({local, ?SERVER}, ?MODULE, [Port]). + +init([Port]) -> + Dispatcher = {ggs_dispatcher, + {ggs_dispatcher, start_link, [Port]}, + permanent, + 2000, + worker, + [ggs_dispatcher] + }, + Coordinator = {ggs_coordinator, + {ggs_coordinator, start_link, []}, + permanent, + 2000, + worker, + [ggs_dispatcher] + }, + Children = [Dispatcher, Coordinator], + + RestartStrategy = { one_for_one, % Restart only crashing child + 10, % Allow ten crashes per.. + 1 % 1 second, then crash supervisor. + }, + {ok, {RestartStrategy, Children}}. + diff --git a/src/start_ggs.erl b/src/start_ggs.erl new file mode 100644 index 0000000..3955715 --- /dev/null +++ b/src/start_ggs.erl @@ -0,0 +1,7 @@ +-module(start_ggs). +-export([start/0]). + +start() -> + application:start(inets), + application:start(erlang_js), + application:start(ggs).