From ffaa27ca240a64c208a886cd487eff25a6757916 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 7 Sep 2025 11:48:55 +0200 Subject: [PATCH] aqhome-data: limit number of open files. --- aqhome/data/storage.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/aqhome/data/storage.c b/aqhome/data/storage.c index 561cbf8..8315828 100644 --- a/aqhome/data/storage.c +++ b/aqhome/data/storage.c @@ -23,7 +23,7 @@ #define AQH_STORAGE_DATAPOINTS_STEPS 128 - +#define AQH_STORAGE_MAXOPENFILES 128 /* ------------------------------------------------------------------------------------------------ @@ -650,6 +650,16 @@ AQH_DATAFILE *_getDataFileByValueId(AQH_STORAGE *sto, uint64_t valueId) DBG_ERROR(AQH_LOGDOMAIN, "Error opening/creating datafile for valueId \"%lu\"", (unsigned long int) valueId); return NULL; } + if (AQH_DataFile_List_GetCount(sto->dataFileList)>=AQH_STORAGE_MAXOPENFILES) { + AQH_DATAFILE *dfLast; + + dfLast=AQH_DataFile_List_Last(sto->dataFileList); + if (dfLast) { + AQH_DataFile_Close(dfLast); + AQH_DataFile_List_Del(dfLast); + AQH_DataFile_free(dfLast); + } + } DBG_DEBUG(AQH_LOGDOMAIN, "Adding datafile for valueId \"%lu\" to list", (unsigned long int) valueId); AQH_DataFile_List_Add(df, sto->dataFileList); } @@ -661,8 +671,17 @@ AQH_DATAFILE *_getDataFileByValueId(AQH_STORAGE *sto, uint64_t valueId) AQH_DATAFILE *_findDataFileByValueId(const AQH_STORAGE *sto, uint64_t valueId) { - if (sto && sto->dataFileList) - return AQH_DataFile_List_GetByValueId(sto->dataFileList, valueId); + if (sto && sto->dataFileList) { + AQH_DATAFILE *df; + + df=AQH_DataFile_List_GetByValueId(sto->dataFileList, valueId); + if (df) { + /* move to front of list */ + AQH_DataFile_List_Del(df); + AQH_DataFile_List_Insert(df, sto->dataFileList); + return df; + } + } return NULL; }