1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_INTERFACE_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_INTERFACE_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/basictypes.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "sync/base/sync_export.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace syncer { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// An interface that wraps sync's interactions with the component that provides 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// it with invalidations. 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SYNC_EXPORT InvalidationInterface { 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Orders invalidations based on version number and IsUnknownVersion(). 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static bool LessThanByVersion(const InvalidationInterface& a, 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const InvalidationInterface& b); 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch InvalidationInterface(); 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~InvalidationInterface(); 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if this is an 'unknown version' invalidation. 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Such invalidations have no valid payload or version number. 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsUnknownVersion() const = 0; 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the payload of this item. 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // DCHECKs if this is an unknown version invalidation. 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual const std::string& GetPayload() const = 0; 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Retursn the version of this item. 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // DCHECKs if this is an unknown version invalidation. 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // It is preferable to use the LessThan() function, which handles unknown 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // versions properly, rather than this function. 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int64 GetVersion() const = 0; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // This function will be called when the invalidation has been handled 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // successfully. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Acknowledge() = 0; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // This function should be called if a lack of buffer space required that we 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // drop this invalidation. 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // To indicate recovery from a drop event, the receiver of this invalidation 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // will call Acknowledge() on the most recently dropped invalidation. 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Drop() = 0; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace syncer 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 56