From 279692a9295466fcf25ad27aa8a37c4579f5d2cc Mon Sep 17 00:00:00 2001 From: Feng Date: Sat, 12 Mar 2016 19:44:48 +0800 Subject: [PATCH] update hooks --- docs/source/plugins.rst | 72 ++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/docs/source/plugins.rst b/docs/source/plugins.rst index eb6b5ce6b..c1e4cfdb0 100644 --- a/docs/source/plugins.rst +++ b/docs/source/plugins.rst @@ -523,55 +523,45 @@ emqttd_plugin_template_app.erl - Register the auth/ACL modules: ok = emqttd_access_control:register_mod(acl, emqttd_acl_demo, []), -Register Handlers for Hooks ---------------------------- +Register Callbacks for Hooks +----------------------------- -The plugin could register handlers for hooks. The hooks will be called by the broker when a client connected/disconnected, a topic subscribed/unsubscribed or a message published/delivered: +The plugin could register callbacks for hooks. The hooks will be run by the broker when a client connected/disconnected, a topic subscribed/unsubscribed or a message published/delivered: -+------------------------+-------------+---------------------------------------+ -| Name | Type | Description | -+------------------------+-------------+---------------------------------------+ -| client.connected | foreach | Run when a client connected to the | -| | | broker successfully | -+------------------------+-------------+---------------------------------------+ -| client.subscribe | foldl | Run before a client subscribes topics | -+------------------------+-------------+---------------------------------------+ -| client.subscribe.after | foreach | Run after a client subscribed topics | -+------------------------+-------------+---------------------------------------+ -| client.unsubscribe | foldl | Run when a client unsubscribes topics | -+------------------------+-------------+---------------------------------------+ -| message.publish | foldl | Run when a message is published | -+------------------------+-------------+---------------------------------------+ -| message.acked | foreach | Run when a message is delivered | -+------------------------+-------------+---------------------------------------+ -| client.disconnected | foreach | Run when a client is disconnnected | -+----------------------- +-------------+---------------------------------------+ ++------------------------+---------------------------------------+ +| Name | Description | ++------------------------+---------------------------------------+ +| client.connected | Run when a client connected to the | +| | broker successfully | ++------------------------+---------------------------------------+ +| client.subscribe | Run before a client subscribes topics | ++------------------------+---------------------------------------+ +| client.subscribe.after | Run after a client subscribed topics | ++------------------------+---------------------------------------+ +| client.unsubscribe | Run when a client unsubscribes topics | ++------------------------+---------------------------------------+ +| message.publish | Run when a message is published | ++------------------------+---------------------------------------+ +| message.delivered | Run when a message is delivered | ++------------------------+---------------------------------------+ +| message.acked | Run when a message(qos1/2) is acked | ++------------------------+---------------------------------------+ +| client.disconnected | Run when a client is disconnnected | ++----------------------- +---------------------------------------+ emqttd_plugin_template.erl for example:: %% Called when the plugin application start load(Env) -> + emqttd:hook('client.connected', fun ?MODULE:on_client_connected/3, [Env]), + emqttd:hook('client.disconnected', fun ?MODULE:on_client_disconnected/3, [Env]), + emqttd:hook('client.subscribe', fun ?MODULE:on_client_subscribe/3, [Env]), + emqttd:hook('client.subscribe.after', fun ?MODULE:on_client_subscribe_after/3, [Env]), + emqttd:hook('client.unsubscribe', fun ?MODULE:on_client_unsubscribe/3, [Env]), + emqttd:hook('message.publish', fun ?MODULE:on_message_publish/2, [Env]), + emqttd:hook('message.delivered', fun ?MODULE:on_message_delivered/3, [Env]), + emqttd:hook('message.acked', fun ?MODULE:on_message_acked/3, [Env]). - emqttd_broker:hook('client.connected', {?MODULE, on_client_connected}, - {?MODULE, on_client_connected, [Env]}), - - emqttd_broker:hook('client.disconnected', {?MODULE, on_client_disconnected}, - {?MODULE, on_client_disconnected, [Env]}), - - emqttd_broker:hook('client.subscribe', {?MODULE, on_client_subscribe}, - {?MODULE, on_client_subscribe, [Env]}), - - emqttd_broker:hook('client.subscribe.after', {?MODULE, on_client_subscribe_after}, - {?MODULE, on_client_subscribe_after, [Env]}), - - emqttd_broker:hook('client.unsubscribe', {?MODULE, on_client_unsubscribe}, - {?MODULE, on_client_unsubscribe, [Env]}), - - emqttd_broker:hook('message.publish', {?MODULE, on_message_publish}, - {?MODULE, on_message_publish, [Env]}), - - emqttd_broker:hook('message.acked', {?MODULE, on_message_acked}, - {?MODULE, on_message_acked, [Env]}). Register CLI Modules --------------------