| Index: sync/sessions/model_type_registry.cc
|
| diff --git a/sync/sessions/model_type_registry.cc b/sync/sessions/model_type_registry.cc
|
| index 7ca68c74a41796fc1a073ad818d18a829f66f690..3bea48bc35044b7381f591071c459273cca34c1f 100644
|
| --- a/sync/sessions/model_type_registry.cc
|
| +++ b/sync/sessions/model_type_registry.cc
|
| @@ -19,6 +19,57 @@ namespace syncer {
|
|
|
| namespace {
|
|
|
| +class NonBlockingTypeProcessorWrapper
|
| + : public NonBlockingTypeProcessorInterface {
|
| + public:
|
| + NonBlockingTypeProcessorWrapper(
|
| + base::WeakPtr<NonBlockingTypeProcessor> processor,
|
| + scoped_refptr<base::SequencedTaskRunner> processor_task_runner);
|
| + virtual ~NonBlockingTypeProcessorWrapper();
|
| +
|
| + virtual void ReceiveCommitResponse(
|
| + const DataTypeState& type_state,
|
| + const CommitResponseDataList& response_list) OVERRIDE;
|
| + virtual void ReceiveUpdateResponse(
|
| + const DataTypeState& type_state,
|
| + const UpdateResponseDataList& response_list) OVERRIDE;
|
| +
|
| + private:
|
| + base::WeakPtr<NonBlockingTypeProcessor> processor_;
|
| + scoped_refptr<base::SequencedTaskRunner> processor_task_runner_;
|
| +};
|
| +
|
| +NonBlockingTypeProcessorWrapper::NonBlockingTypeProcessorWrapper(
|
| + base::WeakPtr<NonBlockingTypeProcessor> processor,
|
| + scoped_refptr<base::SequencedTaskRunner> processor_task_runner)
|
| + : processor_(processor), processor_task_runner_(processor_task_runner) {
|
| +}
|
| +
|
| +NonBlockingTypeProcessorWrapper::~NonBlockingTypeProcessorWrapper() {
|
| +}
|
| +
|
| +void NonBlockingTypeProcessorWrapper::ReceiveCommitResponse(
|
| + const DataTypeState& type_state,
|
| + const CommitResponseDataList& response_list) {
|
| + processor_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&NonBlockingTypeProcessor::OnCommitCompletion,
|
| + processor_,
|
| + type_state,
|
| + response_list));
|
| +}
|
| +
|
| +void NonBlockingTypeProcessorWrapper::ReceiveUpdateResponse(
|
| + const DataTypeState& type_state,
|
| + const UpdateResponseDataList& response_list) {
|
| + processor_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&NonBlockingTypeProcessor::OnUpdateReceived,
|
| + processor_,
|
| + type_state,
|
| + response_list));
|
| +}
|
| +
|
| class NonBlockingTypeProcessorCoreWrapper
|
| : public NonBlockingTypeProcessorCoreInterface {
|
| public:
|
| @@ -47,7 +98,7 @@ void NonBlockingTypeProcessorCoreWrapper::RequestCommits(
|
| const CommitRequestDataList& list) {
|
| sync_thread_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&NonBlockingTypeProcessorCore::RequestCommits, core_, list));
|
| + base::Bind(&NonBlockingTypeProcessorCore::EnqueueForCommit, core_, list));
|
| }
|
|
|
| } // namespace
|
| @@ -139,10 +190,11 @@ void ModelTypeRegistry::InitializeNonBlockingType(
|
| DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type);
|
|
|
| // Initialize CoreProcessor -> Processor communication channel.
|
| + scoped_ptr<NonBlockingTypeProcessorInterface> processor_interface(
|
| + new NonBlockingTypeProcessorWrapper(processor, type_task_runner));
|
| scoped_ptr<NonBlockingTypeProcessorCore> core(
|
| - new NonBlockingTypeProcessorCore(type, type_task_runner, processor));
|
| -
|
| - // TODO(rlarocque): DataTypeState should be forwarded to core here.
|
| + new NonBlockingTypeProcessorCore(
|
| + type, data_type_state, processor_interface.Pass()));
|
|
|
| // Initialize Processor -> CoreProcessor communication channel.
|
| scoped_ptr<NonBlockingTypeProcessorCoreInterface> core_interface(
|
|
|