1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_INTERFACE_H_ 6 #define SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_INTERFACE_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "sync/base/sync_export.h" 12 13 namespace syncer { 14 15 // An interface that wraps sync's interactions with the component that provides 16 // it with invalidations. 17 class SYNC_EXPORT InvalidationInterface { 18 public: 19 // Orders invalidations based on version number and IsUnknownVersion(). 20 static bool LessThanByVersion(const InvalidationInterface& a, 21 const InvalidationInterface& b); 22 23 InvalidationInterface(); 24 virtual ~InvalidationInterface(); 25 26 // Returns true if this is an 'unknown version' invalidation. 27 // Such invalidations have no valid payload or version number. 28 virtual bool IsUnknownVersion() const = 0; 29 30 // Returns the payload of this item. 31 // DCHECKs if this is an unknown version invalidation. 32 virtual const std::string& GetPayload() const = 0; 33 34 // Retursn the version of this item. 35 // DCHECKs if this is an unknown version invalidation. 36 // 37 // It is preferable to use the LessThan() function, which handles unknown 38 // versions properly, rather than this function. 39 virtual int64 GetVersion() const = 0; 40 41 // This function will be called when the invalidation has been handled 42 // successfully. 43 virtual void Acknowledge() = 0; 44 45 // This function should be called if a lack of buffer space required that we 46 // drop this invalidation. 47 // 48 // To indicate recovery from a drop event, the receiver of this invalidation 49 // will call Acknowledge() on the most recently dropped invalidation. 50 virtual void Drop() = 0; 51 }; 52 53 } // namespace syncer 54 55 #endif 56