summaryrefslogtreecommitdiffstats
path: root/src/vshl-core-binding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vshl-core-binding.c')
-rw-r--r--src/vshl-core-binding.c49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/vshl-core-binding.c b/src/vshl-core-binding.c
index a832f66..9d1000f 100644
--- a/src/vshl-core-binding.c
+++ b/src/vshl-core-binding.c
@@ -1,5 +1,6 @@
/*
* Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ * Copyright 2019 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
@@ -15,8 +16,6 @@
#define _GNU_SOURCE
#include "vshl-core-binding.h"
-afb_dynapi* AFB_default;
-
// Config Section definition (note: controls section index should match handle
// retrieval in HalConfigExec)
static CtlSectionT ctrlSections[] = {{.key = "plugins", .loadCB = PluginConfig},
@@ -25,22 +24,23 @@ static CtlSectionT ctrlSections[] = {{.key = "plugins", .loadCB = PluginConfig},
{.key = "onload", .loadCB = OnloadConfig},
{.key = NULL}};
-static AFB_ApiVerbs ctrlApiVerbs[] = {
+static afb_verb_t ctrlApiVerbs[] = {
{.verb = NULL} /* marker for end of the array */
};
-static int ctrlLoadStaticVerbs(afb_dynapi* apiHandle, AFB_ApiVerbs* 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(
+ errcount += afb_api_add_verb(
apiHandle,
ctrlApiVerbs[idx].verb,
NULL,
ctrlApiVerbs[idx].callback,
(void*)&ctrlApiVerbs[idx],
ctrlApiVerbs[idx].auth,
- 0);
+ 0,
+ !!strchr(ctrlApiVerbs[idx].verb, '*'));
}
return errcount;
@@ -49,7 +49,7 @@ static int ctrlLoadStaticVerbs(afb_dynapi* apiHandle, AFB_ApiVerbs* verbs) {
// next generation dynamic API-V3 mode
#include <signal.h>
-static int CtrlInitOneApi(AFB_ApiT apiHandle)
+static int CtrlInitOneApi(afb_api_t apiHandle)
{
CtlConfigT *ctrlConfig;
@@ -57,72 +57,71 @@ static int CtrlInitOneApi(AFB_ApiT apiHandle)
return -1;
// Retrieve section config from api handle
- ctrlConfig = (CtlConfigT *) AFB_ApiGetUserData(apiHandle);
+ ctrlConfig = (CtlConfigT *) afb_api_get_userdata(apiHandle);
if(!ctrlConfig)
return -2;
return CtlConfigExec(apiHandle, ctrlConfig);
}
-static int ctrlLoadOneApi(void* cbdata, AFB_ApiT apiHandle) {
+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) {
- AFB_ApiError(apiHandle, "ctrlLoadStaticVerbs fail to register static V2 verbs");
+ AFB_API_ERROR(apiHandle, "ctrlLoadStaticVerbs fail to register static V2 verbs");
return ERROR;
}
// load section for corresponding API
err = CtlLoadSections(apiHandle, ctrlConfig, ctrlSections);
if (err) {
- AFB_ApiError(apiHandle, "CtlLoadSections fail to load the sections");
+ AFB_API_ERROR(apiHandle, "CtlLoadSections fail to load the sections");
return ERROR;
}
// 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);
+ afb_api_on_init(apiHandle, CtrlInitOneApi);
- afb_dynapi_seal(apiHandle);
+ afb_api_seal(apiHandle);
return err;
}
-int afbBindingEntry(afb_dynapi* apiHandle) {
- AFB_default = apiHandle;
- AFB_ApiNotice(apiHandle, "Controller in afbBindingEntry");
+int afbBindingEntry(afb_api_t apiHandle) {
+ AFB_API_NOTICE(apiHandle, "Controller in afbBindingEntry");
const char* dirList = getenv("CONTROL_CONFIG_PATH");
if (!dirList) dirList = CONTROL_CONFIG_PATH;
const char* configPath = CtlConfigSearch(apiHandle, dirList, "");
if (!configPath) {
- AFB_ApiError(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList);
+ AFB_API_ERROR(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList);
return ERROR;
}
// load config file and create API
CtlConfigT* ctrlConfig = CtlLoadMetaData(apiHandle, configPath);
if (!ctrlConfig) {
- AFB_ApiError(apiHandle, "CtrlBindingDyn No valid control config file in:\n-- %s", configPath);
+ AFB_API_ERROR(apiHandle, "CtrlBindingDyn No valid control config file in:\n-- %s", configPath);
return ERROR;
}
if (!ctrlConfig->api) {
- AFB_ApiError(apiHandle, "CtrlBindingDyn API Missing from metadata in:\n-- %s", configPath);
+ AFB_API_ERROR(apiHandle, "CtrlBindingDyn API Missing from metadata in:\n-- %s", configPath);
return ERROR;
}
- AFB_ApiNotice(apiHandle, "Controller API='%s' info='%s'", ctrlConfig->api, ctrlConfig->info);
+ AFB_API_NOTICE(apiHandle, "Controller API='%s' info='%s'", ctrlConfig->api, ctrlConfig->info);
- // create one API per config file (Pre-V3 return code ToBeChanged)
- int status = afb_dynapi_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, ctrlLoadOneApi, ctrlConfig);
+ // create one API per config file
+ afb_api_t newApi = afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, ctrlLoadOneApi, ctrlConfig);
- return status;
+ return newApi != NULL ? 0 : -1;
}