From 82a461a1ff2ea69ecbc107ec8fb1e747189424b0 Mon Sep 17 00:00:00 2001 From: Sebastien Douheret Date: Wed, 10 Jul 2019 14:54:13 +0200 Subject: Migrate binding to APIv3 Change-Id: I2f4b41d1cf43e45c8e894be357dd0a83595a2f07 --- conf.d/cmake/config.cmake | 4 +-- conf.d/project/etc/xds-supervisor-config.json | 4 --- src/plugins/supervisor-api.c | 4 +-- src/xds-binding.c | 50 +++++++++++++++------------ 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake index e3b1202..ebd1d1e 100644 --- a/conf.d/cmake/config.cmake +++ b/conf.d/cmake/config.cmake @@ -105,9 +105,7 @@ set(PACKAGE_MESSAGE "Install widget file using in the target : afm-util install add_definitions(-DCONTROL_PLUGIN_PATH="${CMAKE_BINARY_DIR}/package/lib/plugins:${CMAKE_BINARY_DIR}/package/var:${INSTALL_PREFIX}/${PROJECT_NAME}/lib/plugins") add_definitions(-DCONTROL_CONFIG_PATH="${CMAKE_BINARY_DIR}/package/etc:${INSTALL_PREFIX}/${PROJECT_NAME}/etc") add_definitions(-DCTL_PLUGIN_MAGIC=1286576532) -# SEB TODO: migration to APIV3 -#add_definitions(-DAFB_BINDING_VERSION=3) -add_definitions(-DUSE_API_DYN=1 -DAFB_BINDING_VERSION=3 -DAFB_BINDING_WANT_DYNAPI) +add_definitions(-DAFB_BINDING_VERSION=3) # Print a helper message when every thing is finished # ---------------------------------------------------- diff --git a/conf.d/project/etc/xds-supervisor-config.json b/conf.d/project/etc/xds-supervisor-config.json index e278715..888bb01 100644 --- a/conf.d/project/etc/xds-supervisor-config.json +++ b/conf.d/project/etc/xds-supervisor-config.json @@ -43,10 +43,6 @@ { "uid": "supervisor/xds-trace", "action": "plugin://supervisor#tracing_events" - }, - { - "uid": "afm-main/application-list-changed", - "action": "plugin://supervisor#apps_list_changed" } ] 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 * Author Romain Forlot +* Author Sebastien Douheret * * 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 +#include #include #include #include -#include +#include #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 - 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) -- cgit 1.2.3-korg