1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file.
41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef COMPONENTS_INVALIDATION_ACK_HANDLER_H_
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define COMPONENTS_INVALIDATION_ACK_HANDLER_H_
71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include <vector>
91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/invalidation/invalidation_export.h"
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace invalidation {
131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class ObjectId;
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}  // namespace invalidation
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace syncer {
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class AckHandle;
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// An interface for classes that keep track of invalidation acknowledgements.
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)//
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// We don't expect to support more than one "real" implementation of AckHandler,
231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// but this interface is very useful for testing and implementation hiding.
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class INVALIDATION_EXPORT AckHandler {
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public:
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AckHandler();
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual ~AckHandler() = 0;
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Record the local acknowledgement of an invalidation identified by |handle|.
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Acknowledge(const invalidation::ObjectId& id,
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                           const AckHandle& handle) = 0;
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Record the drop of an invalidation identified by |handle|.
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Drop(const invalidation::ObjectId& id,
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                    const AckHandle& handle) = 0;
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)};
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}  // namespace syncer
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // COMPONENTS_INVALIDATION_ACK_HANDLER_H_
41