diff options
Diffstat (limited to 'src/4a-internals-hal')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.c | 38 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.h | 1 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/4a-internals-hal/4a-internals-hal-api-loader.c b/src/4a-internals-hal/4a-internals-hal-api-loader.c index 5334bdf..ba742f1 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.c +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.c @@ -199,6 +199,44 @@ int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *hal return 0; } +int InternalHalDeleteApi(afb_api_t apiHandle, struct cds_list_head *halDataListHead, struct HalData *toDeleteHalData) +{ + int err; + + char *toDeleteApiName; + + if(! apiHandle || ! toDeleteHalData) { + AFB_API_ERROR(apiHandle, "Invalid argument(s)"); + return -1; + } + + toDeleteApiName = strdup(toDeleteHalData->apiName); + if(! toDeleteApiName) { + AFB_API_ERROR(apiHandle, "Didn't succeed to store (allocate) 'apiName' string"); + return -2; + } + + err = HalUtlRemoveHalDataAndDeleteHalApi(toDeleteHalData->internalHalData->apiHandle, + toDeleteHalData, + halDataListHead); + if(err) { + AFB_API_ERROR(apiHandle, + "Error %i happened while trying to delete '%s' api and to remove all its data", + err, + toDeleteApiName); + free(toDeleteApiName); + return -3; + } + + AFB_API_NOTICE(apiHandle, + "Api '%s' and all its data has been deleted", + toDeleteApiName); + + free(toDeleteApiName); + + return 0; +} + int InternalHalCreateAllApi(afb_api_t apiHandle, struct HalMgrData *halMgrData) { int index; diff --git a/src/4a-internals-hal/4a-internals-hal-api-loader.h b/src/4a-internals-hal/4a-internals-hal-api-loader.h index fa878e2..1628e8a 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.h +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.h @@ -26,6 +26,7 @@ // Verbs that can be use to create api int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *halMgrData); +int InternalHalDeleteApi(afb_api_t apiHandle, struct cds_list_head *halDataListHead, struct HalData *toDeleteHalData); int InternalHalCreateAllApi(afb_api_t apiHandle, struct HalMgrData *halMgrData); #endif /* _INTERNALS_HAL_API_LOADER_INCLUDE_ */
\ No newline at end of file |