diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/supervisor-api.c | 4 | ||||
-rw-r--r-- | src/xds-binding.c | 50 |
2 files changed, 30 insertions, 24 deletions
diff --git a/src/plugins/supervisor-api.c b/src/plugins/supervisor-api.c index a649c1e..c143d69 100644 --- a/src/plugins/supervisor-api.c +++ b/src/plugins/supervisor-api.c @@ -259,14 +259,14 @@ static inline uint64_t get_ts() return (uint64_t)(ts.tv_sec) * (uint64_t)1000000000 + (uint64_t)(ts.tv_nsec); } -static void cb_harvester_write(void* closure, int status, struct json_object* result, struct afb_dynapi* dynapi) +static void cb_harvester_write(void* closure, int status, struct json_object* result, struct afb_api* api) { json_object* err = NULL; if (result) { wrap_json_unpack(result, "{s:{s:o}}", "request", "info", &err); } - AFB_API_DEBUG(dynapi, "cb_harvester_write status: %d, %s", status, json_object_to_json_string(err)); + AFB_API_DEBUG(api, "cb_harvester_write status: %d, %s", status, json_object_to_json_string(err)); } CTLP_CAPI(tracing_events, source, argsJ, eventJ) diff --git a/src/xds-binding.c b/src/xds-binding.c index 81ac6b0..9730524 100644 --- a/src/xds-binding.c +++ b/src/xds-binding.c @@ -1,7 +1,8 @@ /* -* Copyright (C) 2016 "IoT.bzh" +* Copyright (C) 2016-2019 "IoT.bzh" * Author Fulup Ar Foll <fulup@iot.bzh> * Author Romain Forlot <romain@iot.bzh> +* Author Sebastien Douheret <sebastien@iot.bzh> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +19,11 @@ #define _GNU_SOURCE #include <afb/afb-binding.h> +#include <stdbool.h> #include <stdio.h> #include <string.h> #include <time.h> -#include <stdbool.h> +#include <signal.h> #include "xds-binding.h" @@ -65,14 +67,18 @@ static afb_verb_t CtrlApiVerbs[] = { { .verb = NULL } /* marker for end of the array */ }; -static int CtrlLoadStaticVerbs(afb_dynapi* apiHandle, afb_verb_t* verbs) +static int CtrlLoadStaticVerbs(afb_api_t apiHandle, afb_verb_t* verbs) { int errcount = 0; for (int idx = 0; verbs[idx].verb; idx++) { - errcount += afb_dynapi_add_verb( - apiHandle, CtrlApiVerbs[idx].verb, NULL, CtrlApiVerbs[idx].callback, - (void*)&CtrlApiVerbs[idx], CtrlApiVerbs[idx].auth, 0); + errcount += afb_api_add_verb(apiHandle, + CtrlApiVerbs[idx].verb, + NULL, + CtrlApiVerbs[idx].callback, + (void*)&CtrlApiVerbs[idx], + CtrlApiVerbs[idx].auth, + 0, 0); } return errcount; @@ -83,7 +89,7 @@ static int CtrlInitOneApi(afb_api_t apiHandle) int err = 0; // retrieve section config from api handle - CtlConfigT* ctrlConfig = (CtlConfigT*)afb_dynapi_get_userdata(apiHandle); + CtlConfigT* ctrlConfig = (CtlConfigT*)afb_api_get_userdata(apiHandle); err = CtlConfigExec(apiHandle, ctrlConfig); if (err) { AFB_API_ERROR(apiHandle, "Error at CtlConfigExec step"); @@ -93,37 +99,36 @@ static int CtrlInitOneApi(afb_api_t apiHandle) return err; } -// next generation dynamic API-V3 mode -#include <signal.h> - static int CtrlLoadOneApi(void* cbdata, afb_api_t apiHandle) { CtlConfigT* ctrlConfig = (CtlConfigT*)cbdata; // save closure as api's data context - afb_dynapi_set_userdata(apiHandle, ctrlConfig); + afb_api_set_userdata(apiHandle, ctrlConfig); // add static controls verbs - int err = CtrlLoadStaticVerbs(apiHandle, CtrlApiVerbs); - if (err) { + int error = CtrlLoadStaticVerbs(apiHandle, CtrlApiVerbs); + if (error) { AFB_API_ERROR(apiHandle, "CtrlLoadSection fail to register static V2 verbs"); - return ERROR; + goto OnErrorExit; } // load section for corresponding API - err = CtlLoadSections(apiHandle, ctrlConfig, ctrlSections); + error = CtlLoadSections(apiHandle, ctrlConfig, ctrlSections); // declare an event event manager for this API; - afb_dynapi_on_event(apiHandle, CtrlDispatchApiEvent); + afb_api_on_event(apiHandle, CtrlDispatchApiEvent); - // init API function (does not receive user closure ??? - afb_dynapi_on_init(apiHandle, CtrlInitOneApi); + // init API function + afb_api_on_init(apiHandle, CtrlInitOneApi); - afb_dynapi_seal(apiHandle); - return err; + afb_api_seal(apiHandle); + +OnErrorExit: + return error; } -int afbBindingEntry(afb_dynapi* apiHandle) +int afbBindingEntry(afb_api_t apiHandle) { int status = 0; char* dirList; @@ -176,7 +181,8 @@ int afbBindingEntry(afb_dynapi* apiHandle) ctrlConfig->info); // create one API per config file (Pre-V3 return code ToBeChanged) - status = afb_dynapi_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, CtrlLoadOneApi, ctrlConfig); + afb_api_t handle = afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, CtrlLoadOneApi, ctrlConfig); + status = (handle) ? 0 : -1; _exit_afbBindingEntry: if (dirListNeedFree) |