diff --git a/ebin/ggs.app b/ebin/ggs.app index cafc9df..3315864 100644 --- a/ebin/ggs.app +++ b/ebin/ggs.app @@ -3,8 +3,7 @@ {vsn, "0.1.0"}, {modules, [ ggs_app, - ggs_sup, - ggs_server + ggs_sup ]}, {registered, [ggs_sup]}, {applications, [kernel, stdlib]}, diff --git a/src/ggs_mnesia_controller_server.erl b/src/ggs_mnesia_controller_server.erl new file mode 100644 index 0000000..0b384f1 --- /dev/null +++ b/src/ggs_mnesia_controller_server.erl @@ -0,0 +1,63 @@ +-module(ggs_mnesia_controller_server). +-behaviour(gen_server). + +%% API +-export([start_link/0, + stop/0 + ]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, + handle_info/2, terminate/2, code_change/3]). + + +-define(SERVER, ?MODULE). + +-record(state, {}). + +%%%==================================================== +%%% API +%%%==================================================== + +%%----------------------------------------------------- +%% @doc Starts the server +%% @end +%%----------------------------------------------------- +start_link() -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). + +%%----------------------------------------------------- +%% @doc Stops the server. +%% @spec stop() -> ok +%% @end +%%----------------------------------------------------- +stop() -> + gen_server:cast(?SERVER, stop). + +%%----------------------------------------------------- +%% gen_server callbacks +%%----------------------------------------------------- + +init([]) -> + mnesia:create_schema([node()]), + mnesia:start(), + {ok, {}, 0}. + +handle_cast(a, State) -> + {noreply, State}. + +handle_call({getValue, Key},_From,State) -> + {reply,value_of_key_requested_goes_here, State}. + +handle_info(timeout, State) -> + {noreply, State}. + +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%----------------------------------------------------- +%% Internal functions +%%----------------------------------------------------- diff --git a/src/ggs_server.erl b/src/ggs_server.erl index d7be36e..566d354 100644 --- a/src/ggs_server.erl +++ b/src/ggs_server.erl @@ -109,6 +109,7 @@ do_JSCall(Socket, Data, State) -> {hello} -> Client = getRef(), send(Socket, Client, "__ok_hello"), + %gen_server:call(ggs_mnesia_controller_server, {hello, "Someone said hello!"}), {Client, JSVM}; {echo, RefID, _, MSG} -> send(Socket, RefID, "Your VM is ", getJSVM(RefID, State)), diff --git a/src/ggs_server_sup.erl b/src/ggs_server_sup.erl new file mode 100644 index 0000000..df665d6 --- /dev/null +++ b/src/ggs_server_sup.erl @@ -0,0 +1,41 @@ +-module(ggs_server_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]) -> + GGSServer = {ggs_server, + {ggs_server, start_link, [Port]}, + permanent, + 2000, + worker, + [ggs_server] + }, + MnesiaServer = {ggs_mnesia_controller_server, + {ggs_mnesia_controller_server, start_link, []}, + permanent, + 2000, + worker, + [ggs_mnesia_controller_server] + }, + Children = [MnesiaServer, GGSServer], + + 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/ggs_sup.erl b/src/ggs_sup.erl index 0cc8335..ee6f8cd 100644 --- a/src/ggs_sup.erl +++ b/src/ggs_sup.erl @@ -17,12 +17,12 @@ start_link(Port) -> supervisor:start_link({local, ?SERVER}, ?MODULE, [Port]). init([Port]) -> - Server = {ggs_server, - {ggs_server, start_link, [Port]}, + Server = {ggs_server_sup, + {ggs_server_sup, start_link, [Port]}, permanent, 2000, worker, - [ggs_server] + [ggs_server_sup] }, Children = [Server], diff --git a/start b/start index f3720a5..37040d3 100755 --- a/start +++ b/start @@ -1,3 +1,3 @@ #!/usr/bin/env bash -erl -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs +erl -mnesia -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs