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

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

Issue 10911084: Implement Invalidator::Acknowledge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adapt patch to new TickClock interface Created 7 years, 9 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
« no previous file with comments | « sync/notifier/non_blocking_invalidator.h ('k') | sync/notifier/p2p_invalidator.h » ('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/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 18 matching lines...) Expand all
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 InvalidationStateMap& initial_invalidation_state_map, 33 const InvalidationStateMap& initial_invalidation_state_map,
34 const std::string& invalidation_bootstrap_data, 34 const std::string& invalidation_bootstrap_data,
35 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, 35 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker,
36 const std::string& client_info); 36 const std::string& client_info);
37 void Teardown(); 37 void Teardown();
38 void UpdateRegisteredIds(const ObjectIdSet& ids); 38 void UpdateRegisteredIds(const ObjectIdSet& ids);
39 void Acknowledge(const invalidation::ObjectId& id,
40 const AckHandle& ack_handle);
39 void SetUniqueId(const std::string& unique_id); 41 void SetUniqueId(const std::string& unique_id);
40 void UpdateCredentials(const std::string& email, const std::string& token); 42 void UpdateCredentials(const std::string& email, const std::string& token);
41 43
42 // InvalidationHandler implementation (all called on I/O thread by 44 // InvalidationHandler implementation (all called on I/O thread by
43 // InvalidationNotifier). 45 // InvalidationNotifier).
44 virtual void OnInvalidatorStateChange(InvalidatorState reason) OVERRIDE; 46 virtual void OnInvalidatorStateChange(InvalidatorState reason) OVERRIDE;
45 virtual void OnIncomingInvalidation( 47 virtual void OnIncomingInvalidation(
46 const ObjectIdInvalidationMap& invalidation_map) OVERRIDE; 48 const ObjectIdInvalidationMap& invalidation_map) OVERRIDE;
47 49
48 private: 50 private:
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 invalidation_notifier_->UnregisterHandler(this); 97 invalidation_notifier_->UnregisterHandler(this);
96 invalidation_notifier_.reset(); 98 invalidation_notifier_.reset();
97 network_task_runner_ = NULL; 99 network_task_runner_ = NULL;
98 } 100 }
99 101
100 void NonBlockingInvalidator::Core::UpdateRegisteredIds(const ObjectIdSet& ids) { 102 void NonBlockingInvalidator::Core::UpdateRegisteredIds(const ObjectIdSet& ids) {
101 DCHECK(network_task_runner_->BelongsToCurrentThread()); 103 DCHECK(network_task_runner_->BelongsToCurrentThread());
102 invalidation_notifier_->UpdateRegisteredIds(this, ids); 104 invalidation_notifier_->UpdateRegisteredIds(this, ids);
103 } 105 }
104 106
107 void NonBlockingInvalidator::Core::Acknowledge(const invalidation::ObjectId& id,
108 const AckHandle& ack_handle) {
109 DCHECK(network_task_runner_->BelongsToCurrentThread());
110 invalidation_notifier_->Acknowledge(id, ack_handle);
111 }
112
105 void NonBlockingInvalidator::Core::SetUniqueId(const std::string& unique_id) { 113 void NonBlockingInvalidator::Core::SetUniqueId(const std::string& unique_id) {
106 DCHECK(network_task_runner_->BelongsToCurrentThread()); 114 DCHECK(network_task_runner_->BelongsToCurrentThread());
107 invalidation_notifier_->SetUniqueId(unique_id); 115 invalidation_notifier_->SetUniqueId(unique_id);
108 } 116 }
109 117
110 void NonBlockingInvalidator::Core::UpdateCredentials(const std::string& email, 118 void NonBlockingInvalidator::Core::UpdateCredentials(const std::string& email,
111 const std::string& token) { 119 const std::string& token) {
112 DCHECK(network_task_runner_->BelongsToCurrentThread()); 120 DCHECK(network_task_runner_->BelongsToCurrentThread());
113 invalidation_notifier_->UpdateCredentials(email, token); 121 invalidation_notifier_->UpdateCredentials(email, token);
114 } 122 }
115 123
116 void NonBlockingInvalidator::Core::OnInvalidatorStateChange( 124 void NonBlockingInvalidator::Core::OnInvalidatorStateChange(
117 InvalidatorState reason) { 125 InvalidatorState reason) {
118 DCHECK(network_task_runner_->BelongsToCurrentThread()); 126 DCHECK(network_task_runner_->BelongsToCurrentThread());
119 delegate_observer_.Call( 127 delegate_observer_.Call(
120 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); 128 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason);
121 } 129 }
122 130
123 void NonBlockingInvalidator::Core::OnIncomingInvalidation( 131 void NonBlockingInvalidator::Core::OnIncomingInvalidation(
124 const ObjectIdInvalidationMap& invalidation_map) { 132 const ObjectIdInvalidationMap& invalidation_map) {
125 DCHECK(network_task_runner_->BelongsToCurrentThread()); 133 DCHECK(network_task_runner_->BelongsToCurrentThread());
126 delegate_observer_.Call(FROM_HERE, 134 delegate_observer_.Call(FROM_HERE,
127 &InvalidationHandler::OnIncomingInvalidation, 135 &InvalidationHandler::OnIncomingInvalidation,
128 invalidation_map); 136 invalidation_map);
129 } 137 }
130 138
131 NonBlockingInvalidator::NonBlockingInvalidator( 139 NonBlockingInvalidator::NonBlockingInvalidator(
132 const notifier::NotifierOptions& notifier_options, 140 const notifier::NotifierOptions& notifier_options,
133 const InvalidationStateMap& initial_max_invalidation_versions, 141 const InvalidationStateMap& initial_invalidation_state_map,
134 const std::string& invalidation_bootstrap_data, 142 const std::string& invalidation_bootstrap_data,
135 const WeakHandle<InvalidationStateTracker>& 143 const WeakHandle<InvalidationStateTracker>&
136 invalidation_state_tracker, 144 invalidation_state_tracker,
137 const std::string& client_info) 145 const std::string& client_info)
138 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 146 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
139 core_( 147 core_(
140 new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()))), 148 new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()))),
141 parent_task_runner_( 149 parent_task_runner_(
142 base::ThreadTaskRunnerHandle::Get()), 150 base::ThreadTaskRunnerHandle::Get()),
143 network_task_runner_(notifier_options.request_context_getter-> 151 network_task_runner_(notifier_options.request_context_getter->
144 GetNetworkTaskRunner()) { 152 GetNetworkTaskRunner()) {
145 if (!network_task_runner_->PostTask( 153 if (!network_task_runner_->PostTask(
146 FROM_HERE, 154 FROM_HERE,
147 base::Bind( 155 base::Bind(
148 &NonBlockingInvalidator::Core::Initialize, 156 &NonBlockingInvalidator::Core::Initialize,
149 core_.get(), 157 core_.get(),
150 notifier_options, 158 notifier_options,
151 initial_max_invalidation_versions, 159 initial_invalidation_state_map,
152 invalidation_bootstrap_data, 160 invalidation_bootstrap_data,
153 invalidation_state_tracker, 161 invalidation_state_tracker,
154 client_info))) { 162 client_info))) {
155 NOTREACHED(); 163 NOTREACHED();
156 } 164 }
157 } 165 }
158 166
159 NonBlockingInvalidator::~NonBlockingInvalidator() { 167 NonBlockingInvalidator::~NonBlockingInvalidator() {
160 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 168 DCHECK(parent_task_runner_->BelongsToCurrentThread());
161 if (!network_task_runner_->PostTask( 169 if (!network_task_runner_->PostTask(
(...skipping 21 matching lines...) Expand all
183 registrar_.GetAllRegisteredIds()))) { 191 registrar_.GetAllRegisteredIds()))) {
184 NOTREACHED(); 192 NOTREACHED();
185 } 193 }
186 } 194 }
187 195
188 void NonBlockingInvalidator::UnregisterHandler(InvalidationHandler* handler) { 196 void NonBlockingInvalidator::UnregisterHandler(InvalidationHandler* handler) {
189 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 197 DCHECK(parent_task_runner_->BelongsToCurrentThread());
190 registrar_.UnregisterHandler(handler); 198 registrar_.UnregisterHandler(handler);
191 } 199 }
192 200
201 void NonBlockingInvalidator::Acknowledge(const invalidation::ObjectId& id,
202 const AckHandle& ack_handle) {
203 DCHECK(parent_task_runner_->BelongsToCurrentThread());
204 if (!network_task_runner_->PostTask(
205 FROM_HERE,
206 base::Bind(
207 &NonBlockingInvalidator::Core::Acknowledge,
208 core_.get(),
209 id,
210 ack_handle))) {
211 NOTREACHED();
212 }
213 }
214
193 InvalidatorState NonBlockingInvalidator::GetInvalidatorState() const { 215 InvalidatorState NonBlockingInvalidator::GetInvalidatorState() const {
194 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 216 DCHECK(parent_task_runner_->BelongsToCurrentThread());
195 return registrar_.GetInvalidatorState(); 217 return registrar_.GetInvalidatorState();
196 } 218 }
197 219
198 void NonBlockingInvalidator::SetUniqueId(const std::string& unique_id) { 220 void NonBlockingInvalidator::SetUniqueId(const std::string& unique_id) {
199 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 221 DCHECK(parent_task_runner_->BelongsToCurrentThread());
200 if (!network_task_runner_->PostTask( 222 if (!network_task_runner_->PostTask(
201 FROM_HERE, 223 FROM_HERE,
202 base::Bind(&NonBlockingInvalidator::Core::SetUniqueId, 224 base::Bind(&NonBlockingInvalidator::Core::SetUniqueId,
(...skipping 25 matching lines...) Expand all
228 registrar_.UpdateInvalidatorState(state); 250 registrar_.UpdateInvalidatorState(state);
229 } 251 }
230 252
231 void NonBlockingInvalidator::OnIncomingInvalidation( 253 void NonBlockingInvalidator::OnIncomingInvalidation(
232 const ObjectIdInvalidationMap& invalidation_map) { 254 const ObjectIdInvalidationMap& invalidation_map) {
233 DCHECK(parent_task_runner_->BelongsToCurrentThread()); 255 DCHECK(parent_task_runner_->BelongsToCurrentThread());
234 registrar_.DispatchInvalidationsToHandlers(invalidation_map); 256 registrar_.DispatchInvalidationsToHandlers(invalidation_map);
235 } 257 }
236 258
237 } // namespace syncer 259 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/notifier/non_blocking_invalidator.h ('k') | sync/notifier/p2p_invalidator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698