| OLD | NEW |
| 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/observer_list.h" | 8 #include "base/observer_list.h" |
| 9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
| 10 #include "sync/engine/commit_queue.h" |
| 10 #include "sync/engine/directory_commit_contributor.h" | 11 #include "sync/engine/directory_commit_contributor.h" |
| 11 #include "sync/engine/directory_update_handler.h" | 12 #include "sync/engine/directory_update_handler.h" |
| 12 #include "sync/engine/model_type_sync_proxy.h" | 13 #include "sync/engine/model_type_processor.h" |
| 13 #include "sync/engine/model_type_sync_proxy_impl.h" | 14 #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" | 15 #include "sync/engine/model_type_sync_worker_impl.h" |
| 16 #include "sync/internal_api/public/non_blocking_sync_common.h" | 16 #include "sync/internal_api/public/non_blocking_sync_common.h" |
| 17 #include "sync/sessions/directory_type_debug_info_emitter.h" | 17 #include "sync/sessions/directory_type_debug_info_emitter.h" |
| 18 #include "sync/util/cryptographer.h" | 18 #include "sync/util/cryptographer.h" |
| 19 | 19 |
| 20 namespace syncer { | 20 namespace syncer { |
| 21 | 21 |
| 22 namespace { | 22 namespace { |
| 23 | 23 |
| 24 class ModelTypeSyncProxyWrapper : public syncer_v2::ModelTypeSyncProxy { | 24 class ModelTypeSyncProxyWrapper : public syncer_v2::ModelTypeProcessor { |
| 25 public: | 25 public: |
| 26 ModelTypeSyncProxyWrapper( | 26 ModelTypeSyncProxyWrapper( |
| 27 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy, | 27 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy, |
| 28 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner); | 28 const scoped_refptr<base::SequencedTaskRunner>& processor_task_runner); |
| 29 ~ModelTypeSyncProxyWrapper() override; | 29 ~ModelTypeSyncProxyWrapper() override; |
| 30 | 30 |
| 31 void OnCommitCompleted( | 31 void OnCommitCompleted( |
| 32 const syncer_v2::DataTypeState& type_state, | 32 const syncer_v2::DataTypeState& type_state, |
| 33 const syncer_v2::CommitResponseDataList& response_list) override; | 33 const syncer_v2::CommitResponseDataList& response_list) override; |
| 34 void OnUpdateReceived( | 34 void OnUpdateReceived( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 61 void ModelTypeSyncProxyWrapper::OnUpdateReceived( | 61 void ModelTypeSyncProxyWrapper::OnUpdateReceived( |
| 62 const syncer_v2::DataTypeState& type_state, | 62 const syncer_v2::DataTypeState& type_state, |
| 63 const syncer_v2::UpdateResponseDataList& response_list, | 63 const syncer_v2::UpdateResponseDataList& response_list, |
| 64 const syncer_v2::UpdateResponseDataList& pending_updates) { | 64 const syncer_v2::UpdateResponseDataList& pending_updates) { |
| 65 processor_task_runner_->PostTask( | 65 processor_task_runner_->PostTask( |
| 66 FROM_HERE, | 66 FROM_HERE, |
| 67 base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnUpdateReceived, | 67 base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnUpdateReceived, |
| 68 processor_, type_state, response_list, pending_updates)); | 68 processor_, type_state, response_list, pending_updates)); |
| 69 } | 69 } |
| 70 | 70 |
| 71 class ModelTypeSyncWorkerWrapper : public syncer_v2::ModelTypeSyncWorker { | 71 class ModelTypeSyncWorkerWrapper : public syncer_v2::CommitQueue { |
| 72 public: | 72 public: |
| 73 ModelTypeSyncWorkerWrapper( | 73 ModelTypeSyncWorkerWrapper( |
| 74 const base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl>& worker, | 74 const base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl>& worker, |
| 75 const scoped_refptr<base::SequencedTaskRunner>& sync_thread); | 75 const scoped_refptr<base::SequencedTaskRunner>& sync_thread); |
| 76 ~ModelTypeSyncWorkerWrapper() override; | 76 ~ModelTypeSyncWorkerWrapper() override; |
| 77 | 77 |
| 78 void EnqueueForCommit(const syncer_v2::CommitRequestDataList& list) override; | 78 void EnqueueForCommit(const syncer_v2::CommitRequestDataList& list) override; |
| 79 | 79 |
| 80 private: | 80 private: |
| 81 base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl> worker_; | 81 base::WeakPtr<syncer_v2::ModelTypeSyncWorkerImpl> worker_; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 | 183 |
| 184 void ModelTypeRegistry::ConnectSyncTypeToWorker( | 184 void ModelTypeRegistry::ConnectSyncTypeToWorker( |
| 185 ModelType type, | 185 ModelType type, |
| 186 const syncer_v2::DataTypeState& data_type_state, | 186 const syncer_v2::DataTypeState& data_type_state, |
| 187 const syncer_v2::UpdateResponseDataList& saved_pending_updates, | 187 const syncer_v2::UpdateResponseDataList& saved_pending_updates, |
| 188 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner, | 188 const scoped_refptr<base::SequencedTaskRunner>& type_task_runner, |
| 189 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy_impl) { | 189 const base::WeakPtr<syncer_v2::ModelTypeSyncProxyImpl>& proxy_impl) { |
| 190 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); | 190 DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); |
| 191 | 191 |
| 192 // Initialize Worker -> Proxy communication channel. | 192 // Initialize Worker -> Proxy communication channel. |
| 193 scoped_ptr<syncer_v2::ModelTypeSyncProxy> proxy( | 193 scoped_ptr<syncer_v2::ModelTypeProcessor> proxy( |
| 194 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner)); | 194 new ModelTypeSyncProxyWrapper(proxy_impl, type_task_runner)); |
| 195 scoped_ptr<Cryptographer> cryptographer_copy; | 195 scoped_ptr<Cryptographer> cryptographer_copy; |
| 196 if (encrypted_types_.Has(type)) | 196 if (encrypted_types_.Has(type)) |
| 197 cryptographer_copy.reset(new Cryptographer(*cryptographer_)); | 197 cryptographer_copy.reset(new Cryptographer(*cryptographer_)); |
| 198 | 198 |
| 199 scoped_ptr<syncer_v2::ModelTypeSyncWorkerImpl> worker( | 199 scoped_ptr<syncer_v2::ModelTypeSyncWorkerImpl> worker( |
| 200 new syncer_v2::ModelTypeSyncWorkerImpl( | 200 new syncer_v2::ModelTypeSyncWorkerImpl( |
| 201 type, data_type_state, saved_pending_updates, | 201 type, data_type_state, saved_pending_updates, |
| 202 cryptographer_copy.Pass(), nudge_handler_, proxy.Pass())); | 202 cryptographer_copy.Pass(), nudge_handler_, proxy.Pass())); |
| 203 | 203 |
| 204 // Initialize Proxy -> Worker communication channel. | 204 // Initialize Proxy -> Worker communication channel. |
| 205 scoped_ptr<syncer_v2::ModelTypeSyncWorker> wrapped_worker( | 205 scoped_ptr<syncer_v2::CommitQueue> wrapped_worker( |
| 206 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(), | 206 new ModelTypeSyncWorkerWrapper(worker->AsWeakPtr(), |
| 207 scoped_refptr<base::SequencedTaskRunner>( | 207 scoped_refptr<base::SequencedTaskRunner>( |
| 208 base::ThreadTaskRunnerHandle::Get()))); | 208 base::ThreadTaskRunnerHandle::Get()))); |
| 209 type_task_runner->PostTask( | 209 type_task_runner->PostTask( |
| 210 FROM_HERE, base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnConnect, | 210 FROM_HERE, base::Bind(&syncer_v2::ModelTypeSyncProxyImpl::OnConnect, |
| 211 proxy_impl, base::Passed(&wrapped_worker))); | 211 proxy_impl, base::Passed(&wrapped_worker))); |
| 212 | 212 |
| 213 DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); | 213 DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); |
| 214 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); | 214 DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); |
| 215 | 215 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 ModelTypeSet enabled_off_thread_types; | 347 ModelTypeSet enabled_off_thread_types; |
| 348 for (ScopedVector<syncer_v2::ModelTypeSyncWorkerImpl>::const_iterator it = | 348 for (ScopedVector<syncer_v2::ModelTypeSyncWorkerImpl>::const_iterator it = |
| 349 model_type_sync_workers_.begin(); | 349 model_type_sync_workers_.begin(); |
| 350 it != model_type_sync_workers_.end(); ++it) { | 350 it != model_type_sync_workers_.end(); ++it) { |
| 351 enabled_off_thread_types.Put((*it)->GetModelType()); | 351 enabled_off_thread_types.Put((*it)->GetModelType()); |
| 352 } | 352 } |
| 353 return enabled_off_thread_types; | 353 return enabled_off_thread_types; |
| 354 } | 354 } |
| 355 | 355 |
| 356 } // namespace syncer | 356 } // namespace syncer |
| OLD | NEW |