aboutsummaryrefslogtreecommitdiffstats
path: root/src/db/update/Queue.cxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/db/update/Queue.cxx29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/db/update/Queue.cxx b/src/db/update/Queue.cxx
index 096a39a8c..6d6d80131 100644
--- a/src/db/update/Queue.cxx
+++ b/src/db/update/Queue.cxx
@@ -21,12 +21,13 @@
#include "Queue.hxx"
bool
-UpdateQueue::Push(const char *path, bool discard, unsigned id)
+UpdateQueue::Push(SimpleDatabase &db, Storage &storage,
+ const char *path, bool discard, unsigned id)
{
if (update_queue.size() >= MAX_UPDATE_QUEUE_SIZE)
return false;
- update_queue.emplace_back(path, discard, id);
+ update_queue.emplace_back(db, storage, path, discard, id);
return true;
}
@@ -40,3 +41,27 @@ UpdateQueue::Pop()
update_queue.pop_front();
return i;
}
+
+void
+UpdateQueue::Erase(SimpleDatabase &db)
+{
+ for (auto i = update_queue.begin(), end = update_queue.end();
+ i != end;) {
+ if (i->db == &db)
+ i = update_queue.erase(i);
+ else
+ ++i;
+ }
+}
+
+void
+UpdateQueue::Erase(Storage &storage)
+{
+ for (auto i = update_queue.begin(), end = update_queue.end();
+ i != end;) {
+ if (i->storage == &storage)
+ i = update_queue.erase(i);
+ else
+ ++i;
+ }
+}