summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-10-14 15:13:43 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2016-10-14 15:13:43 +0200
commit91d08eedaa810edfd38dcb8ce67c66813e5e3dce (patch)
tree26ef779d40ebb7d38af10ff3e87ca6e0db05306a
parent98a5bca16007a7c4740c4326ef83768d034aed3e (diff)
event: add ability to get the event name
Change-Id: Iecfeb4ab07c07715093d729710669abecee722de Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--include/afb/afb-event-itf.h11
-rw-r--r--src/afb-evt.c16
2 files changed, 23 insertions, 4 deletions
diff --git a/include/afb/afb-event-itf.h b/include/afb/afb-event-itf.h
index 5f7b8370..ad9206a9 100644
--- a/include/afb/afb-event-itf.h
+++ b/include/afb/afb-event-itf.h
@@ -32,6 +32,7 @@ struct afb_event_itf {
int (*broadcast)(void *closure, struct json_object *obj);
int (*push)(void *closure, struct json_object *obj);
void (*drop)(void *closure);
+ const char *(*name)(void *closure);
};
/*
@@ -83,7 +84,7 @@ static inline int afb_event_push(struct afb_event event, struct json_object *obj
}
/*
- * Drops the data associated to the event
+ * Drops the data associated to the 'event'
* After calling this function, the event
* MUST NOT BE USED ANYMORE.
*/
@@ -92,3 +93,11 @@ static inline void afb_event_drop(struct afb_event event)
event.itf->drop(event.closure);
}
+/*
+ * Gets the name associated to the 'event'.
+ */
+static inline const char *afb_event_name(struct afb_event event)
+{
+ return event.itf->name(event.closure);
+}
+
diff --git a/src/afb-evt.c b/src/afb-evt.c
index 4924b8cb..d8853b9d 100644
--- a/src/afb-evt.c
+++ b/src/afb-evt.c
@@ -94,12 +94,14 @@ struct afb_evt_watch {
static int evt_broadcast(struct afb_evt_event *evt, struct json_object *obj);
static int evt_push(struct afb_evt_event *evt, struct json_object *obj);
static void evt_destroy(struct afb_evt_event *evt);
+static const char *evt_name(struct afb_evt_event *evt);
/* the interface for events */
static struct afb_event_itf afb_evt_event_itf = {
.broadcast = (void*)evt_broadcast,
.push = (void*)evt_push,
- .drop = (void*)evt_destroy
+ .drop = (void*)evt_destroy,
+ .name = (void*)evt_name
};
/* head of the list of listeners */
@@ -144,8 +146,8 @@ int afb_evt_broadcast(const char *event, struct json_object *object)
}
/*
- * Broadcasts the event 'evt' with its 'object'
- * 'object' is released (like json_object_put)
+ * Pushes the event 'evt' with 'obj' to its listeners
+ * 'obj' is released (like json_object_put)
* Returns the count of listener taht received the event.
*/
static int evt_push(struct afb_evt_event *evt, struct json_object *obj)
@@ -169,6 +171,14 @@ static int evt_push(struct afb_evt_event *evt, struct json_object *obj)
}
/*
+ * Returns the name associated to the event 'evt'.
+ */
+static const char *evt_name(struct afb_evt_event *evt)
+{
+ return evt->name;
+}
+
+/*
* remove the 'watch'
*/
static void remove_watch(struct afb_evt_watch *watch)