Chromium Code Reviews| Index: sync/notifier/non_blocking_invalidator.cc |
| diff --git a/sync/notifier/non_blocking_invalidator.cc b/sync/notifier/non_blocking_invalidator.cc |
| index 05744152e391c7dca8e89f580c7ede44f40f9c25..b513a5dc531f514f4e32aab12c9193d2ac08465d 100644 |
| --- a/sync/notifier/non_blocking_invalidator.cc |
| +++ b/sync/notifier/non_blocking_invalidator.cc |
| @@ -30,12 +30,14 @@ class NonBlockingInvalidator::Core |
| // Helpers called on I/O thread. |
| void Initialize( |
| const notifier::NotifierOptions& notifier_options, |
| - const InvalidationVersionMap& initial_max_invalidation_versions, |
| + const InvalidationStateMap& initial_invalidation_state_map, |
| const std::string& initial_invalidation_state, |
| const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, |
| const std::string& client_info); |
| void Teardown(); |
| void UpdateRegisteredIds(const ObjectIdSet& ids); |
| + void Acknowledge(const invalidation::ObjectId& id, |
| + const AckHandle& ack_handle); |
| void SetUniqueId(const std::string& unique_id); |
| void SetStateDeprecated(const std::string& state); |
| void UpdateCredentials(const std::string& email, const std::string& token); |
| @@ -72,7 +74,7 @@ NonBlockingInvalidator::Core::~Core() { |
| void NonBlockingInvalidator::Core::Initialize( |
| const notifier::NotifierOptions& notifier_options, |
| - const InvalidationVersionMap& initial_max_invalidation_versions, |
| + const InvalidationStateMap& initial_invalidation_state_map, |
| const std::string& initial_invalidation_state, |
| const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, |
| const std::string& client_info) { |
| @@ -85,7 +87,7 @@ void NonBlockingInvalidator::Core::Initialize( |
| invalidation_notifier_.reset( |
| new InvalidationNotifier( |
| notifier::PushClient::CreateDefaultOnIOThread(notifier_options), |
| - initial_max_invalidation_versions, |
| + initial_invalidation_state_map, |
| initial_invalidation_state, |
| invalidation_state_tracker, |
| client_info)); |
| @@ -104,6 +106,12 @@ void NonBlockingInvalidator::Core::UpdateRegisteredIds(const ObjectIdSet& ids) { |
| invalidation_notifier_->UpdateRegisteredIds(this, ids); |
| } |
| +void NonBlockingInvalidator::Core::Acknowledge(const invalidation::ObjectId& id, |
| + const AckHandle& ack_handle) { |
| + DCHECK(network_task_runner_->BelongsToCurrentThread()); |
| + invalidation_notifier_->Acknowledge(id, ack_handle); |
| +} |
| + |
| void NonBlockingInvalidator::Core::SetUniqueId(const std::string& unique_id) { |
| DCHECK(network_task_runner_->BelongsToCurrentThread()); |
| invalidation_notifier_->SetUniqueId(unique_id); |
| @@ -139,7 +147,7 @@ void NonBlockingInvalidator::Core::OnIncomingInvalidation( |
| NonBlockingInvalidator::NonBlockingInvalidator( |
| const notifier::NotifierOptions& notifier_options, |
| - const InvalidationVersionMap& initial_max_invalidation_versions, |
| + const InvalidationStateMap& initial_invalidation_state_map, |
| const std::string& initial_invalidation_state, |
| const WeakHandle<InvalidationStateTracker>& |
| invalidation_state_tracker, |
| @@ -157,7 +165,7 @@ NonBlockingInvalidator::NonBlockingInvalidator( |
| &NonBlockingInvalidator::Core::Initialize, |
| core_.get(), |
| notifier_options, |
| - initial_max_invalidation_versions, |
| + initial_invalidation_state_map, |
| initial_invalidation_state, |
| invalidation_state_tracker, |
| client_info))) { |
| @@ -199,6 +207,20 @@ void NonBlockingInvalidator::UnregisterHandler(InvalidationHandler* handler) { |
| registrar_.UnregisterHandler(handler); |
| } |
|
Pete Williamson
2012/09/14 18:28:22
This travels through a lot of levels. What does a
dcheng
2012/09/14 19:08:49
It would be easier to explain this in person rathe
|
| +void NonBlockingInvalidator::Acknowledge(const invalidation::ObjectId& id, |
| + const AckHandle& ack_handle) { |
| + DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
| + if (!network_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind( |
| + &NonBlockingInvalidator::Core::Acknowledge, |
| + core_.get(), |
| + id, |
| + ack_handle))) { |
| + NOTREACHED(); |
| + } |
| +} |
| + |
| InvalidatorState NonBlockingInvalidator::GetInvalidatorState() const { |
| DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
| return registrar_.GetInvalidatorState(); |