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

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

Issue 10454105: sync: Refactor per-datatype throttling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up and rebased Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
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/engine/throttled_data_type_tracker.h"
7 #include "sync/sessions/debug_info_getter.h" 8 #include "sync/sessions/debug_info_getter.h"
8 #include "sync/util/extensions_activity_monitor.h" 9 #include "sync/util/extensions_activity_monitor.h"
9 10
10 namespace browser_sync { 11 namespace browser_sync {
11 namespace sessions { 12 namespace sessions {
12 13
13 const unsigned int kMaxMessagesToRecord = 10; 14 const unsigned int kMaxMessagesToRecord = 10;
14 const unsigned int kMaxMessageSizeToRecord = 5 * 1024; 15 const unsigned int kMaxMessageSizeToRecord = 5 * 1024;
15 16
16 SyncSessionContext::SyncSessionContext( 17 SyncSessionContext::SyncSessionContext(
17 ServerConnectionManager* connection_manager, 18 ServerConnectionManager* connection_manager,
18 syncable::Directory* directory, 19 syncable::Directory* directory,
19 ModelSafeWorkerRegistrar* model_safe_worker_registrar, 20 ModelSafeWorkerRegistrar* model_safe_worker_registrar,
20 ExtensionsActivityMonitor* extensions_activity_monitor, 21 ExtensionsActivityMonitor* extensions_activity_monitor,
22 ThrottledDataTypeTracker* throttled_data_type_tracker,
21 const std::vector<SyncEngineEventListener*>& listeners, 23 const std::vector<SyncEngineEventListener*>& listeners,
22 DebugInfoGetter* debug_info_getter, 24 DebugInfoGetter* debug_info_getter,
23 browser_sync::TrafficRecorder* traffic_recorder) 25 browser_sync::TrafficRecorder* traffic_recorder)
24 : resolver_(NULL), 26 : resolver_(NULL),
25 connection_manager_(connection_manager), 27 connection_manager_(connection_manager),
26 directory_(directory), 28 directory_(directory),
27 registrar_(model_safe_worker_registrar), 29 registrar_(model_safe_worker_registrar),
28 extensions_activity_monitor_(extensions_activity_monitor), 30 extensions_activity_monitor_(extensions_activity_monitor),
29 notifications_enabled_(false), 31 notifications_enabled_(false),
30 max_commit_batch_size_(kDefaultMaxCommitBatchSize), 32 max_commit_batch_size_(kDefaultMaxCommitBatchSize),
33 throttled_data_type_tracker_(throttled_data_type_tracker),
31 debug_info_getter_(debug_info_getter), 34 debug_info_getter_(debug_info_getter),
32 traffic_recorder_(traffic_recorder) { 35 traffic_recorder_(traffic_recorder) {
33 std::vector<SyncEngineEventListener*>::const_iterator it; 36 std::vector<SyncEngineEventListener*>::const_iterator it;
34 for (it = listeners.begin(); it != listeners.end(); ++it) 37 for (it = listeners.begin(); it != listeners.end(); ++it)
35 listeners_.AddObserver(*it); 38 listeners_.AddObserver(*it);
36 } 39 }
37 40
38 SyncSessionContext::SyncSessionContext()
39 : connection_manager_(NULL),
40 directory_(NULL),
41 registrar_(NULL),
42 extensions_activity_monitor_(NULL),
43 debug_info_getter_(NULL),
44 traffic_recorder_(NULL) {
45 }
46
47 SyncSessionContext::~SyncSessionContext() { 41 SyncSessionContext::~SyncSessionContext() {
48 } 42 }
49 43
50 void SyncSessionContext::SetUnthrottleTime(syncable::ModelTypeSet types,
51 const base::TimeTicks& time) {
52 for (syncable::ModelTypeSet::Iterator it = types.First();
53 it.Good(); it.Inc()) {
54 unthrottle_times_[it.Get()] = time;
55 }
56 }
57
58 void SyncSessionContext::PruneUnthrottledTypes(const base::TimeTicks& time) {
59 UnthrottleTimes::iterator it = unthrottle_times_.begin();
60 while (it != unthrottle_times_.end()) {
61 if (it->second <= time) {
62 // Delete and increment the iterator.
63 UnthrottleTimes::iterator iterator_to_delete = it;
64 ++it;
65 unthrottle_times_.erase(iterator_to_delete);
66 } else {
67 // Just increment the iterator.
68 ++it;
69 }
70 }
71 }
72
73 // TODO(lipalani): Call this function and fill the return values in snapshot
74 // so it could be shown in the about:sync page.
75 syncable::ModelTypeSet SyncSessionContext::GetThrottledTypes() const {
76 syncable::ModelTypeSet types;
77 for (UnthrottleTimes::const_iterator it = unthrottle_times_.begin();
78 it != unthrottle_times_.end();
79 ++it) {
80 types.Put(it->first);
81 }
82 return types;
83 }
84
85 } // namespace sessions 44 } // namespace sessions
86 } // namespace browser_sync 45 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698