Index: sync/sessions/model_type_registry.cc |
diff --git a/sync/sessions/model_type_registry.cc b/sync/sessions/model_type_registry.cc |
index 9cc68694c4bfbc906f3986318887913e73531bd6..3e4c7ac06e447f1e0056a9a7dcbe617031f17b09 100644 |
--- a/sync/sessions/model_type_registry.cc |
+++ b/sync/sessions/model_type_registry.cc |
@@ -9,12 +9,49 @@ |
#include "base/observer_list.h" |
#include "sync/engine/directory_commit_contributor.h" |
#include "sync/engine/directory_update_handler.h" |
+#include "sync/engine/non_blocking_sync_common.h" |
#include "sync/engine/non_blocking_type_processor.h" |
#include "sync/engine/non_blocking_type_processor_core.h" |
+#include "sync/engine/non_blocking_type_processor_core_interface.h" |
#include "sync/sessions/directory_type_debug_info_emitter.h" |
namespace syncer { |
+namespace { |
+ |
+class NonBlockingTypeProcessorCoreWrapper |
Nicolas Zea
2014/05/15 21:58:55
Is this that much better than having NonBlockingTy
rlarocque
2014/05/15 22:28:54
The most practical reason is that it allows me to
Nicolas Zea
2014/05/19 23:54:15
How about changing the naming then. It seems that
rlarocque
2014/05/20 01:39:47
Right. Let's discuss naming tomorrow. There will
|
+ : public NonBlockingTypeProcessorCoreInterface { |
+ public: |
+ NonBlockingTypeProcessorCoreWrapper( |
+ base::WeakPtr<NonBlockingTypeProcessorCore> core, |
+ scoped_refptr<base::SequencedTaskRunner> sync_thread); |
+ virtual ~NonBlockingTypeProcessorCoreWrapper(); |
+ |
+ virtual void RequestCommits(const CommitRequestDataList& list) OVERRIDE; |
+ |
+ private: |
+ base::WeakPtr<NonBlockingTypeProcessorCore> core_; |
+ scoped_refptr<base::SequencedTaskRunner> sync_thread_; |
+}; |
+ |
+NonBlockingTypeProcessorCoreWrapper::NonBlockingTypeProcessorCoreWrapper( |
+ base::WeakPtr<NonBlockingTypeProcessorCore> core, |
+ scoped_refptr<base::SequencedTaskRunner> sync_thread) |
+ : core_(core), sync_thread_(sync_thread) { |
+} |
+ |
+NonBlockingTypeProcessorCoreWrapper::~NonBlockingTypeProcessorCoreWrapper() { |
+} |
+ |
+void NonBlockingTypeProcessorCoreWrapper::RequestCommits( |
+ const CommitRequestDataList& list) { |
+ sync_thread_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&NonBlockingTypeProcessorCore::RequestCommits, core_, list)); |
+} |
+ |
+} // namespace |
+ |
ModelTypeRegistry::ModelTypeRegistry() : directory_(NULL) {} |
ModelTypeRegistry::ModelTypeRegistry( |
@@ -96,6 +133,7 @@ void ModelTypeRegistry::SetEnabledDirectoryTypes( |
void ModelTypeRegistry::InitializeNonBlockingType( |
ModelType type, |
+ const DataTypeState& data_type_state, |
scoped_refptr<base::SequencedTaskRunner> type_task_runner, |
base::WeakPtr<NonBlockingTypeProcessor> processor) { |
DVLOG(1) << "Enabling an off-thread sync type: " << ModelTypeToString(type); |
@@ -104,14 +142,19 @@ void ModelTypeRegistry::InitializeNonBlockingType( |
scoped_ptr<NonBlockingTypeProcessorCore> core( |
new NonBlockingTypeProcessorCore(type, type_task_runner, processor)); |
+ // TODO(rlarocque): DataTypeState should be forwarded to core here. |
+ (void)data_type_state; |
Nicolas Zea
2014/05/19 23:54:15
what is this doing?
rlarocque
2014/05/20 01:39:47
Silences an unused variable warning. I seem to re
Nicolas Zea
2014/05/20 21:51:08
I don't think the warning happens for parameters,
rlarocque
2014/05/20 22:29:21
Updated in the latest patch. Let's see if the try
|
+ |
// Initialize Processor -> CoreProcessor communication channel. |
- type_task_runner->PostTask( |
- FROM_HERE, |
- base::Bind(&NonBlockingTypeProcessor::OnConnect, |
- processor, |
- core->AsWeakPtr(), |
- scoped_refptr<base::SequencedTaskRunner>( |
- base::MessageLoopProxy::current()))); |
+ scoped_ptr<NonBlockingTypeProcessorCoreInterface> core_interface( |
+ new NonBlockingTypeProcessorCoreWrapper( |
+ core->AsWeakPtr(), |
+ scoped_refptr<base::SequencedTaskRunner>( |
+ base::MessageLoopProxy::current()))); |
+ type_task_runner->PostTask(FROM_HERE, |
+ base::Bind(&NonBlockingTypeProcessor::OnConnect, |
+ processor, |
+ base::Passed(&core_interface))); |
DCHECK(update_handler_map_.find(type) == update_handler_map_.end()); |
DCHECK(commit_contributor_map_.find(type) == commit_contributor_map_.end()); |