return NULL;
}
+/*
+ * Creates an event of name 'prefix'/'name' and returns it or NULL on error.
+ */
+struct afb_evtid *afb_evt_evtid_create2(const char *prefix, const char *name)
+{
+ size_t prelen, postlen;
+ char *fullname;
+
+ /* makes the event fullname */
+ prelen = strlen(prefix);
+ postlen = strlen(name);
+ fullname = alloca(prelen + postlen + 2);
+ memcpy(fullname, prefix, prelen);
+ fullname[prelen] = '/';
+ memcpy(fullname + prelen + 1, name, postlen + 1);
+
+ /* create the event */
+ return afb_evt_evtid_create(fullname);
+}
+
/*
* increment the reference count of the event 'evtid'
*/
pthread_mutex_unlock(&events_mutex);
}
-inline struct afb_evtid *afb_evt_to_evtid(struct afb_eventid *eventid)
+inline struct afb_evtid *afb_evt_eventid_to_evtid(struct afb_eventid *eventid)
{
return (struct afb_evtid*)eventid;
}
-inline struct afb_eventid *afb_evt_from_evtid(struct afb_evtid *evtid)
+inline struct afb_eventid *afb_evt_eventid_from_evtid(struct afb_evtid *evtid)
{
return &evtid->eventid;
}
* Creates an event of 'fullname' and returns it.
* Returns an event with closure==NULL in case of error.
*/
-struct afb_eventid *afb_evt_create_event(const char *fullname)
+struct afb_eventid *afb_evt_eventid_create(const char *fullname)
+{
+ return afb_evt_eventid_from_evtid(afb_evt_evtid_create(fullname));
+}
+
+/*
+ * Creates an event of name 'prefix'/'name' and returns it.
+ * Returns an event with closure==NULL in case of error.
+ */
+struct afb_eventid *afb_evt_eventid_create2(const char *prefix, const char *name)
{
- return afb_evt_from_evtid(afb_evt_evtid_create(fullname));
+ return afb_evt_eventid_from_evtid(afb_evt_evtid_create2(prefix, name));
}
/*
* Returns the fullname of the 'eventid'
*/
-const char *afb_evt_event_fullname(struct afb_eventid *eventid)
+const char *afb_evt_eventid_fullname(struct afb_eventid *eventid)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
return evtid ? evtid->fullname : NULL;
}
/*
* Returns the id of the 'eventid'
*/
-int afb_evt_event_id(struct afb_eventid *eventid)
+int afb_evt_eventid_id(struct afb_eventid *eventid)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
return evtid ? evtid->id : 0;
}
* Makes the 'listener' watching 'eventid'
* Returns 0 in case of success or else -1.
*/
-int afb_evt_add_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid)
+int afb_evt_eventid_add_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
/* check parameter */
if (!evtid) {
* Avoids the 'listener' to watch 'eventid'
* Returns 0 in case of success or else -1.
*/
-int afb_evt_remove_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid)
+int afb_evt_eventid_remove_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
/* check parameter */
if (!evtid) {
return afb_evt_watch_sub_evtid(listener, evtid);
}
-int afb_evt_push(struct afb_eventid *eventid, struct json_object *object)
+int afb_evt_eventid_push(struct afb_eventid *eventid, struct json_object *object)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
if (evtid)
return afb_evt_evtid_hooked_push(evtid, object);
json_object_put(object);
return 0;
}
-int afb_evt_unhooked_push(struct afb_eventid *eventid, struct json_object *object)
+int afb_evt_eventid_unhooked_push(struct afb_eventid *eventid, struct json_object *object)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
if (evtid)
return afb_evt_evtid_push(evtid, object);
json_object_put(object);
return 0;
}
-struct afb_event afb_event_from_evtid(struct afb_evtid *evtid)
+struct afb_event afb_evt_event_from_evtid(struct afb_evtid *evtid)
{
return evtid
? (struct afb_event){ .itf = &afb_evt_hooked_eventid_itf, .closure = &evtid->eventid }
: (struct afb_event){ .itf = NULL, .closure = NULL };
}
-void afb_evt_event_unref(struct afb_eventid *eventid)
+void afb_evt_eventid_unref(struct afb_eventid *eventid)
{
- struct afb_evtid *evtid = afb_evt_to_evtid(eventid);
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
if (evtid)
afb_evt_evtid_unref(evtid);
}
+
+struct afb_eventid *afb_evt_eventid_addref(struct afb_eventid *eventid)
+{
+ struct afb_evtid *evtid = afb_evt_eventid_to_evtid(eventid);
+ if (evtid)
+ afb_evt_evtid_addref(evtid);
+ return eventid;
+}
+