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_; |