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_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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user