Index: dm/DMReporter.h |
diff --git a/dm/DMReporter.h b/dm/DMReporter.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f7803dc67fdd76687ab17d5e477b53ff119404ce |
--- /dev/null |
+++ b/dm/DMReporter.h |
@@ -0,0 +1,36 @@ |
+#ifndef DMReporter_DEFINED |
+#define DMReporter_DEFINED |
+ |
+#include "SkString.h" |
+#include "SkTArray.h" |
+#include "SkThread.h" |
+#include "SkTime.h" |
+#include "SkTypes.h" |
+ |
+// Used to report status changes including failures. All public methods are threadsafe. |
+namespace DM { |
+ |
+class Reporter : SkNoncopyable { |
+public: |
+ Reporter() : fPending(0), fFailed(0) {} |
+ |
+ void taskCreated() { sk_atomic_inc(&fPending); } |
+ void taskDestroyed() { sk_atomic_dec(&fPending); } |
+ void fail(SkString msg); |
+ |
+ void printStatus(SkString name, SkMSec timeMs) const; |
+ |
+ void getFailures(SkTArray<SkString>*) const; |
+ |
+private: |
+ int32_t fPending; // atomic |
+ int32_t fFailed; // atomic, == fFailures.count(). |
+ |
+ mutable SkMutex fMutex; // Guards fFailures. |
+ SkTArray<SkString> fFailures; |
+}; |
+ |
+ |
+} // namespace DM |
+ |
+#endif // DMReporter_DEFINED |