Index: sync/sessions/status_controller.h |
diff --git a/sync/sessions/status_controller.h b/sync/sessions/status_controller.h |
index 101e5837216a965d4b52bdbfcc38afe99ee5b44e..f82587769d6ebc8144ef0a25159697022be66433 100644 |
--- a/sync/sessions/status_controller.h |
+++ b/sync/sessions/status_controller.h |
@@ -5,25 +5,11 @@ |
// StatusController handles all counter and status related number crunching and |
// state tracking on behalf of a SyncSession. |
// |
-// The most important feature of StatusController is the |
-// ScopedModelSafeGroupRestriction. Some of its functions expose per-thread |
-// state, and can be called only when the restriction is in effect. For |
-// example, if GROUP_UI is set then the value returned from |
-// commit_id_projection() will be useful for iterating over the commit IDs of |
-// items that live on the UI thread. |
-// |
-// Other parts of its state are global, and do not require the restriction. |
-// |
-// NOTE: There is no concurrent access protection provided by this class. It |
-// assumes one single thread is accessing this class for each unique |
-// ModelSafeGroup, and also only one single thread (in practice, the |
-// SyncerThread) responsible for all "shared" access when no restriction is in |
-// place. Thus, every bit of data is to be accessed mutually exclusively with |
-// respect to threads. |
-// |
-// StatusController can also track if changes occur to certain parts of state |
-// so that various parts of the sync engine can avoid broadcasting |
-// notifications if no changes occurred. |
+// This object may be accessed from many different threads. It will be accessed |
+// most often from the syncer thread. However, when update application is in |
+// progress it may also be accessed from the worker threads. This is safe |
+// because only one of them will run at a time, and the syncer thread will be |
+// blocked until update application completes. |
Nicolas Zea
2013/11/19 22:45:26
Does the status controller only hold model neutral
rlarocque
2013/11/21 18:28:47
It hasn't tracked any data type specific state for
|
#ifndef SYNC_SESSIONS_STATUS_CONTROLLER_H_ |
#define SYNC_SESSIONS_STATUS_CONTROLLER_H_ |
@@ -96,10 +82,6 @@ class SYNC_EXPORT_PRIVATE StatusController { |
// download: in that case, this also returns false. |
bool ServerSaysNothingMoreToDownload() const; |
- ModelSafeGroup group_restriction() const { |
- return group_restriction_; |
- } |
- |
base::Time sync_start_time() const { |
// The time at which we sent the first GetUpdates command for this sync. |
return sync_start_time_; |
@@ -146,40 +128,13 @@ class SYNC_EXPORT_PRIVATE StatusController { |
bool debug_info_sent() const; |
private: |
- friend class ScopedModelSafeGroupRestriction; |
- |
ModelNeutralState model_neutral_; |
- // Used to fail read/write operations on state that don't obey the current |
- // active ModelSafeWorker contract. |
- bool group_restriction_in_effect_; |
- ModelSafeGroup group_restriction_; |
- |
base::Time sync_start_time_; |
DISALLOW_COPY_AND_ASSIGN(StatusController); |
}; |
-// A utility to restrict access to only those parts of the given |
-// StatusController that pertain to the specified ModelSafeGroup. |
-class ScopedModelSafeGroupRestriction { |
- public: |
- ScopedModelSafeGroupRestriction(StatusController* to_restrict, |
- ModelSafeGroup restriction) |
- : status_(to_restrict) { |
- DCHECK(!status_->group_restriction_in_effect_); |
- status_->group_restriction_ = restriction; |
- status_->group_restriction_in_effect_ = true; |
- } |
- ~ScopedModelSafeGroupRestriction() { |
- DCHECK(status_->group_restriction_in_effect_); |
- status_->group_restriction_in_effect_ = false; |
- } |
- private: |
- StatusController* status_; |
- DISALLOW_COPY_AND_ASSIGN(ScopedModelSafeGroupRestriction); |
-}; |
- |
} // namespace sessions |
} // namespace syncer |