Index: sync/engine/entity_tracker.h |
diff --git a/sync/engine/entity_tracker.h b/sync/engine/entity_tracker.h |
index db2d09bf3cf349841ecdb4102e5a30ebb234b043..e969ff97146fec5f791d2158e85e1de515186e35 100644 |
--- a/sync/engine/entity_tracker.h |
+++ b/sync/engine/entity_tracker.h |
@@ -8,8 +8,10 @@ |
#include <string> |
#include "base/basictypes.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/time/time.h" |
#include "sync/base/sync_export.h" |
+#include "sync/internal_api/public/non_blocking_sync_common.h" |
#include "sync/protocol/sync.pb.h" |
namespace syncer { |
@@ -81,6 +83,20 @@ class SYNC_EXPORT EntityTracker { |
// Handles receipt of an update from the server. |
void ReceiveUpdate(int64 version); |
+ // Handles the receipt of an pending update from the server. |
+ // |
+ // Returns true if the tracker decides this item is worth keeping. Returns |
+ // false if the item is discarded, which could happen if the version number |
+ // is out of date. |
+ bool ReceivePendingUpdate(const UpdateResponseData& data); |
+ |
+ // Functions to fetch the latest pending update. |
+ bool HasPendingUpdate() const; |
+ UpdateResponseData GetPendingUpdate() const; |
+ |
+ // Clears the pending update. Allows us to resume regular commit behavior. |
+ void ClearPendingUpdate(); |
+ |
private: |
// Initializes received update state. Does not initialize state related to |
// pending commits and sets |is_commit_pending_| to false. |
@@ -146,6 +162,11 @@ class SYNC_EXPORT EntityTracker { |
bool deleted_; |
sync_pb::EntitySpecifics specifics_; |
+ // An update for this item which can't be applied right now. The presence of |
+ // an pending update prevents commits. As of this writing, the only source |
+ // of pending updates is updates we can't decrypt right now. |
+ scoped_ptr<UpdateResponseData> pending_update_; |
+ |
DISALLOW_COPY_AND_ASSIGN(EntityTracker); |
}; |