Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: sync/notifier/sync_invalidation_listener.h

Issue 10911084: Implement Invalidator::Acknowledge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698