From 000e22246fccde741f2a748dc08eed5e21edcba0 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 8 Jun 2016 21:39:12 +0100 Subject: [PATCH] Caches: method to query keys of all unsaved values. --- src/blackmisc/valuecache.cpp | 11 +++++++++++ src/blackmisc/valuecache.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/blackmisc/valuecache.cpp b/src/blackmisc/valuecache.cpp index 53d2ec9d8..39e99b655 100644 --- a/src/blackmisc/valuecache.cpp +++ b/src/blackmisc/valuecache.cpp @@ -201,6 +201,17 @@ namespace BlackMisc return map; } + QStringList CValueCache::getAllUnsavedKeys(const QString &keyPrefix) const + { + QMutexLocker lock(&m_mutex); + QStringList keys; + for (const auto &element : elementsStartingWith(keyPrefix)) + { + if (element->m_value.isValid() && ! element->m_saved) { keys.push_back(element->m_key); } + } + return keys; + } + void CValueCache::insertValues(const CValueCachePacket &values) { QMutexLocker lock(&m_mutex); diff --git a/src/blackmisc/valuecache.h b/src/blackmisc/valuecache.h index 70f7cb6b8..99eaea01d 100644 --- a/src/blackmisc/valuecache.h +++ b/src/blackmisc/valuecache.h @@ -171,6 +171,10 @@ namespace BlackMisc //! \threadsafe BlackMisc::CValueCachePacket getAllValuesWithTimestamps(const QString &keyPrefix = {}) const; + //! Return keys of all values which have been changed but not saved. + //! \threadsafe + QStringList getAllUnsavedKeys(const QString &keyPrefix = {}) const; + //! Add some values to the cache. //! Values already in the cache will remain in the cache unless they are overwritten. //! \threadsafe