Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(698)

Side by Side Diff: sync/sessions/model_type_registry.cc

Issue 351523003: sync: Mass rename of non-blocking sync classes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: const ref some smart pointers Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sessions/model_type_registry_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "sync/sessions/model_type_registry.h" 5 #include "sync/sessions/model_type_registry.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "base/observer_list.h" 9 #include "base/observer_list.h"
10 #include "sync/engine/directory_commit_contributor.h" 10 #include "sync/engine/directory_commit_contributor.h"
11 #include "sync/engine/directory_update_handler.h" 11 #include "sync/engine/directory_update_handler.h"
12 #include "sync/engine/model_type_sync_proxy.h"
13 #include "sync/engine/model_type_sync_proxy_impl.h"
14 #include "sync/engine/model_type_sync_worker.h"
15 #include "sync/engine/model_type_sync_worker_impl.h"
12 #include "sync/engine/non_blocking_sync_common.h" 16 #include "sync/engine/non_blocking_sync_common.h"
13 #include "sync/engine/non_blocking_type_processor.h"
14 #include "sync/engine/non_blocking_type_processor_core.h"
15 #include "sync/engine/non_blocking_type_processor_core_interface.h"
16 #include "sync/engine/non_blocking_type_processor_interface.h"
17 #include "sync/sessions/directory_type_debug_info_emitter.h" 17 #include "sync/sessions/directory_type_debug_info_emitter.h"
18 18
19 namespace syncer { 19 namespace syncer {
20 20
21 namespace { 21 namespace {
22 22
23 class NonBlockingTypeProcessorWrapper 23 class ModelTypeSyncProxyWrapper : public ModelTypeSyncProxy {
24 : public NonBlockingTypeProcessorInterface {
25 public: 24 public:
26 NonBlockingTypeProcessorWrapper( 25 ModelTypeSyncProxyWrapper(
27 base::WeakPtr<NonBlockingTypeProcessor> processor, 26 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy,
28 scoped_refptr<base::SequencedTaskRunner> processor_task_runner); 27 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner);
29 virtual ~NonBlockingTypeProcessorWrapper(); 28 virtual ~ModelTypeSyncProxyWrapper();
30 29
31 virtual void ReceiveCommitResponse( 30 virtual void ReceiveCommitResponse(
32 const DataTypeState& type_state, 31 const DataTypeState& type_state,
33 const CommitResponseDataList& response_list) OVERRIDE; 32 const CommitResponseDataList& response_list) OVERRIDE;
34 virtual void ReceiveUpdateResponse( 33 virtual void ReceiveUpdateResponse(
35 const DataTypeState& type_state, 34 const DataTypeState& type_state,
36 const UpdateResponseDataList& response_list) OVERRIDE; 35 const UpdateResponseDataList& response_list) OVERRIDE;
37 36
38 private: 37 private:
39 base::WeakPtr<NonBlockingTypeProcessor> processor_; 38 base::WeakPtr<ModelTypeSyncProxyImpl> processor_;
40 scoped_refptr<base::SequencedTaskRunner> processor_task_runner_; 39 scoped_refptr<base::SequencedTaskRunner> processor_task_runner_;
41 }; 40 };
42 41
43 NonBlockingTypeProcessorWrapper::NonBlockingTypeProcessorWrapper( 42 ModelTypeSyncProxyWrapper::ModelTypeSyncProxyWrapper(
44 base::WeakPtr<NonBlockingTypeProcessor> processor, 43 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy,
45 scoped_refptr<base::SequencedTaskRunner> processor_task_runner) 44 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner)
46 : processor_(processor), processor_task_runner_(processor_task_runner) { 45 : processor_(proxy), processor_task_runner_(processor_task_runner) {
47 } 46 }
48 47
49 NonBlockingTypeProcessorWrapper::~NonBlockingTypeProcessorWrapper() { 48 ModelTypeSyncProxyWrapper::~ModelTypeSyncProxyWrapper() {
50 } 49 }
51 50
52 void NonBlockingTypeProcessorWrapper::ReceiveCommitResponse( 51 void ModelTypeSyncProxyWrapper::ReceiveCommitResponse(
53 const DataTypeState& type_state, 52 const DataTypeState& type_state,
54 const CommitResponseDataList& response_list) { 53 const CommitResponseDataList& response_list) {
55 processor_task_runner_->PostTask( 54 processor_task_runner_->PostTask(
56 FROM_HERE, 55 FROM_HERE,
57 base::Bind(&NonBlockingTypeProcessor::OnCommitCompletion, 56 base::Bind(&ModelTypeSyncProxyImpl::OnCommitCompletion,
58 processor_, 57 processor_,
59 type_state, 58 type_state,
60 response_list)); 59 response_list));
61 } 60 }
62 61
63 void NonBlockingTypeProcessorWrapper::ReceiveUpdateResponse( 62 void ModelTypeSyncProxyWrapper::ReceiveUpdateResponse(
64 const DataTypeState& type_state, 63 const DataTypeState& type_state,
65 const UpdateResponseDataList& response_list) { 64 const UpdateResponseDataList& response_list) {
66 processor_task_runner_->PostTask( 65 processor_task_runner_->PostTask(
67 FROM_HERE, 66 FROM_HERE,
68 base::Bind(&NonBlockingTypeProcessor::OnUpdateReceived, 67 base::Bind(&ModelTypeSyncProxyImpl::OnUpdateReceived,
69 processor_, 68 processor_,
70 type_state, 69 type_state,
71 response_list)); 70 response_list));
72 } 71 }
73 72
74 class NonBlockingTypeProcessorCoreWrapper 73 class ModelTypeSyncWorkerWrapper : public ModelTypeSyncWorker {
75 : public NonBlockingTypeProcessorCoreInterface {
76 public: 74 public:
77 NonBlockingTypeProcessorCoreWrapper( 75 ModelTypeSyncWorkerWrapper(
78 base::WeakPtr<NonBlockingTypeProcessorCore> core, 76 const base::WeakPtr<ModelTypeSyncWorkerImpl>& worker,
79 scoped_refptr<base::SequencedTaskRunner> sync_thread); 77 const scoped_refptr<base::SequencedTaskRunner>& sync_thread);
80 virtual ~NonBlockingTypeProcessorCoreWrapper(); 78 virtual ~ModelTypeSyncWorkerWrapper();
81 79
82 virtual void RequestCommits(const CommitRequestDataList& list) OVERRIDE; 80 virtual void RequestCommits(const CommitRequestDataList& list) OVERRIDE;
83 81
84 private: 82 private:
85 base::WeakPtr<NonBlockingTypeProcessorCore> core_; 83 base::WeakPtr<ModelTypeSyncWorkerImpl> worker_;
86 scoped_refptr<base::SequencedTaskRunner> sync_thread_; 84 scoped_refptr<base::SequencedTaskRunner> sync_thread_;
87 }; 85 };
88 86
89 NonBlockingTypeProcessorCoreWrapper::NonBlockingTypeProcessorCoreWrapper( 87 ModelTypeSyncWorkerWrapper::ModelTypeSyncWorkerWrapper(
90 base::WeakPtr<NonBlockingTypeProcessorCore> core, 88 const base::WeakPtr<ModelTypeSyncWorkerImpl>& worker,
91 scoped_refptr<base::SequencedTaskRunner> sync_thread) 89 const scoped_refptr<base::SequencedTaskRunner>& sync_thread)
92 : core_(core), sync_thread_(sync_thread) { 90 : worker_(worker), sync_thread_(sync_thread) {
93 } 91 }
94 92
95 NonBlockingTypeProcessorCoreWrapper::~NonBlockingTypeProcessorCoreWrapper() { 93 ModelTypeSyncWorkerWrapper::~ModelTypeSyncWorkerWrapper() {
96 } 94 }
97 95
98 void NonBlockingTypeProcessorCoreWrapper::RequestCommits( 96 void ModelTypeSyncWorkerWrapper::RequestCommits(
99 const CommitRequestDataList& list) { 97 const CommitRequestDataList& list) {
100 sync_thread_->PostTask( 98 sync_thread_->PostTask(
101 FROM_HERE, 99 FROM_HERE,
102 base::Bind(&NonBlockingTypeProcessorCore::EnqueueForCommit, core_, list)); 100 base::Bind(&ModelTypeSyncWorkerImpl::EnqueueForCommit, worker_, list));
103 } 101 }
104 102
105 } // namespace 103 } // namespace
106 104
107 ModelTypeRegistry::ModelTypeRegistry() : directory_(NULL) {} 105 ModelTypeRegistry::ModelTypeRegistry() : directory_(NULL) {}
108 106
109 ModelTypeRegistry::ModelTypeRegistry( 107 ModelTypeRegistry::ModelTypeRegistry(
110 const std::vector<scoped_refptr<ModelSafeWorker> >& workers, 108 const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
111 syncable::Directory* directory) 109 syncable::Directory* directory)
112 : directory_(directory) { 110 : directory_(directory) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 177 }
180 178
181 enabled_directory_types_ = GetRoutingInfoTypes(routing_info); 179 enabled_directory_types_ = GetRoutingInfoTypes(routing_info);
182 DCHECK(Intersection(GetEnabledDirectoryTypes(), 180 DCHECK(Intersection(GetEnabledDirectoryTypes(),
183 GetEnabledNonBlockingTypes()).Empty()); 181 GetEnabledNonBlockingTypes()).Empty());
184 } 182 }
185 183
186 void ModelTypeRegistry::InitializeNonBlockingType( 184 void ModelTypeRegistry::InitializeNonBlockingType(
187 ModelType type, 185 ModelType type,
188 const DataTypeState& data_type_state, 186 const DataTypeState& data_type_state,
189 scoped_refptr<base::SequencedTaskRunner> type_task_runner, 187 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner,
190 base::WeakPtr<NonBlockingTypeProcessor> processor) { 188 const base::WeakPtr<ModelTypeSyncProxyImpl>& proxy_impl) {
191 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); 189 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type);
192 190
193 // Initialize CoreProcessor -> Processor communication channel. 191 // Initialize Worker -> Proxy communication channel.
194 scoped_ptr<NonBlockingTypeProcessorInterface> processor_interface( 192 scoped_ptr<ModelTypeSyncProxy> proxy(
195 new NonBlockingTypeProcessorWrapper(processor, type_task_runner)); 193 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner));
196 scoped_ptr<NonBlockingTypeProcessorCore> core( 194 scoped_ptr<ModelTypeSyncWorkerImpl> worker(
197 new NonBlockingTypeProcessorCore( 195 new ModelTypeSyncWorkerImpl(type, data_type_state, proxy.Pass()));
198 type, data_type_state, processor_interface.Pass()));
199 196
200 // Initialize Processor -> CoreProcessor communication channel. 197 // Initialize Proxy -> Worker communication channel.
201 scoped_ptr<NonBlockingTypeProcessorCoreInterface> core_interface( 198 scoped_ptr<ModelTypeSyncWorker> wrapped_worker(
202 new NonBlockingTypeProcessorCoreWrapper( 199 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(),
203 core->AsWeakPtr(), 200 scoped_refptr<base::SequencedTaskRunner>(
204 scoped_refptr<base::SequencedTaskRunner>( 201 base::MessageLoopProxy::current())));
205 base::MessageLoopProxy::current())));
206 type_task_runner->PostTask(FROM_HERE, 202 type_task_runner->PostTask(FROM_HERE,
207 base::Bind(&NonBlockingTypeProcessor::OnConnect, 203 base::Bind(&ModelTypeSyncProxyImpl::OnConnect,
208 processor, 204 proxy_impl,
209 base::Passed(&core_interface))); 205 base::Passed(&wrapped_worker)));
210 206
211 DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); 207 DCHECK(update_handler_map_.find(type) == update_handler_map_.end());
212 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); 208 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end());
213 209
214 update_handler_map_.insert(std::make_pair(type, core.get())); 210 update_handler_map_.insert(std::make_pair(type, worker.get()));
215 commit_contributor_map_.insert(std::make_pair(type, core.get())); 211 commit_contributor_map_.insert(std::make_pair(type, worker.get()));
216 212
217 // The container takes ownership. 213 // The container takes ownership.
218 non_blocking_type_processor_cores_.push_back(core.release()); 214 model_type_sync_workers_.push_back(worker.release());
219 215
220 DCHECK(Intersection(GetEnabledDirectoryTypes(), 216 DCHECK(Intersection(GetEnabledDirectoryTypes(),
221 GetEnabledNonBlockingTypes()).Empty()); 217 GetEnabledNonBlockingTypes()).Empty());
222 } 218 }
223 219
224 void ModelTypeRegistry::RemoveNonBlockingType(ModelType type) { 220 void ModelTypeRegistry::RemoveNonBlockingType(ModelType type) {
225 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type); 221 DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type);
226 DCHECK(update_handler_map_.find(type) != update_handler_map_.end()); 222 DCHECK(update_handler_map_.find(type) != update_handler_map_.end());
227 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end()); 223 DCHECK(commit_contributor_map_.find(type) != commit_contributor_map_.end());
228 224
229 size_t updaters_erased = update_handler_map_.erase(type); 225 size_t updaters_erased = update_handler_map_.erase(type);
230 size_t committers_erased = commit_contributor_map_.erase(type); 226 size_t committers_erased = commit_contributor_map_.erase(type);
231 227
232 DCHECK_EQ(1U, updaters_erased); 228 DCHECK_EQ(1U, updaters_erased);
233 DCHECK_EQ(1U, committers_erased); 229 DCHECK_EQ(1U, committers_erased);
234 230
235 // Remove from the ScopedVector, deleting the core in the process. 231 // Remove from the ScopedVector, deleting the worker in the process.
236 for (ScopedVector<NonBlockingTypeProcessorCore>::iterator it = 232 for (ScopedVector<ModelTypeSyncWorkerImpl>::iterator it =
237 non_blocking_type_processor_cores_.begin(); 233 model_type_sync_workers_.begin();
238 it != non_blocking_type_processor_cores_.end(); ++it) { 234 it != model_type_sync_workers_.end();
235 ++it) {
239 if ((*it)->GetModelType() == type) { 236 if ((*it)->GetModelType() == type) {
240 non_blocking_type_processor_cores_.erase(it); 237 model_type_sync_workers_.erase(it);
241 break; 238 break;
242 } 239 }
243 } 240 }
244 } 241 }
245 242
246 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const { 243 ModelTypeSet ModelTypeRegistry::GetEnabledTypes() const {
247 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes()); 244 return Union(GetEnabledDirectoryTypes(), GetEnabledNonBlockingTypes());
248 } 245 }
249 246
250 UpdateHandlerMap* ModelTypeRegistry::update_handler_map() { 247 UpdateHandlerMap* ModelTypeRegistry::update_handler_map() {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 it->second->EmitStatusCountersUpdate(); 282 it->second->EmitStatusCountersUpdate();
286 } 283 }
287 } 284 }
288 285
289 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { 286 ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const {
290 return enabled_directory_types_; 287 return enabled_directory_types_;
291 } 288 }
292 289
293 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const { 290 ModelTypeSet ModelTypeRegistry::GetEnabledNonBlockingTypes() const {
294 ModelTypeSet enabled_off_thread_types; 291 ModelTypeSet enabled_off_thread_types;
295 for (ScopedVector<NonBlockingTypeProcessorCore>::const_iterator it = 292 for (ScopedVector<ModelTypeSyncWorkerImpl>::const_iterator it =
296 non_blocking_type_processor_cores_.begin(); 293 model_type_sync_workers_.begin();
297 it != non_blocking_type_processor_cores_.end(); ++it) { 294 it != model_type_sync_workers_.end();
295 ++it) {
298 enabled_off_thread_types.Put((*it)->GetModelType()); 296 enabled_off_thread_types.Put((*it)->GetModelType());
299 } 297 }
300 return enabled_off_thread_types; 298 return enabled_off_thread_types;
301 } 299 }
302 300
303 } // namespace syncer 301 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sessions/model_type_registry.h ('k') | sync/sessions/model_type_registry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698