From af75d731b40d6d1b90af5b1e37508e2aba7b4615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Tue, 1 Feb 2011 16:05:11 +0100 Subject: [PATCH] Now we can start the application from the commandline, and still use supervisors. --- ebin/{GGS.app => ggs.app} | 0 src/ggs_app.erl | 2 +- src/ggs_protocol.erl | 2 ++ src/ggs_server.erl | 5 ++++- src/ggs_sup.erl | 7 ++++++- src/start_ggs.erl | 6 ++++++ start | 2 +- 7 files changed, 20 insertions(+), 4 deletions(-) rename ebin/{GGS.app => ggs.app} (100%) create mode 100644 src/start_ggs.erl diff --git a/ebin/GGS.app b/ebin/ggs.app similarity index 100% rename from ebin/GGS.app rename to ebin/ggs.app diff --git a/src/ggs_app.erl b/src/ggs_app.erl index b3b053f..d8b2e60 100644 --- a/src/ggs_app.erl +++ b/src/ggs_app.erl @@ -3,7 +3,7 @@ -export([start/2, stop/1]). start(_StartType, _StartArgs) -> - case ggs_sup:start() of + case ggs_sup:start_link(9000) of {ok, Pid} -> {ok, Pid}; Other -> diff --git a/src/ggs_protocol.erl b/src/ggs_protocol.erl index 164206b..1ad61cc 100644 --- a/src/ggs_protocol.erl +++ b/src/ggs_protocol.erl @@ -23,6 +23,8 @@ parse(Data) -> [RefID, "__echo", Length, Msg ] -> {Ref, _} = string:to_integer(RefID), {echo, Ref, Length, Msg}; + ["__crash"] -> + {crash, 0}; [RefID, Command, _, Parameter ] -> {cmd, Command, Parameter}; Other -> diff --git a/src/ggs_server.erl b/src/ggs_server.erl index 9abddd8..e1cc16d 100644 --- a/src/ggs_server.erl +++ b/src/ggs_server.erl @@ -62,7 +62,8 @@ stop() -> %%----------------------------------------------------- init([Port]) -> - {ok, LSock} = gen_tcp:listen(Port, [{active, true}]), + {ok, LSock} = gen_tcp:listen(Port, [{active, true}, + {reuseaddr, true}]), {ok, #state{port = Port, lsock = LSock}, 0}. handle_call(get_count, _From, State) -> @@ -111,6 +112,8 @@ do_JSCall(Socket, Data, State) -> {echo, RefID, _, MSG} -> send(Socket, RefID, "Your VM is ", getJSVM(RefID, State)), []; + {crash, Zero} -> + 10/Zero; % Set the new state to [] Other -> io:format("Got '~p'", [Other]), diff --git a/src/ggs_sup.erl b/src/ggs_sup.erl index ddb3abe..0cc8335 100644 --- a/src/ggs_sup.erl +++ b/src/ggs_sup.erl @@ -2,12 +2,17 @@ -behaviour(supervisor). %% API --export([start_link/1]). +-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]). diff --git a/src/start_ggs.erl b/src/start_ggs.erl new file mode 100644 index 0000000..eabdbc5 --- /dev/null +++ b/src/start_ggs.erl @@ -0,0 +1,6 @@ +-module(start_ggs). +-export([start/0]). + +start() -> + application:start(inets), + application:start(ggs). diff --git a/start b/start index 41284d5..f3720a5 100755 --- a/start +++ b/start @@ -1,3 +1,3 @@ #!/usr/bin/env bash -erl -boot start_sasl -pa erlang_js/ebin/ -pa erlv8/ebin -pa ebin -pa src -eval "ggs_sup:start_link($1)." +erl -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs