Index: sync/notifier/non_blocking_invalidator.cc |
diff --git a/sync/notifier/non_blocking_invalidator.cc b/sync/notifier/non_blocking_invalidator.cc |
index db8d018f8bc75224b1dbdf7207558db2051b1629..df40477d9bd490cebaca0edc0c36091b3a836cc5 100644 |
--- a/sync/notifier/non_blocking_invalidator.cc |
+++ b/sync/notifier/non_blocking_invalidator.cc |
@@ -13,7 +13,9 @@ |
#include "base/thread_task_runner_handle.h" |
#include "base/threading/thread.h" |
#include "jingle/notifier/listener/push_client.h" |
+#include "sync/internal_api/public/util/weak_handle.h" |
#include "sync/notifier/gcm_network_channel_delegate.h" |
+#include "sync/notifier/invalidation_handler.h" |
#include "sync/notifier/invalidation_notifier.h" |
#include "sync/notifier/object_id_invalidation_map.h" |
#include "sync/notifier/sync_system_resources.h" |
@@ -95,10 +97,9 @@ class NonBlockingInvalidator::Core |
// InvalidationHandler to observe the InvalidationNotifier we create. |
public InvalidationHandler { |
public: |
- // Called on parent thread. |delegate_observer| should be |
- // initialized. |
+ // Called on parent thread. |delegate_observer| should be initialized. |
explicit Core( |
- const WeakHandle<InvalidationHandler>& delegate_observer); |
+ const WeakHandle<NonBlockingInvalidator>& delegate_observer); |
// Helpers called on I/O thread. |
void Initialize( |
@@ -123,7 +124,7 @@ class NonBlockingInvalidator::Core |
virtual ~Core(); |
// The variables below should be used only on the I/O thread. |
- const WeakHandle<InvalidationHandler> delegate_observer_; |
+ const WeakHandle<NonBlockingInvalidator> delegate_observer_; |
scoped_ptr<InvalidationNotifier> invalidation_notifier_; |
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; |
@@ -131,7 +132,7 @@ class NonBlockingInvalidator::Core |
}; |
NonBlockingInvalidator::Core::Core( |
- const WeakHandle<InvalidationHandler>& delegate_observer) |
+ const WeakHandle<NonBlockingInvalidator>& delegate_observer) |
: delegate_observer_(delegate_observer) { |
DCHECK(delegate_observer_.IsInitialized()); |
} |
@@ -185,15 +186,16 @@ void NonBlockingInvalidator::Core::RequestDetailedStatus( |
void NonBlockingInvalidator::Core::OnInvalidatorStateChange( |
InvalidatorState reason) { |
DCHECK(network_task_runner_->BelongsToCurrentThread()); |
- delegate_observer_.Call( |
- FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); |
+ delegate_observer_.Call(FROM_HERE, |
+ &NonBlockingInvalidator::OnInvalidatorStateChange, |
+ reason); |
} |
void NonBlockingInvalidator::Core::OnIncomingInvalidation( |
const ObjectIdInvalidationMap& invalidation_map) { |
DCHECK(network_task_runner_->BelongsToCurrentThread()); |
delegate_observer_.Call(FROM_HERE, |
- &InvalidationHandler::OnIncomingInvalidation, |
+ &NonBlockingInvalidator::OnIncomingInvalidation, |
invalidation_map); |
} |
@@ -206,11 +208,11 @@ NonBlockingInvalidator::NonBlockingInvalidator( |
const std::string& invalidator_client_id, |
const UnackedInvalidationsMap& saved_invalidations, |
const std::string& invalidation_bootstrap_data, |
- const WeakHandle<InvalidationStateTracker>& |
- invalidation_state_tracker, |
+ InvalidationStateTracker* invalidation_state_tracker, |
const std::string& client_info, |
const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) |
- : parent_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
+ : invalidation_state_tracker_(invalidation_state_tracker), |
+ parent_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
network_task_runner_(request_context_getter->GetNetworkTaskRunner()), |
weak_ptr_factory_(this) { |
core_ = new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr())); |
@@ -220,7 +222,7 @@ NonBlockingInvalidator::NonBlockingInvalidator( |
invalidator_client_id, |
saved_invalidations, |
invalidation_bootstrap_data, |
- invalidation_state_tracker, |
+ MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()), |
client_info, |
request_context_getter); |
@@ -298,19 +300,6 @@ void NonBlockingInvalidator::RequestDetailedStatus( |
} |
} |
-void NonBlockingInvalidator::OnInvalidatorStateChange(InvalidatorState state) { |
- DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- registrar_.UpdateInvalidatorState(state); |
-} |
- |
-void NonBlockingInvalidator::OnIncomingInvalidation( |
- const ObjectIdInvalidationMap& invalidation_map) { |
- DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
- registrar_.DispatchInvalidationsToHandlers(invalidation_map); |
-} |
- |
-std::string NonBlockingInvalidator::GetOwnerName() const { return "Sync"; } |
- |
NetworkChannelCreator |
NonBlockingInvalidator::MakePushClientChannelCreator( |
const notifier::NotifierOptions& notifier_options) { |
@@ -326,4 +315,53 @@ NetworkChannelCreator NonBlockingInvalidator::MakeGCMNetworkChannelCreator( |
base::Passed(&delegate)); |
} |
+void NonBlockingInvalidator::ClearAndSetNewClientId(const std::string& data) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ invalidation_state_tracker_->ClearAndSetNewClientId(data); |
+} |
+ |
+std::string NonBlockingInvalidator::GetInvalidatorClientId() const { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ return invalidation_state_tracker_->GetInvalidatorClientId(); |
+} |
+ |
+void NonBlockingInvalidator::SetBootstrapData(const std::string& data) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ invalidation_state_tracker_->SetBootstrapData(data); |
+} |
+ |
+std::string NonBlockingInvalidator::GetBootstrapData() const { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ return invalidation_state_tracker_->GetBootstrapData(); |
+} |
+ |
+void NonBlockingInvalidator::SetSavedInvalidations( |
+ const UnackedInvalidationsMap& states) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ invalidation_state_tracker_->SetSavedInvalidations(states); |
+} |
+ |
+UnackedInvalidationsMap NonBlockingInvalidator::GetSavedInvalidations() const { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ return invalidation_state_tracker_->GetSavedInvalidations(); |
+} |
+ |
+void NonBlockingInvalidator::Clear() { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ invalidation_state_tracker_->Clear(); |
+} |
+ |
+void NonBlockingInvalidator::OnInvalidatorStateChange(InvalidatorState state) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ registrar_.UpdateInvalidatorState(state); |
+} |
+ |
+void NonBlockingInvalidator::OnIncomingInvalidation( |
+ const ObjectIdInvalidationMap& invalidation_map) { |
+ DCHECK(parent_task_runner_->BelongsToCurrentThread()); |
+ registrar_.DispatchInvalidationsToHandlers(invalidation_map); |
+} |
+ |
+std::string NonBlockingInvalidator::GetOwnerName() const { return "Sync"; } |
+ |
} // namespace syncer |