Просмотр исходного кода

Move storing syn process names into backbone.

Roberto Ostinelli 3 лет назад
Родитель
Сommit
58fc50860d
2 измененных файлов с 15 добавлено и 6 удалено
  1. 12 0
      src/syn_backbone.erl
  2. 3 6
      src/syn_gen_scope.erl

+ 12 - 0
src/syn_backbone.erl

@@ -30,6 +30,7 @@
 -export([start_link/0]).
 -export([create_tables_for_scope/1]).
 -export([get_table_name/2]).
+-export([save_process_name/2, get_process_name/1]).
 
 %% gen_server callbacks
 -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
@@ -49,6 +50,17 @@ start_link() ->
 create_tables_for_scope(Scope) ->
     gen_server:call(?MODULE, {create_tables_for_scope, Scope}).
 
+-spec save_process_name(Key :: any(), ProcessName :: atom()) -> true.
+save_process_name(Key, ProcessName) ->
+    true = ets:insert(syn_process_names, {Key, ProcessName}).
+
+-spec get_process_name(Key :: any()) ->  ProcessName :: atom().
+get_process_name(Key) ->
+    case ets:lookup(syn_process_names, Key) of
+        [{_, ProcessName}] -> ProcessName;
+        [] -> undefined
+    end.
+
 -spec get_table_name(TableId :: atom(), Scope :: atom()) -> TableName :: atom() | undefined.
 get_table_name(TableId, Scope) ->
     case ets:lookup(syn_table_names, {TableId, Scope}) of

+ 3 - 6
src/syn_gen_scope.erl

@@ -85,7 +85,7 @@ start_link(Handler, Scope) when is_atom(Scope) ->
     ScopeBin = atom_to_binary(Scope),
     ProcessName = binary_to_atom(<<HandlerBin/binary, "_", ScopeBin/binary>>),
     %% save to lookup table
-    true = ets:insert(syn_process_names, {{Handler, Scope}, ProcessName}),
+    syn_backbone:save_process_name({Handler, Scope}, ProcessName),
     %% create process
     gen_server:start_link({local, ProcessName}, ?MODULE, [Handler, Scope, ProcessName], []).
 
@@ -205,7 +205,7 @@ handle_info({'3.0', discover, RemoteScopePid}, #state{
 } = State) ->
     RemoteScopeNode = node(RemoteScopePid),
     error_logger:info_msg("SYN[~s] Received DISCOVER request from node '~s'for ~s and scope '~s'",
-        [node(), RemoteScopeNode,Handler, Scope]
+        [node(), RemoteScopeNode, Handler, Scope]
     ),
     %% send local data to remote
     {ok, LocalData} = Handler:get_local_data(State),
@@ -317,10 +317,7 @@ code_change(_OldVsn, State, _Extra) ->
 %% ===================================================================
 -spec get_process_name_for_scope(Handler :: module(), Scope :: atom()) -> ProcessName :: atom() | undefined.
 get_process_name_for_scope(Handler, Scope) ->
-    case ets:lookup(syn_process_names, {Handler, Scope}) of
-        [{_, ProcessName}] -> ProcessName;
-        [] -> undefined
-    end.
+    syn_backbone:get_process_name({Handler, Scope}).
 
 -spec multicast_loop() -> terminated.
 multicast_loop() ->