diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-06-14 18:14:13 +0200 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-06-18 11:34:58 +0200 |
commit | 24046bfdb0568077a074b503d58a343a06f4234a (patch) | |
tree | 54ecdea5d0768d3d354a2ddbda1e309d574bbd14 /src | |
parent | 66f27bce6355cc7df978a9d7a6bc725542057a01 (diff) |
Refactoring 'streams data' linked list
Refactoring 'streams data' linked list code using liburcu.
BUG-AGL: SPEC-2329
Change-Id: Idf9367c015d73574d96d83c82a9e8f5b7588a45d
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
Diffstat (limited to 'src')
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-api-loader.c | 1 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-cb.c | 11 | ||||
-rw-r--r-- | src/4a-internals-hal/4a-internals-hal-mixer-link.c | 9 |
3 files changed, 9 insertions, 12 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 7a82a46..bbe4936 100644 --- a/src/4a-internals-hal/4a-internals-hal-api-loader.c +++ b/src/4a-internals-hal/4a-internals-hal-api-loader.c @@ -212,6 +212,7 @@ int InternalHalCreateApi(afb_api_t apiHandle, char *path, struct HalMgrData *hal } CDS_INIT_LIST_HEAD(¤tHalData->internalHalData->probedDevicesListHead); + CDS_INIT_LIST_HEAD(¤tHalData->internalHalData->streamsDataListHead); // Create one API if(! afb_api_new_api(apiHandle, ctrlConfig->api, ctrlConfig->info, 1, InternalHalLoadOneApi, ctrlConfig)) { diff --git a/src/4a-internals-hal/4a-internals-hal-cb.c b/src/4a-internals-hal/4a-internals-hal-cb.c index 07bad11..199fc5a 100644 --- a/src/4a-internals-hal/4a-internals-hal-cb.c +++ b/src/4a-internals-hal/4a-internals-hal-cb.c @@ -1079,7 +1079,7 @@ void InternalHalInfo(afb_req_t request) } streamsArray = HalUtlGetJsonArrayForAllMixersData(apiHandle, - ¤tHalData->internalHalData->streamsData); + ¤tHalData->internalHalData->streamsDataListHead); if(! streamsArray) { afb_req_fail(request, "streams_data", "Didn't succeed to generate streams data array"); return; @@ -1214,10 +1214,9 @@ void InternalHalSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscrib subscriptionDoneNb++; } - currentStreamData = currentHalData->internalHalData->streamsData; - while(currentStreamData && - ! subscriptionFound) { - if(! strcasecmp(currentSubscriptionString, currentStreamData->verb)) { + cds_list_for_each_entry(currentStreamData, ¤tHalData->internalHalData->streamsDataListHead, node) { + if(! subscriptionFound && + ! strcasecmp(currentSubscriptionString, currentStreamData->verb)) { if(currentStreamData->event && subscribeUnsubscribeType == SUBSCRIPTION && afb_req_subscribe(request, currentStreamData->event)) { @@ -1241,8 +1240,6 @@ void InternalHalSubscribeUnsubscribe(afb_req_t request, enum SubscribeUnsubscrib subscriptionDoneNb++; break; } - - currentStreamData = currentStreamData->next; } searchIdx = 0; diff --git a/src/4a-internals-hal/4a-internals-hal-mixer-link.c b/src/4a-internals-hal/4a-internals-hal-mixer-link.c index 879ab3e..42b64d7 100644 --- a/src/4a-internals-hal/4a-internals-hal-mixer-link.c +++ b/src/4a-internals-hal/4a-internals-hal-mixer-link.c @@ -36,7 +36,6 @@ ******************************************************************************/ int InternalHalHandleMixerData(afb_api_t apiHandle, - struct InternalHalMixerData **mixerDataList, json_object *currentDataJ) { int idx, mixerDataNb, verbStart, size; @@ -123,25 +122,25 @@ int InternalHalHandleMixerAttachResponse(afb_api_t apiHandle, struct InternalHal } if(mixerStreamsJ) { - err = InternalHalHandleMixerData(apiHandle, ¤tHalSpecificData->streamsData, mixerStreamsJ); + err = InternalHalHandleMixerData(apiHandle, mixerStreamsJ); if(err) { AFB_API_ERROR(apiHandle, "Error %i during handling response mixer streams data '%s'", err, json_object_get_string(mixerStreamsJ)); - HalUtlRemoveAllMixerData(¤tHalSpecificData->streamsData); + HalUtlRemoveAllMixerData(¤tHalSpecificData->streamsDataListHead); return -3; } } - if(! currentHalSpecificData->streamsData) { + if(cds_list_empty(¤tHalSpecificData->streamsDataListHead)) { AFB_API_WARNING(apiHandle, "No stream detected in mixer response, %s verb won't be created", HAL_ALL_STREAMS_VERB); } else if(afb_api_add_verb(apiHandle, HAL_ALL_STREAMS_VERB, "Send a stream action on all streams", HalUtlActionOnAllStream, - (void *) currentHalSpecificData->streamsData, + (void *) ¤tHalSpecificData->streamsDataListHead, NULL, 0, 0)) { |