aqhome-data: limit number of open files.

This commit is contained in:
Martin Preuss
2025-09-07 11:48:55 +02:00
parent 9a1c5799aa
commit ffaa27ca24

View File

@@ -23,7 +23,7 @@
#define AQH_STORAGE_DATAPOINTS_STEPS 128 #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); DBG_ERROR(AQH_LOGDOMAIN, "Error opening/creating datafile for valueId \"%lu\"", (unsigned long int) valueId);
return NULL; 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); DBG_DEBUG(AQH_LOGDOMAIN, "Adding datafile for valueId \"%lu\" to list", (unsigned long int) valueId);
AQH_DataFile_List_Add(df, sto->dataFileList); 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) AQH_DATAFILE *_findDataFileByValueId(const AQH_STORAGE *sto, uint64_t valueId)
{ {
if (sto && sto->dataFileList) if (sto && sto->dataFileList) {
return AQH_DataFile_List_GetByValueId(sto->dataFileList, valueId); 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; return NULL;
} }