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

Unified Diff: sync/internal_api/public/base/invalidation.h

Issue 56113003: Implement new invalidations ack tracking system (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 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/internal_api/public/base/invalidation.h
diff --git a/sync/internal_api/public/base/invalidation.h b/sync/internal_api/public/base/invalidation.h
index 472f552972a47529d2aad96aa23268b72d93a3bf..cf26112e2244839b056c5fa0906b45cb46afe58d 100644
--- a/sync/internal_api/public/base/invalidation.h
+++ b/sync/internal_api/public/base/invalidation.h
@@ -51,20 +51,43 @@ class SYNC_EXPORT Invalidation {
const AckHandle& ack_handle() const;
- // TODO(rlarocque): Remove this method and use AckHandlers instead.
- void set_ack_handle(const AckHandle& ack_handle);
-
- // Functions from the alternative ack tracking framework.
- // Currently unused.
+ // Sets the AckHandler to be used to track this Invalidation.
+ //
+ // This should be set by the class that generates the invalidation. Clients
+ // of the Invalidations API should not need to call this.
tim (not reviewing) 2013/11/18 21:59:05 This comment makes it sound like this could go in
rlarocque 2013/11/19 00:35:49 Almost, but not quite. The UnackedInvalidationSet
+ //
+ // Note that some sources of invalidations do not support ack tracking, and do
+ // not set the ack_handler. This will be hidden from users of this class.
void set_ack_handler(syncer::WeakHandle<AckHandler> ack_handler);
+
+ // Returns whether or not this instance supports ack tracking. This will
+ // depend on whether or not the source of invaliadations supports
+ // invalidations.
+ //
+ // Clients can safely ignore this flag. They can assume that all
+ // invalidations support ack tracking. If they're wrong, then invalidations
+ // will be less reliable, but their behavior will be no less correct.
bool SupportsAcknowledgement() const;
+
+ // Acknowledges the receipt of this invalidation.
+ //
+ // Clients should call this on a received invalidation when they have fully
+ // processed the invalidation and persisted the results to disk. Once this
+ // function is called, the invalidations system is under no obligation to
+ // re-deliver this invalidation in the event of a crash or restart.
void Acknowledge() const;
- // Drops an invalidation.
+ // Informs the ack tracker that this invalidation will not be serviced.
+ //
+ // If a client's buffer reaches its limit and it is forced to start dropping
+ // invalidations, it should call this function before dropping its
+ // invalidations in order to allow the ack tracker to drop the invalidation,
+ // too.
//
// The drop record will be tracked by the specified
// DroppedInvalidationTracker. The caller should hang on to this tracker. It
- // will need to use it when it recovers from this drop event. See the
+ // will need to use it when it recovers from this drop event, or if it needs
+ // to record another drop event for the same ObjectID. Refer to the
// documentation of DroppedInvalidationTracker for more details.
void Drop(DroppedInvalidationTracker* tracker) const;

Powered by Google App Engine
This is Rietveld 408576698