diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-09-21 21:25:07 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-10-09 14:08:32 +0200 |
commit | 5928e8fc14c2edabc0bc104fff7542819e06d45a (patch) | |
tree | 5a03f7b05c6cfb4cf9f9b5c70415a547d841780d /src/afb-evt.c | |
parent | ae5d707f9348b50d44724ec2b091f4528ff0a72b (diff) |
Deprecate internal use of afb_event
The deprecation is made in favor of
afb_eventid but this can change later
in favor of afb_evt_evtid.
Change-Id: Ic16cb25dbd97cb1e8d26b3c54b159d46bbf82671
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-evt.c')
-rw-r--r-- | src/afb-evt.c | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/src/afb-evt.c b/src/afb-evt.c index aba5e9b6..e3a34202 100644 --- a/src/afb-evt.c +++ b/src/afb-evt.c @@ -1,6 +1,5 @@ /* * Copyright (C) 2015, 2016, 2017 "IoT.bzh" - * Author "Fulup Ar Foll" * Author José Bollo <jose.bollo@iot.bzh> * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -635,50 +634,50 @@ void afb_evt_update_hooks() pthread_mutex_unlock(&events_mutex); } -struct afb_evtid *afb_evt_to_evtid(struct afb_event event) +inline struct afb_evtid *afb_evt_to_evtid(struct afb_eventid *eventid) { - return (struct afb_evtid*)(event.itf == &afb_evt_hooked_eventid_itf ? event.closure : NULL); + return (struct afb_evtid*)eventid; } -struct afb_event afb_evt_from_evtid(struct afb_evtid *evtid) +inline struct afb_eventid *afb_evt_from_evtid(struct afb_evtid *evtid) { - return (struct afb_event){ .itf = evtid ? &afb_evt_hooked_eventid_itf : NULL, .closure = &evtid->eventid }; + return &evtid->eventid; } /* * Creates an event of 'fullname' and returns it. * Returns an event with closure==NULL in case of error. */ -struct afb_event afb_evt_create_event(const char *fullname) +struct afb_eventid *afb_evt_create_event(const char *fullname) { return afb_evt_from_evtid(afb_evt_evtid_create(fullname)); } /* - * Returns the fullname of the 'event' + * Returns the fullname of the 'eventid' */ -const char *afb_evt_event_fullname(struct afb_event event) +const char *afb_evt_event_fullname(struct afb_eventid *eventid) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_to_evtid(eventid); return evtid ? evtid->fullname : NULL; } /* - * Returns the id of the 'event' + * Returns the id of the 'eventid' */ -int afb_evt_event_id(struct afb_event event) +int afb_evt_event_id(struct afb_eventid *eventid) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_to_evtid(eventid); return evtid ? evtid->id : 0; } /* - * Makes the 'listener' watching 'event' + * 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_event event) +int afb_evt_add_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_to_evtid(eventid); /* check parameter */ if (!evtid) { @@ -691,12 +690,12 @@ int afb_evt_add_watch(struct afb_evt_listener *listener, struct afb_event event) } /* - * Avoids the 'listener' to watch 'event' + * 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_event event) +int afb_evt_remove_watch(struct afb_evt_listener *listener, struct afb_eventid *eventid) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_to_evtid(eventid); /* check parameter */ if (!evtid) { @@ -708,21 +707,34 @@ int afb_evt_remove_watch(struct afb_evt_listener *listener, struct afb_event eve return afb_evt_watch_sub_evtid(listener, evtid); } -int afb_evt_push(struct afb_event event, struct json_object *object) +int afb_evt_push(struct afb_eventid *eventid, struct json_object *object) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_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_event event, struct json_object *object) +int afb_evt_unhooked_push(struct afb_eventid *eventid, struct json_object *object) { - struct afb_evtid *evtid = afb_evt_to_evtid(event); + struct afb_evtid *evtid = afb_evt_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) +{ + 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) +{ + struct afb_evtid *evtid = afb_evt_to_evtid(eventid); + if (evtid) + afb_evt_evtid_unref(evtid); +} |