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

Side by Side Diff: sync/sessions/sync_session_context.cc

Issue 72403003: sync: Per-type update application (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + fix typo Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/sessions/sync_session_context.h ('k') | sync/sync_core.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/sync_session_context.h" 5 #include "sync/sessions/sync_session_context.h"
6 6
7 #include "sync/sessions/debug_info_getter.h" 7 #include "sync/sessions/debug_info_getter.h"
8 #include "sync/util/extensions_activity.h" 8 #include "sync/util/extensions_activity.h"
9 9
10 namespace syncer { 10 namespace syncer {
(...skipping 17 matching lines...) Expand all
28 extensions_activity_(extensions_activity), 28 extensions_activity_(extensions_activity),
29 notifications_enabled_(false), 29 notifications_enabled_(false),
30 max_commit_batch_size_(kDefaultMaxCommitBatchSize), 30 max_commit_batch_size_(kDefaultMaxCommitBatchSize),
31 debug_info_getter_(debug_info_getter), 31 debug_info_getter_(debug_info_getter),
32 traffic_recorder_(traffic_recorder), 32 traffic_recorder_(traffic_recorder),
33 keystore_encryption_enabled_(keystore_encryption_enabled), 33 keystore_encryption_enabled_(keystore_encryption_enabled),
34 invalidator_client_id_(invalidator_client_id), 34 invalidator_client_id_(invalidator_client_id),
35 server_enabled_pre_commit_update_avoidance_(false), 35 server_enabled_pre_commit_update_avoidance_(false),
36 client_enabled_pre_commit_update_avoidance_( 36 client_enabled_pre_commit_update_avoidance_(
37 client_enabled_pre_commit_update_avoidance) { 37 client_enabled_pre_commit_update_avoidance) {
38 for (size_t i = 0u; i < workers.size(); ++i) 38 for (size_t i = 0u; i < workers.size(); ++i) {
39 workers_.push_back(workers[i]); 39 workers_.insert(
40 std::make_pair(workers[i]->GetModelSafeGroup(), workers[i]));
41 }
40 42
41 std::vector<SyncEngineEventListener*>::const_iterator it; 43 std::vector<SyncEngineEventListener*>::const_iterator it;
42 for (it = listeners.begin(); it != listeners.end(); ++it) 44 for (it = listeners.begin(); it != listeners.end(); ++it)
43 listeners_.AddObserver(*it); 45 listeners_.AddObserver(*it);
44 } 46 }
45 47
46 SyncSessionContext::~SyncSessionContext() { 48 SyncSessionContext::~SyncSessionContext() {
47 } 49 }
48 50
49 void SyncSessionContext::set_routing_info( 51 void SyncSessionContext::set_routing_info(
50 const ModelSafeRoutingInfo& routing_info) { 52 const ModelSafeRoutingInfo& routing_info) {
51 routing_info_ = routing_info; 53 enabled_types_ = GetRoutingInfoTypes(routing_info);
52 54
53 // TODO(rlarocque): This is not a good long-term solution. We must find a 55 // TODO(rlarocque): This is not a good long-term solution. We must find a
54 // better way to initialize the set of CommitContributors and UpdateHandlers. 56 // better way to initialize the set of CommitContributors and UpdateHandlers.
55 ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info); 57 STLDeleteValues<UpdateHandlerMap>(&update_handler_map_);
58 STLDeleteValues<CommitContributorMap>(&commit_contributor_map_);
59 for (ModelSafeRoutingInfo::const_iterator routing_iter = routing_info.begin();
60 routing_iter != routing_info.end(); ++routing_iter) {
61 ModelType type = routing_iter->first;
62 ModelSafeGroup group = routing_iter->second;
63 std::map<ModelSafeGroup, scoped_refptr<ModelSafeWorker> >::iterator
64 worker_it = workers_.find(group);
65 DCHECK(worker_it != workers_.end());
66 scoped_refptr<ModelSafeWorker> worker = worker_it->second;
56 67
57 STLDeleteValues<CommitContributorMap>(&commit_contributor_map_); 68 SyncDirectoryUpdateHandler* handler =
58 for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) { 69 new SyncDirectoryUpdateHandler(directory(), type, worker);
70 update_handler_map_.insert(std::make_pair(type, handler));
71
59 SyncDirectoryCommitContributor* contributor = 72 SyncDirectoryCommitContributor* contributor =
60 new SyncDirectoryCommitContributor(directory(), it.Get()); 73 new SyncDirectoryCommitContributor(directory(), type);
61 commit_contributor_map_.insert(std::make_pair(it.Get(), contributor)); 74 commit_contributor_map_.insert(std::make_pair(type, contributor));
62 }
63
64 STLDeleteValues<UpdateHandlerMap>(&update_handler_map_);
65 for (ModelTypeSet::Iterator it = enabled_types.First(); it.Good(); it.Inc()) {
66 SyncDirectoryUpdateHandler* handler =
67 new SyncDirectoryUpdateHandler(directory(), it.Get());
68 update_handler_map_.insert(std::make_pair(it.Get(), handler));
69 } 75 }
70 } 76 }
71 77
72 } // namespace sessions 78 } // namespace sessions
73 } // namespace syncer 79 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/sessions/sync_session_context.h ('k') | sync/sync_core.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698