update hooks

This commit is contained in:
Feng 2016-03-12 19:44:48 +08:00
parent 9ec5393cf2
commit 279692a929
1 changed files with 31 additions and 41 deletions

View File

@ -523,55 +523,45 @@ emqttd_plugin_template_app.erl - Register the auth/ACL modules:
ok = emqttd_access_control:register_mod(acl, emqttd_acl_demo, []), 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 | | Name | Description |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.connected | foreach | Run when a client connected to the | | client.connected | Run when a client connected to the |
| | | broker successfully | | | broker successfully |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.subscribe | foldl | Run before a client subscribes topics | | client.subscribe | Run before a client subscribes topics |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.subscribe.after | foreach | Run after a client subscribed topics | | client.subscribe.after | Run after a client subscribed topics |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.unsubscribe | foldl | Run when a client unsubscribes topics | | client.unsubscribe | Run when a client unsubscribes topics |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| message.publish | foldl | Run when a message is published | | message.publish | Run when a message is published |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| message.acked | foreach | Run when a message is delivered | | message.delivered | Run when a message is delivered |
+------------------------+-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.disconnected | foreach | Run when a client is disconnnected | | message.acked | Run when a message(qos1/2) is acked |
+----------------------- +-------------+---------------------------------------+ +------------------------+---------------------------------------+
| client.disconnected | Run when a client is disconnnected |
+----------------------- +---------------------------------------+
emqttd_plugin_template.erl for example:: emqttd_plugin_template.erl for example::
%% Called when the plugin application start %% Called when the plugin application start
load(Env) -> 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 Register CLI Modules
-------------------- --------------------