vverbose_cb(closure, level, file, line, NULL, fmt, args);
}
-static struct afb_event event_make_cb(void *closure, const char *name)
+static struct afb_eventid *eventid_make_cb(void *closure, const char *name)
{
size_t plen, nlen;
char *event;
if (export->state == Api_State_Pre_Init) {
ERROR("[API %s] Bad call to 'afb_daemon_event_make(%s)', must not be in PreInit", export->apiname, name);
errno = EINVAL;
- return (struct afb_event){ .itf = NULL, .closure = NULL };
+ return NULL;
}
/* makes the event name */
return afb_evt_create_event(event);
}
+static struct afb_event event_make_cb(void *closure, const char *name)
+{
+ struct afb_eventid *eventid = eventid_make_cb(closure, name);
+ return (struct afb_event){ .itf = eventid ? eventid->itf : NULL, .closure = eventid };
+}
+
static int event_broadcast_cb(void *closure, const char *name, struct json_object *object)
{
size_t plen, nlen;
hooked_vverbose_cb(closure, level, file, line, NULL, fmt, args);
}
-static struct afb_event hooked_event_make_cb(void *closure, const char *name)
+static struct afb_eventid *hooked_eventid_make_cb(void *closure, const char *name)
{
struct afb_export *export = closure;
- struct afb_event r = event_make_cb(closure, name);
- return afb_hook_ditf_event_make(export, name, r);
+ struct afb_eventid *r = eventid_make_cb(closure, name);
+ afb_hook_ditf_event_make(export, name, r);
+ return r;
+}
+
+static struct afb_event hooked_event_make_cb(void *closure, const char *name)
+{
+ struct afb_eventid *eventid = hooked_eventid_make_cb(closure, name);
+ return (struct afb_event){ .itf = eventid ? eventid->itf : NULL, .closure = eventid };
}
static int hooked_event_broadcast_cb(void *closure, const char *name, struct json_object *object)
struct jobloop *jobloop;
struct json_object *result;
int status;
- int async;
};
/*
callreq->jobloop = NULL;
callreq->callback = callback;
callreq->closure = cbclosure;
- callreq->async = 1;
/* terminates and frees ressources if needed */
afb_xreq_process(&callreq->xreq, export->apiset);
callreq->callback = NULL;
callreq->result = NULL;
callreq->status = 0;
- callreq->async = 0;
afb_xreq_unhooked_addref(&callreq->xreq); /* avoid early callreq destruction */
rc = jobs_enter(NULL, 0, callreq_sync_enter, callreq);
if (rc >= 0)
export->init.v2 = init;
export->on_event.v12 = onevent;
export->export.v2 = data;
+ data->verbosity = verbosity;
data->daemon.closure = export;
data->service.closure = export;
afb_export_update_hook(export);