subscribe, unsubscribe topics

This commit is contained in:
Ery Lee 2015-01-15 00:02:05 +08:00
parent d1ac732b8c
commit 0ae43e316c
2 changed files with 4 additions and 5 deletions

View File

@ -126,9 +126,9 @@ subscribe(SessState = #session_state{client_id = ClientId, submap = SubMap}, Top
_ -> lager:warning("~s resubscribe ~p", [ClientId, Resubs]) _ -> lager:warning("~s resubscribe ~p", [ClientId, Resubs])
end, end,
SubMap1 = lists:foldl(fun({Name, Qos}, Acc) -> maps:put(Name, Qos, Acc) end, SubMap, Topics), SubMap1 = lists:foldl(fun({Name, Qos}, Acc) -> maps:put(Name, Qos, Acc) end, SubMap, Topics),
[ok = emqtt_pubsub:subscribe({Topic, Qos}, self()) || {Topic, Qos} <- Topics], {ok, GrantedQos} = emqtt_pubsub:subscribe(Topics, self()),
%%TODO: granted all? %[ok = emqtt_pubsub:subscribe({Topic, Qos}, self()) || {Topic, Qos} <- Topics],
GrantedQos = [Qos || {_Name, Qos} <- Topics], %GrantedQos = [Qos || {_Name, Qos} <- Topics],
{ok, SessState#session_state{submap = SubMap1}, GrantedQos}; {ok, SessState#session_state{submap = SubMap1}, GrantedQos};
subscribe(SessPid, Topics) when is_pid(SessPid) -> subscribe(SessPid, Topics) when is_pid(SessPid) ->
@ -142,7 +142,7 @@ unsubscribe(SessState = #session_state{client_id = ClientId, submap = SubMap}, T
BadUnsubs -> lager:warning("~s should not unsubscribe ~p", [ClientId, BadUnsubs]) BadUnsubs -> lager:warning("~s should not unsubscribe ~p", [ClientId, BadUnsubs])
end, end,
%%unsubscribe from topic tree %%unsubscribe from topic tree
[ok = emqtt_pubsub:unsubscribe(Topic, self()) || Topic <- Topics], ok = emqtt_pubsub:unsubscribe(Topics, self()),
SubMap1 = lists:foldl(fun(Topic, Acc) -> maps:remove(Topic, Acc) end, SubMap, Topics), SubMap1 = lists:foldl(fun(Topic, Acc) -> maps:remove(Topic, Acc) end, SubMap, Topics),
{ok, SessState#session_state{submap = SubMap1}}; {ok, SessState#session_state{submap = SubMap1}};

View File

@ -87,7 +87,6 @@
%% API Function Definitions %% API Function Definitions
%% ------------------------------------------------------------------ %% ------------------------------------------------------------------
start_link() -> start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).