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