From e14216c6c71cf58a27a07f64cb72d69510451ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Wed, 3 May 2023 13:08:26 +0200 Subject: [PATCH] dataman_client: prevent loading duplicates in the cache --- src/lib/dataman_client/DatamanClient.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib/dataman_client/DatamanClient.cpp b/src/lib/dataman_client/DatamanClient.cpp index 9c0713c8bc..16a2a45e15 100644 --- a/src/lib/dataman_client/DatamanClient.cpp +++ b/src/lib/dataman_client/DatamanClient.cpp @@ -615,8 +615,21 @@ bool DatamanCache::load(dm_item_t item, uint32_t index) } bool success = false; + bool duplicate = false; - if (_item_counter < _num_items) { + //Prevent duplicates + for (uint32_t i = 0; i < _num_items; ++i) { + + if (_items[i].cache_state != State::Idle && + _items[i].cache_state != State::Error && + _items[i].response.item == item && + _items[i].response.index == index) { + duplicate = true; + break; + } + } + + if (!duplicate && (_item_counter < _num_items)) { _items[_load_index].cache_state = State::RequestPrepared; _items[_load_index].response.item = item;