Просмотр исходного кода

rewrite_subscribe/4, rewrite_unsubscribe/4

Feng Lee 9 лет назад
Родитель
Сommit
5eda6c9dd2
1 измененных файлов с 11 добавлено и 12 удалено
  1. 11 12
      src/emqttd_mod_rewrite.erl

+ 11 - 12
src/emqttd_mod_rewrite.erl

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