fix duplicated subscribers with same topic

This commit is contained in:
Gilbert Wong 2018-08-27 11:21:16 +08:00
parent 6d2b31911a
commit f0f1456168
1 changed files with 10 additions and 1 deletions

View File

@ -379,9 +379,18 @@ code_change(_OldVsn, State, _Extra) ->
%% Internal functions %% Internal functions
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
insert_subscriber(Group, Topic, Subscriber) ->
Subscribers = subscribers(Topic),
case lists:member(Subscriber, Subscribers) of
false ->
ets:insert(?SUBSCRIBER, {Topic, shared(Group, Subscriber)});
_ ->
ok
end.
do_subscribe(Group, Topic, Subscriber, SubOpts) -> do_subscribe(Group, Topic, Subscriber, SubOpts) ->
ets:insert(?SUBSCRIPTION, {Subscriber, shared(Group, Topic)}), ets:insert(?SUBSCRIPTION, {Subscriber, shared(Group, Topic)}),
ets:insert(?SUBSCRIBER, {Topic, shared(Group, Subscriber)}), insert_subscriber(Group, Topic, Subscriber),
ets:insert(?SUBOPTION, {{Topic, Subscriber}, SubOpts}). ets:insert(?SUBOPTION, {{Topic, Subscriber}, SubOpts}).
do_unsubscribe(Group, Topic, Subscriber) -> do_unsubscribe(Group, Topic, Subscriber) ->