aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2019-07-10 14:54:13 +0200
committerSebastien Douheret <sebastien.douheret@iot.bzh>2019-07-10 14:54:13 +0200
commit82a461a1ff2ea69ecbc107ec8fb1e747189424b0 (patch)
tree24e0469af8fb2d78c3ec95d94fdb602bbcf04d13
parent2a7a645788c2fdd6fff24f8fc2f10a54c1cc6088 (diff)
Migrate binding to APIv3sandbox/SebD/wip
Change-Id: I2f4b41d1cf43e45c8e894be357dd0a83595a2f07
-rw-r--r--conf.d/cmake/config.cmake4
-rw-r--r--conf.d/project/etc/xds-supervisor-config.json4
-rw-r--r--src/plugins/supervisor-api.c4
-rw-r--r--src/xds-binding.c50
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 <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)