OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ | 5 #ifndef SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ |
6 #define SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ | 6 #define SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 // Factory functions. | 28 // Factory functions. |
29 static Invalidation Init( | 29 static Invalidation Init( |
30 const invalidation::ObjectId& id, | 30 const invalidation::ObjectId& id, |
31 int64 version, | 31 int64 version, |
32 const std::string& payload); | 32 const std::string& payload); |
33 static Invalidation InitUnknownVersion(const invalidation::ObjectId& id); | 33 static Invalidation InitUnknownVersion(const invalidation::ObjectId& id); |
34 static Invalidation InitFromDroppedInvalidation(const Invalidation& dropped); | 34 static Invalidation InitFromDroppedInvalidation(const Invalidation& dropped); |
35 static scoped_ptr<Invalidation> InitFromValue( | 35 static scoped_ptr<Invalidation> InitFromValue( |
36 const base::DictionaryValue& value); | 36 const base::DictionaryValue& value); |
37 | 37 |
| 38 Invalidation(const Invalidation& other); |
38 ~Invalidation(); | 39 ~Invalidation(); |
39 | 40 |
40 // Compares two invalidations. The comparison ignores ack-tracking state. | 41 // Compares two invalidations. The comparison ignores ack-tracking state. |
41 bool Equals(const Invalidation& other) const; | 42 bool Equals(const Invalidation& other) const; |
42 | 43 |
43 invalidation::ObjectId object_id() const; | 44 invalidation::ObjectId object_id() const; |
44 bool is_unknown_version() const; | 45 bool is_unknown_version() const; |
45 | 46 |
46 // Safe to call only if is_unknown_version() returns false. | 47 // Safe to call only if is_unknown_version() returns false. |
47 int64 version() const; | 48 int64 version() const; |
(...skipping 29 matching lines...) Expand all Loading... |
77 // re-deliver this invalidation in the event of a crash or restart. | 78 // re-deliver this invalidation in the event of a crash or restart. |
78 void Acknowledge() const; | 79 void Acknowledge() const; |
79 | 80 |
80 // Informs the ack tracker that this invalidation will not be serviced. | 81 // Informs the ack tracker that this invalidation will not be serviced. |
81 // | 82 // |
82 // If a client's buffer reaches its limit and it is forced to start dropping | 83 // If a client's buffer reaches its limit and it is forced to start dropping |
83 // invalidations, it should call this function before dropping its | 84 // invalidations, it should call this function before dropping its |
84 // invalidations in order to allow the ack tracker to drop the invalidation, | 85 // invalidations in order to allow the ack tracker to drop the invalidation, |
85 // too. | 86 // too. |
86 // | 87 // |
87 // The drop record will be tracked by the specified | 88 // To indicate recovery from a drop event, the client should call |
88 // DroppedInvalidationTracker. The caller should hang on to this tracker. It | 89 // Acknowledge() on the most recently dropped inavlidation. |
89 // will need to use it when it recovers from this drop event, or if it needs | 90 void Drop(); |
90 // to record another drop event for the same ObjectID. Refer to the | |
91 // documentation of DroppedInvalidationTracker for more details. | |
92 void Drop(DroppedInvalidationTracker* tracker) const; | |
93 | 91 |
94 scoped_ptr<base::DictionaryValue> ToValue() const; | 92 scoped_ptr<base::DictionaryValue> ToValue() const; |
95 std::string ToString() const; | 93 std::string ToString() const; |
96 | 94 |
97 private: | 95 private: |
98 Invalidation(const invalidation::ObjectId& id, | 96 Invalidation(const invalidation::ObjectId& id, |
99 bool is_unknown_version, | 97 bool is_unknown_version, |
100 int64 version, | 98 int64 version, |
101 const std::string& payload, | 99 const std::string& payload, |
102 AckHandle ack_handle); | 100 AckHandle ack_handle); |
(...skipping 13 matching lines...) Expand all Loading... |
116 std::string payload_; | 114 std::string payload_; |
117 | 115 |
118 // A locally generated unique ID used to manage local acknowledgements. | 116 // A locally generated unique ID used to manage local acknowledgements. |
119 AckHandle ack_handle_; | 117 AckHandle ack_handle_; |
120 syncer::WeakHandle<AckHandler> ack_handler_; | 118 syncer::WeakHandle<AckHandler> ack_handler_; |
121 }; | 119 }; |
122 | 120 |
123 } // namespace syncer | 121 } // namespace syncer |
124 | 122 |
125 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ | 123 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_H_ |
OLD | NEW |