OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SYNC_ENGINE_SYNCER_COMMAND_H_ | 5 #ifndef SYNC_ENGINE_SYNCER_COMMAND_H_ |
6 #define SYNC_ENGINE_SYNCER_COMMAND_H_ | 6 #define SYNC_ENGINE_SYNCER_COMMAND_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 | 9 |
| 10 #include "sync/base/sync_export.h" |
10 #include "sync/internal_api/public/util/syncer_error.h" | 11 #include "sync/internal_api/public/util/syncer_error.h" |
11 | 12 |
12 namespace syncer { | 13 namespace syncer { |
13 | 14 |
14 namespace sessions { | 15 namespace sessions { |
15 class SyncSession; | 16 class SyncSession; |
16 } | 17 } |
17 | 18 |
18 // Implementation of a simple command pattern intended to be driven by the | 19 // Implementation of a simple command pattern intended to be driven by the |
19 // Syncer. SyncerCommand is abstract and all subclasses must implement | 20 // Syncer. SyncerCommand is abstract and all subclasses must implement |
20 // ExecuteImpl(). This is done so that chunks of syncer operation can be unit | 21 // ExecuteImpl(). This is done so that chunks of syncer operation can be unit |
21 // tested. | 22 // tested. |
22 // | 23 // |
23 // Example Usage: | 24 // Example Usage: |
24 // | 25 // |
25 // SyncSession session = ...; | 26 // SyncSession session = ...; |
26 // SyncerCommand *cmd = SomeCommandFactory.createCommand(...); | 27 // SyncerCommand *cmd = SomeCommandFactory.createCommand(...); |
27 // cmd->Execute(session); | 28 // cmd->Execute(session); |
28 // delete cmd; | 29 // delete cmd; |
29 | 30 |
30 class SyncerCommand { | 31 class SYNC_EXPORT_PRIVATE SyncerCommand { |
31 public: | 32 public: |
32 SyncerCommand(); | 33 SyncerCommand(); |
33 virtual ~SyncerCommand(); | 34 virtual ~SyncerCommand(); |
34 | 35 |
35 // Execute dispatches to a derived class's ExecuteImpl. | 36 // Execute dispatches to a derived class's ExecuteImpl. |
36 SyncerError Execute(sessions::SyncSession* session); | 37 SyncerError Execute(sessions::SyncSession* session); |
37 | 38 |
38 // ExecuteImpl is where derived classes actually do work. | 39 // ExecuteImpl is where derived classes actually do work. |
39 virtual SyncerError ExecuteImpl(sessions::SyncSession* session) = 0; | 40 virtual SyncerError ExecuteImpl(sessions::SyncSession* session) = 0; |
40 private: | 41 private: |
41 DISALLOW_COPY_AND_ASSIGN(SyncerCommand); | 42 DISALLOW_COPY_AND_ASSIGN(SyncerCommand); |
42 }; | 43 }; |
43 | 44 |
44 } // namespace syncer | 45 } // namespace syncer |
45 | 46 |
46 #endif // SYNC_ENGINE_SYNCER_COMMAND_H_ | 47 #endif // SYNC_ENGINE_SYNCER_COMMAND_H_ |
OLD | NEW |