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

Unified Diff: sync/notifier/invalidation_state_tracker.h

Issue 11415049: Implement features needed for local ack handling in InvalidationStateTracker. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month 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/invalidation_state_tracker.h
diff --git a/sync/notifier/invalidation_state_tracker.h b/sync/notifier/invalidation_state_tracker.h
index 259ac83fb36ee41b8fd59a1db940655369e41ca3..23029a4a4f09004a942a544b74aabf43d5342da5 100644
--- a/sync/notifier/invalidation_state_tracker.h
+++ b/sync/notifier/invalidation_state_tracker.h
@@ -2,22 +2,40 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
-// An InvalidationVersionTracker is an interface that handles getting
-// and setting (persisting) max invalidation versions.
+// An InvalidationStateTracker is an interface that handles persisting state
+// needed for invalidations. Currently, it is responsible for managing the
+// following information:
+// - Max version and payload seen from the invalidation server.
+// - Bootstrap data for the invalidation client.
+// - Locally generated ack handles.
#ifndef SYNC_NOTIFIER_INVALIDATION_STATE_TRACKER_H_
#define SYNC_NOTIFIER_INVALIDATION_STATE_TRACKER_H_
#include <map>
+#include <string>
#include "base/basictypes.h"
+#include "base/callback_forward.h"
+#include "base/memory/ref_counted.h"
#include "google/cacheinvalidation/include/types.h"
+#include "sync/internal_api/public/base/invalidation.h"
#include "sync/notifier/invalidation_util.h"
+namespace base {
+class TaskRunner;
+} // namespace base
+
namespace syncer {
struct InvalidationState {
+ InvalidationState();
+ ~InvalidationState();
+
int64 version;
+ std::string payload;
+ AckHandle expected;
+ AckHandle current;
};
// TODO(dcheng): Remove this in favor of adding an Equals() method.
@@ -25,6 +43,8 @@ bool operator==(const InvalidationState& lhs, const InvalidationState& rhs);
typedef std::map<invalidation::ObjectId, InvalidationState, ObjectIdLessThan>
InvalidationStateMap;
+typedef std::map<invalidation::ObjectId, AckHandle, ObjectIdLessThan>
+ AckHandleMap;
class InvalidationStateTracker {
public:
@@ -34,8 +54,9 @@ class InvalidationStateTracker {
// |max_version| should be strictly greater than any existing max
// version for |model_type|.
- virtual void SetMaxVersion(const invalidation::ObjectId& id,
- int64 max_version) = 0;
+ virtual void SetMaxVersionAndPayload(const invalidation::ObjectId& id,
+ int64 max_version,
+ const std::string& payload) = 0;
// Removes all state tracked for |ids|.
virtual void Forget(const ObjectIdSet& ids) = 0;
@@ -46,6 +67,16 @@ class InvalidationStateTracker {
virtual void SetBootstrapData(const std::string& data) = 0;
virtual std::string GetBootstrapData() const = 0;
+ // Used for generating our own local ack handles. Generates a new ack handle
+ // for each object id in |ids|. The result is returned via |callback| posted
+ // to |task_runner|.
+ virtual void GenerateAckHandles(
+ const ObjectIdSet& ids,
+ const scoped_refptr<base::TaskRunner>& task_runner,
+ base::Callback<void(const AckHandleMap&)> callback) = 0;
+ virtual void Acknowledge(const invalidation::ObjectId& id,
akalin 2012/11/28 00:11:42 newline before, add comment?
dcheng 2012/11/30 01:42:54 Done.
+ const AckHandle& ack_handle) = 0;
+
protected:
virtual ~InvalidationStateTracker() {}
};

Powered by Google App Engine
This is Rietveld 408576698