X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-export.c;h=800ee77bdf9ee1adadddb5776acd6faa655c233e;hb=65353dce81a629e042800bb7b86fcd869a76727e;hp=8de9f3beb07a826edc1272ccb8e8cccfc59d1537;hpb=4da9c713d091872f8e18cf096d2c5f616183d3b4;p=src%2Fapp-framework-binder.git diff --git a/src/afb-export.c b/src/afb-export.c index 8de9f3be..800ee77b 100644 --- a/src/afb-export.c +++ b/src/afb-export.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2019 "IoT.bzh" + * Copyright (C) 2015-2020 "IoT.bzh" * Author: José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -41,7 +41,6 @@ #endif #include "afb-api-v3.h" #include "afb-common.h" -#include "afb-cred.h" #include "afb-evt.h" #include "afb-export.h" #include "afb-hook.h" @@ -49,6 +48,7 @@ #include "afb-session.h" #include "afb-xreq.h" #include "afb-calls.h" +#include "afb-error-text.h" #include "systemd.h" #include "jobs.h" @@ -1206,7 +1206,7 @@ static const struct afb_api_x3_itf hooked_api_x3_itf = { /* * Propagates the event to the service */ -static void listener_of_events(void *closure, const char *event, int eventid, struct json_object *object) +static void listener_of_events(void *closure, const char *event, uint16_t eventid, struct json_object *object) { const struct globset_handler *handler; void (*callback)(void *, const char*, struct json_object*, struct afb_api_x3*); @@ -1250,10 +1250,20 @@ static void listener_of_events(void *closure, const char *event, int eventid, st json_object_put(object); } +static void listener_of_pushed_events(void *closure, const char *event, uint16_t eventid, struct json_object *object) +{ + listener_of_events(closure, event, eventid, object); +} + +static void listener_of_broadcasted_events(void *closure, const char *event, struct json_object *object, const uuid_binary_t uuid, uint8_t hop) +{ + listener_of_events(closure, event, 0, object); +} + /* the interface for events */ static const struct afb_evt_itf evt_itf = { - .broadcast = listener_of_events, - .push = listener_of_events + .broadcast = listener_of_broadcasted_events, + .push = listener_of_pushed_events }; /* ensure an existing listener */ @@ -1808,12 +1818,12 @@ static void api_call_cb(void *closure, struct afb_xreq *xreq) afb_api_v3_process_call(export->desc.v3, xreq); break; default: - afb_xreq_reply(xreq, NULL, "bad-api-type", NULL); + afb_xreq_reply(xreq, NULL, afb_error_text_internal_error, NULL); break; } } -static struct json_object *api_describe_cb(void *closure) +static void api_describe_cb(void *closure, void (*describecb)(void *, struct json_object *), void *clocb) { struct afb_export *export = closure; struct json_object *result; @@ -1836,7 +1846,7 @@ static struct json_object *api_describe_cb(void *closure) result = NULL; break; } - return result; + describecb(clocb, result); } static int api_service_start_cb(void *closure) @@ -1927,12 +1937,12 @@ void afb_export_undeclare(struct afb_export *export) int afb_export_subscribe(struct afb_export *export, struct afb_event_x2 *event) { - return afb_evt_event_x2_add_watch(export->listener, event); + return afb_evt_listener_watch_x2(export->listener, event); } int afb_export_unsubscribe(struct afb_export *export, struct afb_event_x2 *event) { - return afb_evt_event_x2_remove_watch(export->listener, event); + return afb_evt_listener_unwatch_x2(export->listener, event); } void afb_export_process_xreq(struct afb_export *export, struct afb_xreq *xreq) @@ -1942,7 +1952,6 @@ void afb_export_process_xreq(struct afb_export *export, struct afb_xreq *xreq) void afb_export_context_init(struct afb_export *export, struct afb_context *context) { - afb_context_init(context, export->session, NULL); - context->validated = 1; + afb_context_init_validated(context, export->session, NULL, NULL); }