Index: sync/sessions/sync_session_context.cc |
diff --git a/sync/sessions/sync_session_context.cc b/sync/sessions/sync_session_context.cc |
index aa5dfa54044d616eab9c216227762654164952eb..b388b58710d8a81c301cc35585d4b799e80c9b77 100644 |
--- a/sync/sessions/sync_session_context.cc |
+++ b/sync/sessions/sync_session_context.cc |
@@ -4,6 +4,8 @@ |
#include "sync/sessions/sync_session_context.h" |
+#include "sync/engine/committer_list.h" |
+#include "sync/engine/updater_list.h" |
#include "sync/sessions/debug_info_getter.h" |
#include "sync/util/extensions_activity.h" |
@@ -13,33 +15,27 @@ namespace sessions { |
SyncSessionContext::SyncSessionContext( |
ServerConnectionManager* connection_manager, |
syncable::Directory* directory, |
- const std::vector<ModelSafeWorker*>& workers, |
ExtensionsActivity* extensions_activity, |
const std::vector<SyncEngineEventListener*>& listeners, |
DebugInfoGetter* debug_info_getter, |
TrafficRecorder* traffic_recorder, |
+ ModelTypeRegistry* model_type_registry, |
bool keystore_encryption_enabled, |
bool client_enabled_pre_commit_update_avoidance, |
const std::string& invalidator_client_id) |
: connection_manager_(connection_manager), |
directory_(directory), |
- update_handler_deleter_(&update_handler_map_), |
- commit_contributor_deleter_(&commit_contributor_map_), |
extensions_activity_(extensions_activity), |
notifications_enabled_(false), |
max_commit_batch_size_(kDefaultMaxCommitBatchSize), |
debug_info_getter_(debug_info_getter), |
traffic_recorder_(traffic_recorder), |
+ model_type_registry_(model_type_registry), |
keystore_encryption_enabled_(keystore_encryption_enabled), |
invalidator_client_id_(invalidator_client_id), |
server_enabled_pre_commit_update_avoidance_(false), |
client_enabled_pre_commit_update_avoidance_( |
client_enabled_pre_commit_update_avoidance) { |
- for (size_t i = 0u; i < workers.size(); ++i) { |
- workers_.insert( |
- std::make_pair(workers[i]->GetModelSafeGroup(), workers[i])); |
- } |
- |
std::vector<SyncEngineEventListener*>::const_iterator it; |
for (it = listeners.begin(); it != listeners.end(); ++it) |
listeners_.AddObserver(*it); |
@@ -48,31 +44,22 @@ SyncSessionContext::SyncSessionContext( |
SyncSessionContext::~SyncSessionContext() { |
} |
-void SyncSessionContext::set_routing_info( |
+void SyncSessionContext::SetRoutingInfo( |
const ModelSafeRoutingInfo& routing_info) { |
enabled_types_ = GetRoutingInfoTypes(routing_info); |
+ model_type_registry_->SetEnabledDirectoryTypes(routing_info); |
+ updater_list_.reset( |
+ new UpdaterList(model_type_registry_->update_handler_map())); |
+ committer_list_.reset( |
+ new CommitterList(model_type_registry_->commit_contributor_map())); |
+} |
- // TODO(rlarocque): This is not a good long-term solution. We must find a |
- // better way to initialize the set of CommitContributors and UpdateHandlers. |
- STLDeleteValues<UpdateHandlerMap>(&update_handler_map_); |
- STLDeleteValues<CommitContributorMap>(&commit_contributor_map_); |
- for (ModelSafeRoutingInfo::const_iterator routing_iter = routing_info.begin(); |
- routing_iter != routing_info.end(); ++routing_iter) { |
- ModelType type = routing_iter->first; |
- ModelSafeGroup group = routing_iter->second; |
- std::map<ModelSafeGroup, scoped_refptr<ModelSafeWorker> >::iterator |
- worker_it = workers_.find(group); |
- DCHECK(worker_it != workers_.end()); |
- scoped_refptr<ModelSafeWorker> worker = worker_it->second; |
- |
- SyncDirectoryUpdateHandler* handler = |
- new SyncDirectoryUpdateHandler(directory(), type, worker); |
- update_handler_map_.insert(std::make_pair(type, handler)); |
+UpdaterList* SyncSessionContext::GetUpdaterList() { |
+ return updater_list_.get(); |
+} |
- SyncDirectoryCommitContributor* contributor = |
- new SyncDirectoryCommitContributor(directory(), type); |
- commit_contributor_map_.insert(std::make_pair(type, contributor)); |
- } |
+CommitterList* SyncSessionContext::GetCommitterList() { |
+ return committer_list_.get(); |
} |
} // namespace sessions |