Roberto Ostinelli 3 лет назад
Родитель
Сommit
fdb8320117
2 измененных файлов с 16 добавлено и 16 удалено
  1. 6 7
      src/syn.erl
  2. 10 9
      test/syn_registry_SUITE.erl

+ 6 - 7
src/syn.erl

@@ -426,10 +426,7 @@ local_registry_count(Scope) ->
 %% @private
 -spec register_name(Name :: term(), Pid :: pid()) -> yes | no.
 register_name({Scope, Name}, Pid) ->
-    case register(Scope, Name, Pid) of
-        ok -> yes;
-        _ -> no
-    end;
+    register_name({Scope, Name, undefined}, Pid);
 register_name({Scope, Name, Meta}, Pid) ->
     case register(Scope, Name, Pid, Meta) of
         ok -> yes;
@@ -443,6 +440,7 @@ unregister_name({Scope, Name}) ->
 unregister_name({Scope, Name, _Meta}) ->
     unregister_name(Scope, Name).
 
+%% @private
 -spec unregister_name(Scope :: atom(), Name :: term()) -> term().
 unregister_name(Scope, Name) ->
     case unregister(Scope, Name) of
@@ -457,6 +455,7 @@ whereis_name({Scope, Name}) ->
 whereis_name({Scope, Name, _Meta}) ->
     whereis_name(Scope, Name).
 
+%% @private
 -spec whereis_name(Scope :: atom(), Name :: term()) -> pid() | undefined.
 whereis_name(Scope, Name) ->
     case lookup(Scope, Name) of
@@ -466,10 +465,10 @@ whereis_name(Scope, Name) ->
 
 %% @private
 -spec send(Name :: term(), Message :: term()) -> pid().
-send(Name, Message) ->
-    case whereis_name(Name) of
+send(Tuple, Message) ->
+    case whereis_name(Tuple) of
         undefined ->
-            {badarg, {Name, Message}};
+            {badarg, {Tuple, Message}};
         Pid ->
             Pid ! Message,
             Pid

+ 10 - 9
test/syn_registry_SUITE.erl

@@ -202,22 +202,29 @@ one_node_via_register_unregister(_Config) ->
     GenServerNameCustom = {scope, <<"my proc">>},
     TupleCustom = {via, syn, GenServerNameCustom},
     {ok, PidCustom} = syn_test_gen_server:start_link(TupleCustom),
+
     %% retrieve
     {PidCustom, undefined} = syn:lookup(scope, <<"my proc">>),
+    PidCustom = syn:whereis_name(GenServerNameCustom),
+
     %% call
     pong = syn_test_gen_server:ping(TupleCustom),
+
     %% send via syn
     syn:send(GenServerNameCustom, {self(), send_ping}),
     syn_test_suite_helper:assert_received_messages([
         reply_pong
     ]),
+
     %% stop server
     syn_test_gen_server:stop(TupleCustom),
+
     %% retrieve
     syn_test_suite_helper:assert_wait(
         undefined,
         fun() -> syn:lookup(scope, <<"my proc">>) end
     ),
+
     %% send via syn
     {badarg, {GenServerNameCustom, anything}} = (catch syn:send(GenServerNameCustom, anything)).
 
@@ -227,28 +234,23 @@ one_node_via_register_unregister_with_metadata(_Config) ->
     syn:add_node_to_scopes([scope]),
 
     %% start gen server via syn
-    GenServerNameCustom = {scope, <<"my proc">>},
     GenServerNameCustomMeta = {scope, <<"my proc">>, my_metadata},
-    TupleCustom = {via, syn, GenServerNameCustom},
     TupleCustomMeta = {via, syn, GenServerNameCustomMeta},
     {ok, PidCustom} = syn_test_gen_server:start_link(TupleCustomMeta),
 
     %% retrieve
     {PidCustom, my_metadata} = syn:lookup(scope, <<"my proc">>),
+    PidCustom = syn:whereis_name(GenServerNameCustomMeta),
+    PidCustom = syn:whereis_name({scope, <<"my proc">>}),
 
     %% call
     pong = syn_test_gen_server:ping(TupleCustomMeta),
-    pong = syn_test_gen_server:ping(TupleCustom),
 
     %% send via syn
     syn:send(GenServerNameCustomMeta, {self(), send_ping}),
     syn_test_suite_helper:assert_received_messages([
         reply_pong
     ]),
-    syn:send(GenServerNameCustom, {self(), send_ping}),
-    syn_test_suite_helper:assert_received_messages([
-        reply_pong
-    ]),
 
     %% stop server
     syn_test_gen_server:stop(TupleCustomMeta),
@@ -260,8 +262,7 @@ one_node_via_register_unregister_with_metadata(_Config) ->
     ),
 
     %% send via syn
-    {badarg, {GenServerNameCustomMeta, anything}} = (catch syn:send(GenServerNameCustomMeta, anything)),
-    {badarg, {GenServerNameCustom, anything}} = (catch syn:send(GenServerNameCustom, anything)).
+    {badarg, {GenServerNameCustomMeta, anything}} = (catch syn:send(GenServerNameCustomMeta, anything)).
 
 one_node_strict_mode(_Config) ->
     %% start syn