Home | History | Annotate | Download | only in invalidation
      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 COMPONENTS_INVALIDATION_ACK_HANDLE_H_
      6 #define COMPONENTS_INVALIDATION_ACK_HANDLE_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "base/time/time.h"
     13 #include "components/invalidation/invalidation_export.h"
     14 
     15 namespace base {
     16 class DictionaryValue;
     17 }
     18 
     19 namespace syncer {
     20 
     21 // Opaque class that represents a local ack handle. We don't reuse the
     22 // invalidation ack handles to avoid unnecessary dependencies.
     23 class INVALIDATION_EXPORT AckHandle {
     24  public:
     25   static AckHandle CreateUnique();
     26   static AckHandle InvalidAckHandle();
     27 
     28   bool Equals(const AckHandle& other) const;
     29 
     30   scoped_ptr<base::DictionaryValue> ToValue() const;
     31   bool ResetFromValue(const base::DictionaryValue& value);
     32 
     33   bool IsValid() const;
     34 
     35   ~AckHandle();
     36 
     37  private:
     38   // Explicitly copyable and assignable for STL containers.
     39   AckHandle(const std::string& state, base::Time timestamp);
     40 
     41   std::string state_;
     42   base::Time timestamp_;
     43 };
     44 
     45 }  // namespace syncer
     46 
     47 #endif  // COMPONENTS_INVALIDATION_ACK_HANDLE_H_
     48