blob: 2bb4702178a64ccf043b2ef19e475a770646005a [file] [log] [blame]
mtklein@google.comd36522d2013-10-16 13:02:15 +00001#ifndef DMReporter_DEFINED
2#define DMReporter_DEFINED
3
4#include "SkString.h"
5#include "SkTArray.h"
6#include "SkThread.h"
7#include "SkTypes.h"
8
9// Used to report status changes including failures. All public methods are threadsafe.
mtklein@google.comd36522d2013-10-16 13:02:15 +000010namespace DM {
11
12class Reporter : SkNoncopyable {
13public:
14 Reporter() : fStarted(0), fFinished(0) {}
15
16 void start() { sk_atomic_inc(&fStarted); }
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000017 void finish(SkString name);
18 void fail(SkString msg);
mtklein@google.comd36522d2013-10-16 13:02:15 +000019
20 int32_t started() const { return fStarted; }
21 int32_t finished() const { return fFinished; }
22 int32_t failed() const;
23
mtklein@google.comd36522d2013-10-16 13:02:15 +000024 void getFailures(SkTArray<SkString>*) const;
25
26private:
27 int32_t fStarted, fFinished;
28
29 mutable SkMutex fMutex; // Guards fFailures.
30 SkTArray<SkString> fFailures;
31};
32
33
34} // namespace DM
35
36#endif // DMReporter_DEFINED