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

Side by Side Diff: components/invalidation/impl/invalidation_logger.cc

Issue 2427913002: Reduce usage of FOR_EACH_OBSERVER macro in components/invalidation (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/invalidation/impl/invalidation_logger.h" 5 #include "components/invalidation/impl/invalidation_logger.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "components/invalidation/impl/invalidation_logger_observer.h" 8 #include "components/invalidation/impl/invalidation_logger_observer.h"
9 #include "components/invalidation/public/invalidation_handler.h" 9 #include "components/invalidation/public/invalidation_handler.h"
10 10
(...skipping 15 matching lines...) Expand all
26 DCHECK(registered_handlers_.find(registrar_name) != 26 DCHECK(registered_handlers_.find(registrar_name) !=
27 registered_handlers_.end()); 27 registered_handlers_.end());
28 std::multiset<std::string>::iterator it = 28 std::multiset<std::string>::iterator it =
29 registered_handlers_.find(registrar_name); 29 registered_handlers_.find(registrar_name);
30 // Delete only one instance of registrar_name. 30 // Delete only one instance of registrar_name.
31 registered_handlers_.erase(it); 31 registered_handlers_.erase(it);
32 EmitRegisteredHandlers(); 32 EmitRegisteredHandlers();
33 } 33 }
34 34
35 void InvalidationLogger::EmitRegisteredHandlers() { 35 void InvalidationLogger::EmitRegisteredHandlers() {
36 FOR_EACH_OBSERVER(InvalidationLoggerObserver, observer_list_, 36 for (auto& observer : observer_list_)
37 OnRegistrationChange(registered_handlers_)); 37 observer.OnRegistrationChange(registered_handlers_);
38 } 38 }
39 39
40 void InvalidationLogger::OnStateChange( 40 void InvalidationLogger::OnStateChange(
41 const syncer::InvalidatorState& new_state) { 41 const syncer::InvalidatorState& new_state) {
42 // Prevent spurious same state emissions from updating the timestamp. 42 // Prevent spurious same state emissions from updating the timestamp.
43 if (new_state != last_invalidator_state_) 43 if (new_state != last_invalidator_state_)
44 last_invalidator_state_timestamp_ = base::Time::Now(); 44 last_invalidator_state_timestamp_ = base::Time::Now();
45 last_invalidator_state_ = new_state; 45 last_invalidator_state_ = new_state;
46 EmitState(); 46 EmitState();
47 } 47 }
48 48
49 void InvalidationLogger::EmitState() { 49 void InvalidationLogger::EmitState() {
50 FOR_EACH_OBSERVER(InvalidationLoggerObserver, 50 for (auto& observer : observer_list_) {
51 observer_list_, 51 observer.OnStateChange(last_invalidator_state_,
52 OnStateChange(last_invalidator_state_, 52 last_invalidator_state_timestamp_);
53 last_invalidator_state_timestamp_)); 53 }
54 } 54 }
55 55
56 void InvalidationLogger::OnUpdateIds( 56 void InvalidationLogger::OnUpdateIds(
57 std::map<std::string, syncer::ObjectIdSet> updated_ids) { 57 std::map<std::string, syncer::ObjectIdSet> updated_ids) {
58 for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it = 58 for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it =
59 updated_ids.begin(); it != updated_ids.end(); ++it) { 59 updated_ids.begin(); it != updated_ids.end(); ++it) {
60 latest_ids_[it->first] = syncer::ObjectIdSet(it->second); 60 latest_ids_[it->first] = syncer::ObjectIdSet(it->second);
61 } 61 }
62 EmitUpdatedIds(); 62 EmitUpdatedIds();
63 } 63 }
64 64
65 void InvalidationLogger::EmitUpdatedIds() { 65 void InvalidationLogger::EmitUpdatedIds() {
66 for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it = 66 for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it =
67 latest_ids_.begin(); it != latest_ids_.end(); ++it) { 67 latest_ids_.begin(); it != latest_ids_.end(); ++it) {
68 const syncer::ObjectIdSet& object_ids_for_handler = it->second; 68 const syncer::ObjectIdSet& object_ids_for_handler = it->second;
69 syncer::ObjectIdCountMap per_object_invalidation_count; 69 syncer::ObjectIdCountMap per_object_invalidation_count;
70 for (syncer::ObjectIdSet::const_iterator oid_it = 70 for (syncer::ObjectIdSet::const_iterator oid_it =
71 object_ids_for_handler.begin(); 71 object_ids_for_handler.begin();
72 oid_it != object_ids_for_handler.end(); 72 oid_it != object_ids_for_handler.end();
73 ++oid_it) { 73 ++oid_it) {
74 per_object_invalidation_count[*oid_it] = invalidation_count_[*oid_it]; 74 per_object_invalidation_count[*oid_it] = invalidation_count_[*oid_it];
75 } 75 }
76 FOR_EACH_OBSERVER(InvalidationLoggerObserver, 76 for (auto& observer : observer_list_)
77 observer_list_, 77 observer.OnUpdateIds(it->first, per_object_invalidation_count);
78 OnUpdateIds(it->first, per_object_invalidation_count));
79 } 78 }
80 } 79 }
81 80
82 void InvalidationLogger::OnDebugMessage(const base::DictionaryValue& details) { 81 void InvalidationLogger::OnDebugMessage(const base::DictionaryValue& details) {
83 FOR_EACH_OBSERVER( 82 for (auto& observer : observer_list_)
84 InvalidationLoggerObserver, observer_list_, OnDebugMessage(details)); 83 observer.OnDebugMessage(details);
85 } 84 }
86 85
87 void InvalidationLogger::OnInvalidation( 86 void InvalidationLogger::OnInvalidation(
88 const syncer::ObjectIdInvalidationMap& details) { 87 const syncer::ObjectIdInvalidationMap& details) {
89 std::vector<syncer::Invalidation> internal_invalidations; 88 std::vector<syncer::Invalidation> internal_invalidations;
90 details.GetAllInvalidations(&internal_invalidations); 89 details.GetAllInvalidations(&internal_invalidations);
91 for (std::vector<syncer::Invalidation>::const_iterator it = 90 for (std::vector<syncer::Invalidation>::const_iterator it =
92 internal_invalidations.begin(); 91 internal_invalidations.begin();
93 it != internal_invalidations.end(); 92 it != internal_invalidations.end();
94 ++it) { 93 ++it) {
95 invalidation_count_[it->object_id()]++; 94 invalidation_count_[it->object_id()]++;
96 } 95 }
97 FOR_EACH_OBSERVER( 96 for (auto& observer : observer_list_)
98 InvalidationLoggerObserver, observer_list_, OnInvalidation(details)); 97 observer.OnInvalidation(details);
99 } 98 }
100 99
101 void InvalidationLogger::EmitContent() { 100 void InvalidationLogger::EmitContent() {
102 EmitState(); 101 EmitState();
103 EmitUpdatedIds(); 102 EmitUpdatedIds();
104 EmitRegisteredHandlers(); 103 EmitRegisteredHandlers();
105 } 104 }
106 105
107 void InvalidationLogger::RegisterObserver( 106 void InvalidationLogger::RegisterObserver(
108 InvalidationLoggerObserver* debug_observer) { 107 InvalidationLoggerObserver* debug_observer) {
109 observer_list_.AddObserver(debug_observer); 108 observer_list_.AddObserver(debug_observer);
110 } 109 }
111 110
112 void InvalidationLogger::UnregisterObserver( 111 void InvalidationLogger::UnregisterObserver(
113 InvalidationLoggerObserver* debug_observer) { 112 InvalidationLoggerObserver* debug_observer) {
114 observer_list_.RemoveObserver(debug_observer); 113 observer_list_.RemoveObserver(debug_observer);
115 } 114 }
116 115
117 bool InvalidationLogger::IsObserverRegistered( 116 bool InvalidationLogger::IsObserverRegistered(
118 const InvalidationLoggerObserver* debug_observer) const { 117 const InvalidationLoggerObserver* debug_observer) const {
119 return observer_list_.HasObserver(debug_observer); 118 return observer_list_.HasObserver(debug_observer);
120 } 119 }
121 } // namespace invalidation 120 } // namespace invalidation
OLDNEW
« no previous file with comments | « components/browser_sync/profile_sync_service.cc ('k') | components/invalidation/impl/invalidator_registrar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698