Roberto Ostinelli 10 лет назад
Родитель
Сommit
81fd439ba0
7 измененных файлов с 141 добавлено и 0 удалено
  1. 30 0
      .gitignore
  2. 25 0
      Makefile
  3. 3 0
      rebar.config
  4. 15 0
      src/syn.app.src
  5. 18 0
      src/syn.erl
  6. 21 0
      src/syn_app.erl
  7. 29 0
      src/syn_sup.erl

+ 30 - 0
.gitignore

@@ -0,0 +1,30 @@
+# vim
+.*.sw[a-z]
+*.un~
+Session.vim
+
+# intellij
+.idea
+*.iml
+
+# OSX ignores
+.DS_Store
+.AppleDouble
+.LSOverride
+Icon
+
+._*
+.Spotlight-V100
+.Trashes
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# project ignores
+deps
+ebin
+erl_crash.dump
+*.beam
+.rebar

+ 25 - 0
Makefile

@@ -0,0 +1,25 @@
+all:
+	@rebar compile
+
+clean:
+	@rebar clean
+	@find $(PWD)/. -name "erl_crash\.dump" | xargs rm -f
+
+dialyze:
+	@dialyzer -n -c src/*.erl
+
+run:
+	@erl -pa ebin \
+	-name syn@127.0.0.1 \
+	+K true \
+	+P 5000000 \
+	+Q 1000000 \
+	-mnesia schema_location ram \
+	-eval 'syn:start().'
+
+tests: all
+	@mkdir -p /tmp/logs; \
+	ct_run -sname syn -dir test -logdir /tmp/logs -pa ebin; \
+	res=$$?; \
+	rm -rf /tmp/logs; \
+	if [ $$res != 0 ]; then exit $$res; fi;

+ 3 - 0
rebar.config

@@ -0,0 +1,3 @@
+{erl_opts, [
+    {i, "include"}
+]}.

+ 15 - 0
src/syn.app.src

@@ -0,0 +1,15 @@
+{application, syn,
+    [
+        {description, "A global process registry."},
+        {vsn, "0.1.0"},
+        {registered, [
+        ]},
+        {applications, [
+            kernel,
+            stdlib,
+            mnesia
+        ]},
+        {mod, {syn_app, []}},
+        {env, []}
+    ]
+}.

+ 18 - 0
src/syn.erl

@@ -0,0 +1,18 @@
+-module(syn).
+
+%% API
+-export([start/0, stop/0]).
+
+
+%% ===================================================================
+%% API
+%% ===================================================================
+-spec start() -> ok.
+start() ->
+    {ok, _} = application:ensure_all_started(mnesia),
+    {ok, _} = application:ensure_all_started(syn),
+    ok.
+
+-spec stop() -> ok.
+stop() ->
+    ok = application:stop(syn).

+ 21 - 0
src/syn_app.erl

@@ -0,0 +1,21 @@
+-module(syn_app).
+-behaviour(application).
+
+%% API
+-export([start/2, stop/1]).
+
+
+%% ===================================================================
+%% API
+%% ===================================================================
+-spec start(
+    StartType :: normal | {takeover, node()} | {failover, node()},
+    StartArgs :: any()
+) -> {ok, pid()} | {ok, pid(), State :: any()} | {error, any()}.
+start(_StartType, _StartArgs) ->
+    %% start sup
+    syn_sup:start_link().
+
+-spec stop(State :: any()) -> ok.
+stop(_State) ->
+    ok.

+ 29 - 0
src/syn_sup.erl

@@ -0,0 +1,29 @@
+-module(syn_sup).
+-behaviour(supervisor).
+
+%% API
+-export([start_link/0]).
+
+%% Supervisor callbacks
+-export([init/1]).
+
+%% Helper macro for declaring children of supervisor
+-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 10000, Type, [I]}).
+
+
+%% ===================================================================
+%% API
+%% ===================================================================
+-spec start_link() -> {ok, pid()} | {already_started, pid()} | shutdown.
+start_link() ->
+    supervisor:start_link({local, ?MODULE}, ?MODULE, []).
+
+%% ===================================================================
+%% Callbacks
+%% ===================================================================
+-spec init([]) ->
+    {ok, {{supervisor:strategy(), non_neg_integer(), non_neg_integer()}, [supervisor:child_spec()]}}.
+init([]) ->
+    Children = [
+    ],
+    {ok, {{one_for_one, 10, 10}, Children}}.