diff options
Diffstat (limited to 'src/4a-internals-hal/4a-internals-hal-api-loader.c')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.c | 38 |
1 files changed, 38 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; |