+/**
+ * set event hook
+ *
+ * #### Parameters
+ * - event : event name
+ * - f : hook function
+ *
+ * #### Return
+ * Nothing
+ */
+void hs_instance::setEventHook(const char *event, const event_hook_func f)
+{
+ if(event == nullptr || f == nullptr) {
+ AFB_WARNING("argument is null.");
+ return;
+ }
+
+ std::string ev(event);
+ auto it = event_hook_list.find(ev);
+ if(it != event_hook_list.end()) {
+ it->second.push_back(f);
+ }
+ else {
+ std::list<event_hook_func> l;
+ l.push_back(f);
+ event_hook_list[ev] = std::move(l);
+ }
+}
+
+/**
+ * onEvent function
+ *
+ * #### Parameters
+ * - api : the api serving the request
+ * - event : event name
+ * - object : event json object
+ *
+ * #### Return
+ * Nothing
+ */
+void hs_instance::onEvent(afb_api_t api, const char *event, struct json_object *object)
+{
+ std::string ev(event);
+ auto it = event_hook_list.find(ev);
+ if(it != event_hook_list.end()) {
+ for(auto &ref : it->second) {
+ if(ref(api, event, object))
+ break;
+ }
+ }
+}
+