shared: Add LimitQueue which discards oldest entry once limit hit

Tento commit je obsažen v:
Albert S. 2022-08-06 09:03:05 +02:00
rodič 00abc6bc1b
revize ad06497b4b
2 změnil soubory, kde provedl 49 přidání a 0 odebrání

48
shared/limitqueue.h Normální soubor
Zobrazit soubor

@ -0,0 +1,48 @@
#ifndef LIMITQUEUE_H
#define LIMITQUEUE_H
#include <QQueue>
template <class T> class LimitQueue
{
protected:
QQueue<T> queue;
unsigned int limit = 0;
public:
LimitQueue();
LimitQueue(unsigned int limit)
{
this->limit = limit;
}
void enqueue(const T &t)
{
if(queue.size() == limit)
{
queue.dequeue();
}
queue.enqueue(t);
}
int size()
{
return queue.size();
}
T dequeue()
{
return queue.dequeue();
}
void setLimit(unsigned int limit)
{
this->limit = limit;
}
void clear()
{
queue.clear();
}
};
#endif // LIMITQUEUE_H

Zobrazit soubor

@ -77,6 +77,7 @@ HEADERS += sqlitesearch.h \
filescanworker.h \ filescanworker.h \
indexer.h \ indexer.h \
indexsyncer.h \ indexsyncer.h \
limitqueue.h \
logger.h \ logger.h \
looqsgeneralexception.h \ looqsgeneralexception.h \
looqsquery.h \ looqsquery.h \