Index: chrome/browser/sync/engine/model_changing_syncer_command.h |
=================================================================== |
--- chrome/browser/sync/engine/model_changing_syncer_command.h (revision 0) |
+++ chrome/browser/sync/engine/model_changing_syncer_command.h (revision 0) |
@@ -0,0 +1,50 @@ |
+// Copyright (c) 2006-2009 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 CHROME_BROWSER_SYNC_ENGINE_MODEL_CHANGING_SYNCER_COMMAND_H_ |
+#define CHROME_BROWSER_SYNC_ENGINE_MODEL_CHANGING_SYNCER_COMMAND_H_ |
+ |
+#include "chrome/browser/sync/engine/syncer_command.h" |
+ |
+namespace browser_sync { |
+ |
+// An abstract SyncerCommand which dispatches its Execute step to the |
+// model-safe worker thread. Classes derived from ModelChangingSyncerCommand |
+// instead of SyncerCommand must implement ModelChangingExecuteImpl instead of |
+// ExecuteImpl, but otherwise, the contract is the same. |
+// |
+// A command should derive from ModelChangingSyncerCommand instead of |
+// SyncerCommand whenever the operation might change any client-visible |
+// fields on any syncable::Entry. If the operation involves creating a |
+// WriteTransaction, this is a sign that ModelChangingSyncerCommand is likely |
+// necessary. |
+class ModelChangingSyncerCommand : public SyncerCommand { |
+ public: |
+ ModelChangingSyncerCommand() : work_session_(NULL) { } |
+ virtual ~ModelChangingSyncerCommand() { } |
+ |
+ // SyncerCommand implementation. Sets work_session to session. |
+ virtual void ExecuteImpl(SyncerSession* session); |
+ |
+ // wrapper so implementations don't worry about storing work_session |
+ void StartChangingModel() { |
+ ModelChangingExecuteImpl(work_session_); |
+ } |
+ |
+ // Abstract method to be implemented by subclasses. |
+ virtual void ModelChangingExecuteImpl(SyncerSession* session) = 0; |
+ |
+ private: |
+ // ExecuteImpl is expected to be run by SyncerCommand to set work_session. |
+ // StartChangingModel is called to start this command running. |
+ // Implementations will implement ModelChangingExecuteImpl and not |
+ // worry about storing the session or setting it. They are given work_session. |
+ SyncerSession* work_session_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ModelChangingSyncerCommand); |
+}; |
+ |
+} // namespace browser_sync |
+ |
+#endif // CHROME_BROWSER_SYNC_ENGINE_MODEL_CHANGING_SYNCER_COMMAND_H_ |
Property changes on: chrome\browser\sync\engine\model_changing_syncer_command.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |