summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan Aillet <jonathan.aillet@iot.bzh>2019-06-14 18:14:13 +0200
committerJonathan Aillet <jonathan.aillet@iot.bzh>2019-06-18 11:34:58 +0200
commit24046bfdb0568077a074b503d58a343a06f4234a (patch)
tree54ecdea5d0768d3d354a2ddbda1e309d574bbd14 /src
parent66f27bce6355cc7df978a9d7a6bc725542057a01 (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.c1
-rw-r--r--src/4a-internals-hal/4a-internals-hal-cb.c11
-rw-r--r--src/4a-internals-hal/4a-internals-hal-mixer-link.c9
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(&currentHalData->internalHalData->probedDevicesListHead);
+ CDS_INIT_LIST_HEAD(&currentHalData->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,
- &currentHalData->internalHalData->streamsData);
+ &currentHalData->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, &currentHalData->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, &currentHalSpecificData->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(&currentHalSpecificData->streamsData);
+ HalUtlRemoveAllMixerData(&currentHalSpecificData->streamsDataListHead);
return -3;
}
}
- if(! currentHalSpecificData->streamsData) {
+ if(cds_list_empty(&currentHalSpecificData->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 *) &currentHalSpecificData->streamsDataListHead,
NULL,
0,
0)) {