| Index: sync/sessions/directory_type_debug_info_emitter.h
|
| diff --git a/sync/sessions/directory_type_debug_info_emitter.h b/sync/sessions/directory_type_debug_info_emitter.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0ba37d3619304aeaf166f6ebb1ec25fd217560ab
|
| --- /dev/null
|
| +++ b/sync/sessions/directory_type_debug_info_emitter.h
|
| @@ -0,0 +1,96 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef SYNC_SESSIONS_DIRECTORY_TYPE_DEBUG_INFO_EMITTER_H_
|
| +#define SYNC_SESSIONS_DIRECTORY_TYPE_DEBUG_INFO_EMITTER_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/observer_list.h"
|
| +#include "base/values.h"
|
| +#include "sync/base/sync_export.h"
|
| +#include "sync/internal_api/public/sessions/commit_counters.h"
|
| +#include "sync/internal_api/public/sessions/update_counters.h"
|
| +#include "sync/syncable/directory.h"
|
| +
|
| +namespace syncer {
|
| +
|
| +class DirectoryCommitContributor;
|
| +class TypeDebugInfoObserver;
|
| +
|
| +// Supports various kinds of debugging requests for a certain directory type.
|
| +//
|
| +// The GetAllNodes() function is used to help export a snapshot of all current
|
| +// nodes to its caller. The complexity required to manage the request mostly
|
| +// lives elsewhere.
|
| +//
|
| +// The Emit*() functions send updates to registered TypeDebugInfoObservers.
|
| +// The DirectoryTypeDebugInfoEmitter does not directly own that list; it is
|
| +// managed by the ModelTypeRegistry.
|
| +//
|
| +// For Update and Commit counters, the job of keeping the counters up to date
|
| +// is delegated to the UpdateHandler and CommitContributors. For the Stats
|
| +// counters, the emitter will use its type_ and directory_ members to fetch all
|
| +// the required information on demand.
|
| +class SYNC_EXPORT_PRIVATE DirectoryTypeDebugInfoEmitter {
|
| + public:
|
| + // Standard constructor for non-tests.
|
| + //
|
| + // The |directory| and |observers| arguments are not owned. Both may be
|
| + // modified outside of this object and both are expected to outlive this
|
| + // object.
|
| + DirectoryTypeDebugInfoEmitter(
|
| + syncable::Directory* directory,
|
| + syncer::ModelType type,
|
| + ObserverList<TypeDebugInfoObserver>* observers);
|
| +
|
| + // A simple constructor for tests. Should not be used in real code.
|
| + DirectoryTypeDebugInfoEmitter();
|
| +
|
| + virtual ~DirectoryTypeDebugInfoEmitter();
|
| +
|
| + // Returns a ListValue representation of all known nodes of this type.
|
| + scoped_ptr<base::ListValue> GetAllNodes();
|
| +
|
| + // Returns a reference to the current commit counters.
|
| + const CommitCounters& GetCommitCounters() const;
|
| +
|
| + // Allows others to mutate the commit counters.
|
| + CommitCounters* GetMutableCommitCounters();
|
| +
|
| + // Triggerss a commit counters update to registered observers.
|
| + void EmitCommitCountersUpdate();
|
| +
|
| + // Returns a reference to the current update counters.
|
| + const UpdateCounters& GetUpdateCounters() const;
|
| +
|
| + // Allows others to mutate the update counters.
|
| + UpdateCounters* GetMutableUpdateCounters();
|
| +
|
| + // Triggers an update counters update to registered observers.
|
| + void EmitUpdateCountersUpdate();
|
| +
|
| + // Triggers a status counters update to registered observers.
|
| + void EmitStatusCountersUpdate();
|
| +
|
| + private:
|
| + syncable::Directory* directory_;
|
| +
|
| + const ModelType type_;
|
| +
|
| + CommitCounters commit_counters_;
|
| + UpdateCounters update_counters_;
|
| +
|
| + // Because there are so many emitters that come into and out of existence, it
|
| + // doesn't make sense to have them manage their own observer list. They all
|
| + // share one observer list that is provided by their owner and which is
|
| + // guaranteed to outlive them.
|
| + ObserverList<TypeDebugInfoObserver>* type_debug_info_observers_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DirectoryTypeDebugInfoEmitter);
|
| +};
|
| +
|
| +} // namespace syncer
|
| +
|
| +#endif // SYNC_SESSIONS_DIRECTORY_TYPE_DEBUG_INFO_EMITTER_H_
|
|
|