| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // SyncSessionContext encapsulates the contextual information and engine | 5 // SyncSessionContext encapsulates the contextual information and engine |
| 6 // components specific to a SyncSession. A context is accessible via | 6 // components specific to a SyncSession. A context is accessible via |
| 7 // a SyncSession so that session SyncerCommands and parts of the engine have | 7 // a SyncSession so that session SyncerCommands and parts of the engine have |
| 8 // a convenient way to access other parts. In this way it can be thought of as | 8 // a convenient way to access other parts. In this way it can be thought of as |
| 9 // the surrounding environment for the SyncSession. The components of this | 9 // the surrounding environment for the SyncSession. The components of this |
| 10 // environment are either valid or not valid for the entire context lifetime, | 10 // environment are either valid or not valid for the entire context lifetime, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 #include "sync/engine/sync_engine_event.h" | 25 #include "sync/engine/sync_engine_event.h" |
| 26 #include "sync/engine/syncer_types.h" | 26 #include "sync/engine/syncer_types.h" |
| 27 #include "sync/engine/traffic_recorder.h" | 27 #include "sync/engine/traffic_recorder.h" |
| 28 #include "sync/internal_api/public/engine/model_safe_worker.h" | 28 #include "sync/internal_api/public/engine/model_safe_worker.h" |
| 29 #include "sync/protocol/sync.pb.h" | 29 #include "sync/protocol/sync.pb.h" |
| 30 #include "sync/sessions/debug_info_getter.h" | 30 #include "sync/sessions/debug_info_getter.h" |
| 31 | 31 |
| 32 namespace syncer { | 32 namespace syncer { |
| 33 | 33 |
| 34 class ConflictResolver; | |
| 35 class ExtensionsActivityMonitor; | 34 class ExtensionsActivityMonitor; |
| 36 class ServerConnectionManager; | 35 class ServerConnectionManager; |
| 37 class ThrottledDataTypeTracker; | 36 class ThrottledDataTypeTracker; |
| 38 | 37 |
| 39 namespace syncable { | 38 namespace syncable { |
| 40 class Directory; | 39 class Directory; |
| 41 } | 40 } |
| 42 | 41 |
| 43 // Default number of items a client can commit in a single message. | 42 // Default number of items a client can commit in a single message. |
| 44 static const int kDefaultMaxCommitBatchSize = 25; | 43 static const int kDefaultMaxCommitBatchSize = 25; |
| 45 | 44 |
| 46 namespace sessions { | 45 namespace sessions { |
| 47 class ScopedSessionContextConflictResolver; | |
| 48 class TestScopedSessionEventListener; | 46 class TestScopedSessionEventListener; |
| 49 | 47 |
| 50 class SyncSessionContext { | 48 class SyncSessionContext { |
| 51 public: | 49 public: |
| 52 SyncSessionContext(ServerConnectionManager* connection_manager, | 50 SyncSessionContext(ServerConnectionManager* connection_manager, |
| 53 syncable::Directory* directory, | 51 syncable::Directory* directory, |
| 54 const std::vector<ModelSafeWorker*>& workers, | 52 const std::vector<ModelSafeWorker*>& workers, |
| 55 ExtensionsActivityMonitor* extensions_activity_monitor, | 53 ExtensionsActivityMonitor* extensions_activity_monitor, |
| 56 ThrottledDataTypeTracker* throttled_data_type_tracker, | 54 ThrottledDataTypeTracker* throttled_data_type_tracker, |
| 57 const std::vector<SyncEngineEventListener*>& listeners, | 55 const std::vector<SyncEngineEventListener*>& listeners, |
| 58 DebugInfoGetter* debug_info_getter, | 56 DebugInfoGetter* debug_info_getter, |
| 59 TrafficRecorder* traffic_recorder, | 57 TrafficRecorder* traffic_recorder, |
| 60 bool keystore_encryption_enabled); | 58 bool keystore_encryption_enabled); |
| 61 | 59 |
| 62 ~SyncSessionContext(); | 60 ~SyncSessionContext(); |
| 63 | 61 |
| 64 ConflictResolver* resolver() { return resolver_; } | |
| 65 ServerConnectionManager* connection_manager() { | 62 ServerConnectionManager* connection_manager() { |
| 66 return connection_manager_; | 63 return connection_manager_; |
| 67 } | 64 } |
| 68 syncable::Directory* directory() { | 65 syncable::Directory* directory() { |
| 69 return directory_; | 66 return directory_; |
| 70 } | 67 } |
| 71 | 68 |
| 72 const ModelSafeRoutingInfo& routing_info() const { | 69 const ModelSafeRoutingInfo& routing_info() const { |
| 73 return routing_info_; | 70 return routing_info_; |
| 74 } | 71 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 } | 126 } |
| 130 | 127 |
| 131 const sync_pb::ClientStatus& client_status() const { | 128 const sync_pb::ClientStatus& client_status() const { |
| 132 return client_status_; | 129 return client_status_; |
| 133 } | 130 } |
| 134 | 131 |
| 135 private: | 132 private: |
| 136 // Rather than force clients to set and null-out various context members, we | 133 // Rather than force clients to set and null-out various context members, we |
| 137 // extend our encapsulation boundary to scoped helpers that take care of this | 134 // extend our encapsulation boundary to scoped helpers that take care of this |
| 138 // once they are allocated. See definitions of these below. | 135 // once they are allocated. See definitions of these below. |
| 139 friend class ScopedSessionContextConflictResolver; | |
| 140 friend class TestScopedSessionEventListener; | 136 friend class TestScopedSessionEventListener; |
| 141 | 137 |
| 142 // This is installed by Syncer objects when needed and may be NULL. | |
| 143 ConflictResolver* resolver_; | |
| 144 | |
| 145 ObserverList<SyncEngineEventListener> listeners_; | 138 ObserverList<SyncEngineEventListener> listeners_; |
| 146 | 139 |
| 147 ServerConnectionManager* const connection_manager_; | 140 ServerConnectionManager* const connection_manager_; |
| 148 syncable::Directory* const directory_; | 141 syncable::Directory* const directory_; |
| 149 | 142 |
| 150 // A cached copy of SyncBackendRegistrar's routing info. | 143 // A cached copy of SyncBackendRegistrar's routing info. |
| 151 // Must be updated manually when SBR's state is modified. | 144 // Must be updated manually when SBR's state is modified. |
| 152 ModelSafeRoutingInfo routing_info_; | 145 ModelSafeRoutingInfo routing_info_; |
| 153 | 146 |
| 154 // The set of ModelSafeWorkers. Used to execute tasks of various threads. | 147 // The set of ModelSafeWorkers. Used to execute tasks of various threads. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 180 sync_pb::ClientStatus client_status_; | 173 sync_pb::ClientStatus client_status_; |
| 181 | 174 |
| 182 // Temporary variable while keystore encryption is behind a flag. True if | 175 // Temporary variable while keystore encryption is behind a flag. True if |
| 183 // we should attempt performing keystore encryption related work, false if | 176 // we should attempt performing keystore encryption related work, false if |
| 184 // the experiment is not enabled. | 177 // the experiment is not enabled. |
| 185 bool keystore_encryption_enabled_; | 178 bool keystore_encryption_enabled_; |
| 186 | 179 |
| 187 DISALLOW_COPY_AND_ASSIGN(SyncSessionContext); | 180 DISALLOW_COPY_AND_ASSIGN(SyncSessionContext); |
| 188 }; | 181 }; |
| 189 | 182 |
| 190 // Installs a ConflictResolver to a given session context for the lifetime of | |
| 191 // the ScopedSessionContextConflictResolver. There should never be more than | |
| 192 // one ConflictResolver in the system, so it is an error to use this if the | |
| 193 // context already has a resolver. | |
| 194 class ScopedSessionContextConflictResolver { | |
| 195 public: | |
| 196 // Note: |context| and |resolver| should outlive |this|. | |
| 197 ScopedSessionContextConflictResolver(SyncSessionContext* context, | |
| 198 ConflictResolver* resolver) | |
| 199 : context_(context), resolver_(resolver) { | |
| 200 DCHECK(NULL == context->resolver_); | |
| 201 context->resolver_ = resolver; | |
| 202 } | |
| 203 ~ScopedSessionContextConflictResolver() { | |
| 204 context_->resolver_ = NULL; | |
| 205 } | |
| 206 | |
| 207 private: | |
| 208 SyncSessionContext* context_; | |
| 209 ConflictResolver* resolver_; | |
| 210 DISALLOW_COPY_AND_ASSIGN(ScopedSessionContextConflictResolver); | |
| 211 }; | |
| 212 | |
| 213 } // namespace sessions | 183 } // namespace sessions |
| 214 } // namespace syncer | 184 } // namespace syncer |
| 215 | 185 |
| 216 #endif // SYNC_SESSIONS_SYNC_SESSION_CONTEXT_H_ | 186 #endif // SYNC_SESSIONS_SYNC_SESSION_CONTEXT_H_ |
| OLD | NEW |