OLD | NEW |
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 const ModelSafeRoutingInfo& model_safe_routing_info, | 20 const ModelSafeRoutingInfo& model_safe_routing_info, |
20 const std::vector<ModelSafeWorker*>& workers, | 21 const std::vector<ModelSafeWorker*>& workers, |
21 ExtensionsActivityMonitor* extensions_activity_monitor, | 22 ExtensionsActivityMonitor* extensions_activity_monitor, |
| 23 ThrottledDataTypeTracker* throttled_data_type_tracker, |
22 const std::vector<SyncEngineEventListener*>& listeners, | 24 const std::vector<SyncEngineEventListener*>& listeners, |
23 DebugInfoGetter* debug_info_getter, | 25 DebugInfoGetter* debug_info_getter, |
24 browser_sync::TrafficRecorder* traffic_recorder) | 26 browser_sync::TrafficRecorder* traffic_recorder) |
25 : resolver_(NULL), | 27 : resolver_(NULL), |
26 connection_manager_(connection_manager), | 28 connection_manager_(connection_manager), |
27 directory_(directory), | 29 directory_(directory), |
28 routing_info_(model_safe_routing_info), | 30 routing_info_(model_safe_routing_info), |
29 workers_(workers), | 31 workers_(workers), |
30 extensions_activity_monitor_(extensions_activity_monitor), | 32 extensions_activity_monitor_(extensions_activity_monitor), |
31 notifications_enabled_(false), | 33 notifications_enabled_(false), |
32 max_commit_batch_size_(kDefaultMaxCommitBatchSize), | 34 max_commit_batch_size_(kDefaultMaxCommitBatchSize), |
| 35 throttled_data_type_tracker_(throttled_data_type_tracker), |
33 debug_info_getter_(debug_info_getter), | 36 debug_info_getter_(debug_info_getter), |
34 traffic_recorder_(traffic_recorder) { | 37 traffic_recorder_(traffic_recorder) { |
35 std::vector<SyncEngineEventListener*>::const_iterator it; | 38 std::vector<SyncEngineEventListener*>::const_iterator it; |
36 for (it = listeners.begin(); it != listeners.end(); ++it) | 39 for (it = listeners.begin(); it != listeners.end(); ++it) |
37 listeners_.AddObserver(*it); | 40 listeners_.AddObserver(*it); |
38 } | 41 } |
39 | 42 |
40 SyncSessionContext::SyncSessionContext() | |
41 : connection_manager_(NULL), | |
42 directory_(NULL), | |
43 extensions_activity_monitor_(NULL), | |
44 debug_info_getter_(NULL), | |
45 traffic_recorder_(NULL) { | |
46 } | |
47 | |
48 SyncSessionContext::~SyncSessionContext() { | 43 SyncSessionContext::~SyncSessionContext() { |
49 } | 44 } |
50 | 45 |
51 void SyncSessionContext::SetUnthrottleTime(syncable::ModelTypeSet types, | |
52 const base::TimeTicks& time) { | |
53 for (syncable::ModelTypeSet::Iterator it = types.First(); | |
54 it.Good(); it.Inc()) { | |
55 unthrottle_times_[it.Get()] = time; | |
56 } | |
57 } | |
58 | |
59 void SyncSessionContext::PruneUnthrottledTypes(const base::TimeTicks& time) { | |
60 UnthrottleTimes::iterator it = unthrottle_times_.begin(); | |
61 while (it != unthrottle_times_.end()) { | |
62 if (it->second <= time) { | |
63 // Delete and increment the iterator. | |
64 UnthrottleTimes::iterator iterator_to_delete = it; | |
65 ++it; | |
66 unthrottle_times_.erase(iterator_to_delete); | |
67 } else { | |
68 // Just increment the iterator. | |
69 ++it; | |
70 } | |
71 } | |
72 } | |
73 | |
74 // TODO(lipalani): Call this function and fill the return values in snapshot | |
75 // so it could be shown in the about:sync page. | |
76 syncable::ModelTypeSet SyncSessionContext::GetThrottledTypes() const { | |
77 syncable::ModelTypeSet types; | |
78 for (UnthrottleTimes::const_iterator it = unthrottle_times_.begin(); | |
79 it != unthrottle_times_.end(); | |
80 ++it) { | |
81 types.Put(it->first); | |
82 } | |
83 return types; | |
84 } | |
85 | |
86 } // namespace sessions | 46 } // namespace sessions |
87 } // namespace browser_sync | 47 } // namespace browser_sync |
OLD | NEW |