aqhome-data: limit number of open files.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user