rewrite_subscribe/4, rewrite_unsubscribe/4

This commit is contained in:
Feng Lee 2016-09-09 17:37:25 +08:00
parent 66c84aef00
commit 5eda6c9dd2
1 changed files with 11 additions and 12 deletions

View File

@ -14,7 +14,6 @@
%% limitations under the License. %% limitations under the License.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% @doc emqttd rewrite module
-module(emqttd_mod_rewrite). -module(emqttd_mod_rewrite).
-behaviour(emqttd_gen_mod). -behaviour(emqttd_gen_mod).
@ -23,7 +22,7 @@
-export([load/1, reload/1, unload/1]). -export([load/1, reload/1, unload/1]).
-export([rewrite_subscribe/3, rewrite_unsubscribe/3, rewrite_publish/2]). -export([rewrite_subscribe/4, rewrite_unsubscribe/4, rewrite_publish/2]).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% API %% API
@ -35,18 +34,18 @@ load(Opts) ->
ok; ok;
File -> File ->
{ok, Terms} = file:consult(File), Sections = compile(Terms), {ok, Terms} = file:consult(File), Sections = compile(Terms),
emqttd:hook('client.subscribe', fun ?MODULE:rewrite_subscribe/3, [Sections]), emqttd:hook('client.subscribe', fun ?MODULE:rewrite_subscribe/4, [Sections]),
emqttd:hook('client.unsubscribe', fun ?MODULE:rewrite_unsubscribe/3, [Sections]), emqttd:hook('client.unsubscribe', fun ?MODULE:rewrite_unsubscribe/4, [Sections]),
emqttd:hook('message.publish', fun ?MODULE:rewrite_publish/2, [Sections]) emqttd:hook('message.publish', fun ?MODULE:rewrite_publish/2, [Sections])
end. end.
rewrite_subscribe({_ClientId, _Username}, {Topic, Opts}, Sections) -> rewrite_subscribe(_ClientId, _Username, TopicTable, Sections) ->
lager:info("Rewrite subscribe: ~p", [{Topic, Opts}]), lager:info("Rewrite subscribe: ~p", [TopicTable]),
{ok, {match_topic(Topic, Sections), Opts}}. {ok, [{match_topic(Topic, Sections), Opts} || {Topic, Opts} <- TopicTable]}.
rewrite_unsubscribe({_ClientId, _Username}, Topic, Sections) -> rewrite_unsubscribe(_ClientId, _Username, TopicTable, Sections) ->
lager:info("Rewrite unsubscribe: ~p", [Topic]), lager:info("Rewrite unsubscribe: ~p", [TopicTable]),
{ok, match_topic(Topic, Sections)}. {ok, [{match_topic(Topic, Sections), Opts} || {Topic, Opts} <- TopicTable]}.
rewrite_publish(Message=#mqtt_message{topic = Topic}, Sections) -> rewrite_publish(Message=#mqtt_message{topic = Topic}, Sections) ->
%%TODO: this will not work if the client is always online. %%TODO: this will not work if the client is always online.
@ -71,8 +70,8 @@ reload(File) ->
end. end.
unload(_) -> unload(_) ->
emqttd:unhook('client.subscribe', fun ?MODULE:rewrite_subscribe/3), emqttd:unhook('client.subscribe', fun ?MODULE:rewrite_subscribe/4),
emqttd:unhook('client.unsubscribe',fun ?MODULE:rewrite_unsubscribe/3), emqttd:unhook('client.unsubscribe',fun ?MODULE:rewrite_unsubscribe/4),
emqttd:unhook('message.publish', fun ?MODULE:rewrite_publish/2). emqttd:unhook('message.publish', fun ?MODULE:rewrite_publish/2).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------