| Index: sync/notifier/sync_invalidation_listener.h
|
| diff --git a/sync/notifier/sync_invalidation_listener.h b/sync/notifier/sync_invalidation_listener.h
|
| index 345a671821ce14e5af412f0e2c6c87bca8811215..36135514608beafa048642c283057b5ccfebc310 100644
|
| --- a/sync/notifier/sync_invalidation_listener.h
|
| +++ b/sync/notifier/sync_invalidation_listener.h
|
| @@ -20,12 +20,17 @@
|
| #include "jingle/notifier/listener/push_client_observer.h"
|
| #include "sync/base/sync_export.h"
|
| #include "sync/internal_api/public/util/weak_handle.h"
|
| +#include "sync/notifier/ack_tracker.h"
|
| #include "sync/notifier/invalidation_state_tracker.h"
|
| #include "sync/notifier/invalidator_state.h"
|
| #include "sync/notifier/object_id_invalidation_map.h"
|
| #include "sync/notifier/state_writer.h"
|
| #include "sync/notifier/sync_system_resources.h"
|
|
|
| +namespace base {
|
| +class TickClock;
|
| +} // namespace base
|
| +
|
| namespace buzz {
|
| class XmppTaskParentInterface;
|
| } // namespace buzz
|
| @@ -44,7 +49,8 @@ class SYNC_EXPORT_PRIVATE SyncInvalidationListener
|
| : public NON_EXPORTED_BASE(invalidation::InvalidationListener),
|
| public StateWriter,
|
| public NON_EXPORTED_BASE(notifier::PushClientObserver),
|
| - public base::NonThreadSafe {
|
| + public base::NonThreadSafe,
|
| + public AckTracker::Delegate {
|
| public:
|
| typedef base::Callback<invalidation::InvalidationClient*(
|
| invalidation::SystemResources*,
|
| @@ -64,6 +70,7 @@ class SYNC_EXPORT_PRIVATE SyncInvalidationListener
|
| };
|
|
|
| explicit SyncInvalidationListener(
|
| + base::TickClock* tick_clock,
|
| scoped_ptr<notifier::PushClient> push_client);
|
|
|
| // Calls Stop().
|
| @@ -85,6 +92,9 @@ class SYNC_EXPORT_PRIVATE SyncInvalidationListener
|
| // Update the set of object IDs that we're interested in getting
|
| // notifications for. May be called at any time.
|
| void UpdateRegisteredIds(const ObjectIdSet& ids);
|
| + // Acknowledge that an invalidation for |id| was handled.
|
| + void Acknowledge(const invalidation::ObjectId& id,
|
| + const AckHandle& ack_handle);
|
|
|
| // invalidation::InvalidationListener implementation.
|
| virtual void Ready(
|
| @@ -131,6 +141,7 @@ class SYNC_EXPORT_PRIVATE SyncInvalidationListener
|
|
|
| void StopForTest();
|
| InvalidationStateMap GetStateMapForTest() const;
|
| + AckTracker* GetAckTrackerForTest();
|
|
|
| private:
|
| void Stop();
|
| @@ -139,7 +150,21 @@ class SYNC_EXPORT_PRIVATE SyncInvalidationListener
|
|
|
| void EmitStateChange();
|
|
|
| - void EmitInvalidation(const ObjectIdInvalidationMap& invalidation_map);
|
| + void PrepareInvalidation(const ObjectIdSet& ids,
|
| + const std::string& payload,
|
| + invalidation::InvalidationClient* client,
|
| + const invalidation::AckHandle& ack_handle);
|
| + void EmitInvalidation(const ObjectIdSet& ids,
|
| + const std::string& payload,
|
| + invalidation::InvalidationClient* client,
|
| + const invalidation::AckHandle& ack_handle,
|
| + const AckHandleMap& local_ack_handles);
|
| +
|
| + // AckTracker::Delegate implementation.
|
| + virtual void OnTimeout(const ObjectIdSet& ids) OVERRIDE;
|
| +
|
| + base::WeakPtrFactory<SyncInvalidationListener> weak_ptr_factory_;
|
| + AckTracker ack_tracker_;
|
|
|
| // Owned by |sync_system_resources_|.
|
| notifier::PushClient* const push_client_;
|
|
|