Chromium Code Reviews| Index: sync/notifier/sync_invalidation_listener.h |
| diff --git a/sync/notifier/sync_invalidation_listener.h b/sync/notifier/sync_invalidation_listener.h |
| index ed7f03143ccb8aafbf726819c57857bc0110a72d..a10d7c4e3aa3fca1bd57ac4728ffee0a5afe8236 100644 |
| --- a/sync/notifier/sync_invalidation_listener.h |
| +++ b/sync/notifier/sync_invalidation_listener.h |
| @@ -8,6 +8,7 @@ |
| #ifndef SYNC_NOTIFIER_SYNC_INVALIDATION_LISTENER_H_ |
| #define SYNC_NOTIFIER_SYNC_INVALIDATION_LISTENER_H_ |
| +#include <map> |
| #include <string> |
| #include "base/basictypes.h" |
| @@ -16,6 +17,8 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/threading/non_thread_safe.h" |
| +#include "base/time.h" |
| +#include "base/timer.h" |
| #include "google/cacheinvalidation/include/invalidation-listener.h" |
| #include "jingle/notifier/listener/push_client_observer.h" |
| #include "sync/internal_api/public/util/weak_handle.h" |
| @@ -74,7 +77,7 @@ class SyncInvalidationListener |
| create_invalidation_client_callback, |
| const std::string& client_id, const std::string& client_info, |
| const std::string& state, |
| - const InvalidationVersionMap& initial_max_invalidation_versions, |
| + const InvalidationStateMap& initial_invalidation_state_map, |
| const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker, |
| Delegate* delegate); |
| @@ -83,6 +86,9 @@ class 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); |
| + // TODO(dcheng): Add a comment. |
| + void Acknowledge(const invalidation::ObjectId& id, |
| + const AckHandle& ack_handle); |
| // invalidation::InvalidationListener implementation. |
| virtual void Ready( |
| @@ -130,18 +136,44 @@ class SyncInvalidationListener |
| void DoRegistrationUpdate(); |
| private: |
| + struct QueueEntry { |
| + QueueEntry(const invalidation::ObjectId& id, |
| + const std::string& payload, |
| + int retry_count) |
| + : id(id), payload(payload), retry_count(retry_count) { |
| + } |
| + |
| + invalidation::ObjectId id; |
| + std::string payload; |
| + int retry_count; |
| + }; |
| + typedef std::multimap<base::TimeTicks, QueueEntry> TimerQueue; |
|
Pete Williamson
2012/09/14 18:28:22
Is a multimap the right data structure here? I wo
dcheng
2012/09/14 19:08:49
std::priority_queue doesn't allow erasing arbitrar
|
| + |
| void Stop(); |
| InvalidatorState GetState() const; |
| void EmitStateChange(); |
| - void EmitInvalidation(const ObjectIdStateMap& id_state_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, |
| + const AckHandleMap* const local_ack_handles, |
| + invalidation::InvalidationClient* client, |
| + const invalidation::AckHandle& ack_handle); |
| + void RemitInvalidation(); |
| + |
| + base::WeakPtrFactory<SyncInvalidationListener> weak_ptr_factory_; |
| + base::OneShotTimer<SyncInvalidationListener> timer_; |
| + TimerQueue timer_queue_; |
| // Owned by |sync_system_resources_|. |
| notifier::PushClient* const push_client_; |
| SyncSystemResources sync_system_resources_; |
| - InvalidationVersionMap max_invalidation_versions_; |
| + InvalidationStateMap invalidation_state_map_; |
| WeakHandle<InvalidationStateTracker> invalidation_state_tracker_; |
| Delegate* delegate_; |
| scoped_ptr<invalidation::InvalidationClient> invalidation_client_; |