summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author Siarhei Vishniakou <svv@google.com> 2025-02-10 18:38:51 -0800
committer Siarhei Vishniakou <svv@google.com> 2025-02-10 18:42:25 -0800
commit287f99863b4147caa933d6bed86697dc2c605b45 (patch)
treef98959c37e4b6d5be3008d2154f07f1e13e2964e /include
parent4dcf2fa35aa37cfa0a9de99bd56662ed149bfd0a (diff)
Add empty, dump methods to BlockingQueue
BlockingQueue can now be dumped (since the user can't access its internal state, and it's too clunky to be making a copy just so that we can destructively print it). Also, "empty" method is useful when converting code from std containers to the BlockingQueue. At the same time, mark the "size" method as const. Bug: 376713684 Test: used in another CL in frameworks/base. build only here Flag: EXEMPT refactor Change-Id: I3fda00b793b512bdba4c85dbf561dfc5e9724601
Diffstat (limited to 'include')
-rw-r--r--include/input/BlockingQueue.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/include/input/BlockingQueue.h b/include/input/BlockingQueue.h
index f848c82c42..6e32de6d86 100644
--- a/include/input/BlockingQueue.h
+++ b/include/input/BlockingQueue.h
@@ -16,6 +16,7 @@
#pragma once
+#include <input/PrintTools.h>
#include <condition_variable>
#include <functional>
#include <list>
@@ -126,11 +127,21 @@ public:
* Primary used for debugging.
* Does not block.
*/
- size_t size() {
+ size_t size() const {
std::scoped_lock lock(mLock);
return mQueue.size();
}
+ bool empty() const {
+ std::scoped_lock lock(mLock);
+ return mQueue.empty();
+ }
+
+ std::string dump(std::string (*toString)(const T&) = constToString) const {
+ std::scoped_lock lock(mLock);
+ return dumpContainer(mQueue, toString);
+ }
+
private:
const std::optional<size_t> mCapacity;
/**
@@ -140,7 +151,7 @@ private:
/**
* Lock for accessing and waiting on elements.
*/
- std::mutex mLock;
+ mutable std::mutex mLock;
std::list<T> mQueue GUARDED_BY(mLock);
};