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

Side by Side Diff: sync/notifier/non_blocking_invalidator.cc

Issue 12092091: Separate sync and invalidation client IDs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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/notifier/non_blocking_invalidator.h" 5 #include "sync/notifier/non_blocking_invalidator.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 12 matching lines...) Expand all
23 public InvalidationHandler { 23 public InvalidationHandler {
24 public: 24 public:
25 // Called on parent thread. |delegate_observer| should be 25 // Called on parent thread. |delegate_observer| should be
26 // initialized. 26 // initialized.
27 explicit Core( 27 explicit Core(
28 const WeakHandle<InvalidationHandler>& delegate_observer); 28 const WeakHandle<InvalidationHandler>& delegate_observer);
29 29
30 // Helpers called on I/O thread. 30 // Helpers called on I/O thread.
31 void Initialize( 31 void Initialize(
32 const notifier::NotifierOptions& notifier_options, 32 const notifier::NotifierOptions& notifier_options,
33 const std::string& invalidator_client_id,
33 const InvalidationStateMap& initial_invalidation_state_map, 34 const InvalidationStateMap& initial_invalidation_state_map,
34 const std::string& invalidation_bootstrap_data, 35 const std::string& invalidation_bootstrap_data,
35 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, 36 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker,
36 const std::string& client_info); 37 const std::string& client_info);
37 void Teardown(); 38 void Teardown();
38 void UpdateRegisteredIds(const ObjectIdSet& ids); 39 void UpdateRegisteredIds(const ObjectIdSet& ids);
39 void SetUniqueId(const std::string& unique_id);
40 void UpdateCredentials(const std::string& email, const std::string& token); 40 void UpdateCredentials(const std::string& email, const std::string& token);
41 41
42 // InvalidationHandler implementation (all called on I/O thread by 42 // InvalidationHandler implementation (all called on I/O thread by
43 // InvalidationNotifier). 43 // InvalidationNotifier).
44 virtual void OnInvalidatorStateChange(InvalidatorState reason) OVERRIDE; 44 virtual void OnInvalidatorStateChange(InvalidatorState reason) OVERRIDE;
45 virtual void OnIncomingInvalidation( 45 virtual void OnIncomingInvalidation(
46 const ObjectIdInvalidationMap& invalidation_map, 46 const ObjectIdInvalidationMap& invalidation_map,
47 IncomingInvalidationSource source) OVERRIDE; 47 IncomingInvalidationSource source) OVERRIDE;
48 48
49 private: 49 private:
(...skipping 14 matching lines...) Expand all
64 const WeakHandle<InvalidationHandler>& delegate_observer) 64 const WeakHandle<InvalidationHandler>& delegate_observer)
65 : delegate_observer_(delegate_observer) { 65 : delegate_observer_(delegate_observer) {
66 DCHECK(delegate_observer_.IsInitialized()); 66 DCHECK(delegate_observer_.IsInitialized());
67 } 67 }
68 68
69 NonBlockingInvalidator::Core::~Core() { 69 NonBlockingInvalidator::Core::~Core() {
70 } 70 }
71 71
72 void NonBlockingInvalidator::Core::Initialize( 72 void NonBlockingInvalidator::Core::Initialize(
73 const notifier::NotifierOptions& notifier_options, 73 const notifier::NotifierOptions& notifier_options,
74 const std::string& invalidator_client_id,
74 const InvalidationStateMap& initial_invalidation_state_map, 75 const InvalidationStateMap& initial_invalidation_state_map,
75 const std::string& invalidation_bootstrap_data, 76 const std::string& invalidation_bootstrap_data,
76 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, 77 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker,
77 const std::string& client_info) { 78 const std::string& client_info) {
78 DCHECK(notifier_options.request_context_getter); 79 DCHECK(notifier_options.request_context_getter);
79 DCHECK_EQ(notifier::NOTIFICATION_SERVER, 80 DCHECK_EQ(notifier::NOTIFICATION_SERVER,
80 notifier_options.notification_method); 81 notifier_options.notification_method);
81 network_task_runner_ = notifier_options.request_context_getter-> 82 network_task_runner_ = notifier_options.request_context_getter->
82 GetNetworkTaskRunner(); 83 GetNetworkTaskRunner();
83 DCHECK(network_task_runner_->BelongsToCurrentThread()); 84 DCHECK(network_task_runner_->BelongsToCurrentThread());
84 invalidation_notifier_.reset( 85 invalidation_notifier_.reset(
85 new InvalidationNotifier( 86 new InvalidationNotifier(
86 notifier::PushClient::CreateDefaultOnIOThread(notifier_options), 87 notifier::PushClient::CreateDefaultOnIOThread(notifier_options),
88 invalidator_client_id,
87 initial_invalidation_state_map, 89 initial_invalidation_state_map,
88 invalidation_bootstrap_data, 90 invalidation_bootstrap_data,
89 invalidation_state_tracker, 91 invalidation_state_tracker,
90 client_info)); 92 client_info));
91 invalidation_notifier_->RegisterHandler(this); 93 invalidation_notifier_->RegisterHandler(this);
92 } 94 }
93 95
94 void NonBlockingInvalidator::Core::Teardown() { 96 void NonBlockingInvalidator::Core::Teardown() {
95 DCHECK(network_task_runner_->BelongsToCurrentThread()); 97 DCHECK(network_task_runner_->BelongsToCurrentThread());
96 invalidation_notifier_->UnregisterHandler(this); 98 invalidation_notifier_->UnregisterHandler(this);
97 invalidation_notifier_.reset(); 99 invalidation_notifier_.reset();
98 network_task_runner_ = NULL; 100 network_task_runner_ = NULL;
99 } 101 }
100 102
101 void NonBlockingInvalidator::Core::UpdateRegisteredIds(const ObjectIdSet& ids) { 103 void NonBlockingInvalidator::Core::UpdateRegisteredIds(const ObjectIdSet& ids) {
102 DCHECK(network_task_runner_->BelongsToCurrentThread()); 104 DCHECK(network_task_runner_->BelongsToCurrentThread());
103 invalidation_notifier_->UpdateRegisteredIds(this, ids); 105 invalidation_notifier_->UpdateRegisteredIds(this, ids);
104 } 106 }
105 107
106 void NonBlockingInvalidator::Core::SetUniqueId(const std::string& unique_id) {
107 DCHECK(network_task_runner_->BelongsToCurrentThread());
108 invalidation_notifier_->SetUniqueId(unique_id);
109 }
110
111 void NonBlockingInvalidator::Core::UpdateCredentials(const std::string& email, 108 void NonBlockingInvalidator::Core::UpdateCredentials(const std::string& email,
112 const std::string& token) { 109 const std::string& token) {
113 DCHECK(network_task_runner_->BelongsToCurrentThread()); 110 DCHECK(network_task_runner_->BelongsToCurrentThread());
114 invalidation_notifier_->UpdateCredentials(email, token); 111 invalidation_notifier_->UpdateCredentials(email, token);
115 } 112 }
116 113
117 void NonBlockingInvalidator::Core::OnInvalidatorStateChange( 114 void NonBlockingInvalidator::Core::OnInvalidatorStateChange(
118 InvalidatorState reason) { 115 InvalidatorState reason) {
119 DCHECK(network_task_runner_->BelongsToCurrentThread()); 116 DCHECK(network_task_runner_->BelongsToCurrentThread());
120 delegate_observer_.Call( 117 delegate_observer_.Call(
121 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); 118 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason);
122 } 119 }
123 120
124 void NonBlockingInvalidator::Core::OnIncomingInvalidation( 121 void NonBlockingInvalidator::Core::OnIncomingInvalidation(
125 const ObjectIdInvalidationMap& invalidation_map, 122 const ObjectIdInvalidationMap& invalidation_map,
126 IncomingInvalidationSource source) { 123 IncomingInvalidationSource source) {
127 DCHECK(network_task_runner_->BelongsToCurrentThread()); 124 DCHECK(network_task_runner_->BelongsToCurrentThread());
128 delegate_observer_.Call(FROM_HERE, 125 delegate_observer_.Call(FROM_HERE,
129 &InvalidationHandler::OnIncomingInvalidation, 126 &InvalidationHandler::OnIncomingInvalidation,
130 invalidation_map, 127 invalidation_map,
131 source); 128 source);
132 } 129 }
133 130
134 NonBlockingInvalidator::NonBlockingInvalidator( 131 NonBlockingInvalidator::NonBlockingInvalidator(
135 const notifier::NotifierOptions& notifier_options, 132 const notifier::NotifierOptions& notifier_options,
133 const std::string& invalidator_client_id,
136 const InvalidationStateMap& initial_max_invalidation_versions, 134 const InvalidationStateMap& initial_max_invalidation_versions,
137 const std::string& invalidation_bootstrap_data, 135 const std::string& invalidation_bootstrap_data,
138 const WeakHandle<InvalidationStateTracker>& 136 const WeakHandle<InvalidationStateTracker>&
139 invalidation_state_tracker, 137 invalidation_state_tracker,
140 const std::string& client_info) 138 const std::string& client_info)
141 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 139 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
142 core_( 140 core_(
143 new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()))), 141 new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()))),
144 parent_task_runner_( 142 parent_task_runner_(
145 base::ThreadTaskRunnerHandle::Get()), 143 base::ThreadTaskRunnerHandle::Get()),
146 network_task_runner_(notifier_options.request_context_getter-> 144 network_task_runner_(notifier_options.request_context_getter->
147 GetNetworkTaskRunner()) { 145 GetNetworkTaskRunner()),
146 invalidator_client_id_(invalidator_client_id) {
148 if (!network_task_runner_->PostTask( 147 if (!network_task_runner_->PostTask(
149 FROM_HERE, 148 FROM_HERE,
150 base::Bind( 149 base::Bind(
151 &NonBlockingInvalidator::Core::Initialize, 150 &NonBlockingInvalidator::Core::Initialize,
152 core_.get(), 151 core_.get(),
153 notifier_options, 152 notifier_options,
153 invalidator_client_id_,
154 initial_max_invalidation_versions, 154 initial_max_invalidation_versions,
155 invalidation_bootstrap_data, 155 invalidation_bootstrap_data,
156 invalidation_state_tracker, 156 invalidation_state_tracker,
157 client_info))) { 157 client_info))) {
158 NOTREACHED(); 158 NOTREACHED();
159 } 159 }
160 } 160 }
161 161
162 NonBlockingInvalidator::~NonBlockingInvalidator() { 162 NonBlockingInvalidator::~NonBlockingInvalidator() {
163 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 163 DCHECK(parent_task_runner_->BelongsToCurrentThread());
(...skipping 27 matching lines...) Expand all
191 void NonBlockingInvalidator::UnregisterHandler(InvalidationHandler* handler) { 191 void NonBlockingInvalidator::UnregisterHandler(InvalidationHandler* handler) {
192 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 192 DCHECK(parent_task_runner_->BelongsToCurrentThread());
193 registrar_.UnregisterHandler(handler); 193 registrar_.UnregisterHandler(handler);
194 } 194 }
195 195
196 InvalidatorState NonBlockingInvalidator::GetInvalidatorState() const { 196 InvalidatorState NonBlockingInvalidator::GetInvalidatorState() const {
197 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 197 DCHECK(parent_task_runner_->BelongsToCurrentThread());
198 return registrar_.GetInvalidatorState(); 198 return registrar_.GetInvalidatorState();
199 } 199 }
200 200
201 void NonBlockingInvalidator::SetUniqueId(const std::string& unique_id) {
202 DCHECK(parent_task_runner_->BelongsToCurrentThread());
203 if (!network_task_runner_->PostTask(
204 FROM_HERE,
205 base::Bind(&NonBlockingInvalidator::Core::SetUniqueId,
206 core_.get(), unique_id))) {
207 NOTREACHED();
208 }
209 }
210
211 void NonBlockingInvalidator::UpdateCredentials(const std::string& email, 201 void NonBlockingInvalidator::UpdateCredentials(const std::string& email,
212 const std::string& token) { 202 const std::string& token) {
213 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 203 DCHECK(parent_task_runner_->BelongsToCurrentThread());
214 if (!network_task_runner_->PostTask( 204 if (!network_task_runner_->PostTask(
215 FROM_HERE, 205 FROM_HERE,
216 base::Bind(&NonBlockingInvalidator::Core::UpdateCredentials, 206 base::Bind(&NonBlockingInvalidator::Core::UpdateCredentials,
217 core_.get(), email, token))) { 207 core_.get(), email, token))) {
218 NOTREACHED(); 208 NOTREACHED();
219 } 209 }
220 } 210 }
(...skipping 11 matching lines...) Expand all
232 } 222 }
233 223
234 void NonBlockingInvalidator::OnIncomingInvalidation( 224 void NonBlockingInvalidator::OnIncomingInvalidation(
235 const ObjectIdInvalidationMap& invalidation_map, 225 const ObjectIdInvalidationMap& invalidation_map,
236 IncomingInvalidationSource source) { 226 IncomingInvalidationSource source) {
237 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 227 DCHECK(parent_task_runner_->BelongsToCurrentThread());
238 registrar_.DispatchInvalidationsToHandlers(invalidation_map, source); 228 registrar_.DispatchInvalidationsToHandlers(invalidation_map, source);
239 } 229 }
240 230
241 } // namespace syncer 231 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/notifier/non_blocking_invalidator.h ('k') | sync/notifier/non_blocking_invalidator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698