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

Unified Diff: sync/sessions/model_type_registry.cc

Issue 280983002: Implement sync in the NonBlockingTypeProcessor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add some comments Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698