Home | History | Annotate | Download | only in base
      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