Roberto Ostinelli 9 лет назад
Родитель
Сommit
e06e302634
2 измененных файлов с 15 добавлено и 0 удалено
  1. 5 0
      src/syn.erl
  2. 10 0
      src/syn_pg.erl

+ 5 - 0
src/syn.erl

@@ -41,6 +41,7 @@
 -export([leave/2]).
 -export([member/2]).
 -export([get_members/1]).
+-export([publish/2]).
 
 %% ===================================================================
 %% API
@@ -111,6 +112,10 @@ member(Pid, Name) ->
 get_members(Name) ->
     syn_pg:get_members(Name).
 
+-spec publish(Name :: any(), Message :: any()) -> {ok, RecipientCount :: non_neg_integer()}.
+publish(Name, Message) ->
+    syn_pg:publish(Name, Message).
+
 %% ===================================================================
 %% Internal
 %% ===================================================================

+ 10 - 0
src/syn_pg.erl

@@ -31,6 +31,7 @@
 -export([leave/2]).
 -export([member/2]).
 -export([get_members/1]).
+-export([publish/2]).
 
 %% gen_server callbacks
 -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
@@ -75,6 +76,15 @@ member(Pid, Name) ->
 get_members(Name) ->
     i_get_members(Name).
 
+-spec publish(Name :: any(), Message :: any()) -> {ok, RecipientCount :: non_neg_integer()}.
+publish(Name, Message) ->
+    MemberPids = i_get_members(Name),
+    FSend = fun(Pid) ->
+        Pid ! Message
+    end,
+    lists:foreach(FSend, MemberPids),
+    {ok, length(MemberPids)}.
+
 %% ===================================================================
 %% Callbacks
 %% ===================================================================