diff options
Diffstat (limited to 'src/xds-binding.c')
-rw-r--r-- | src/xds-binding.c | 50 |
1 files changed, 28 insertions, 22 deletions
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) |