1d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#ifndef DMReporter_DEFINED 2d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#define DMReporter_DEFINED 3d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 4d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkString.h" 5d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkTArray.h" 6d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkThread.h" 7a39874b636f9954c6da335733fed646ba33dd614commit-bot@chromium.org#include "SkTime.h" 8d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkTypes.h" 9d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 10d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com// Used to report status changes including failures. All public methods are threadsafe. 11d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comnamespace DM { 12d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 13d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comclass Reporter : SkNoncopyable { 14d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.compublic: 1539e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org Reporter() : fPending(0), fFailed(0) {} 16d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 1739e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org void taskCreated() { sk_atomic_inc(&fPending); } 1839e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org void taskDestroyed() { sk_atomic_dec(&fPending); } 190dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org void fail(SkString msg); 20d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 2139e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org void printStatus(SkString name, SkMSec timeMs) const; 22d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 23d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com void getFailures(SkTArray<SkString>*) const; 24d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 25d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comprivate: 2639e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org int32_t fPending; // atomic 2739e8d93337c7e37d2b09dc710a05a9beefef5c2ccommit-bot@chromium.org int32_t fFailed; // atomic, == fFailures.count(). 28d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 29d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com mutable SkMutex fMutex; // Guards fFailures. 30d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com SkTArray<SkString> fFailures; 31d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com}; 32d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 33d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 34d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com} // namespace DM 35d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com 36d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#endif // DMReporter_DEFINED 37