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_SYNC_ENGINE_IMPL_EVENTS_COMMIT_RESPONSE_EVENT_H_
6 #define COMPONENTS_SYNC_ENGINE_IMPL_EVENTS_COMMIT_RESPONSE_EVENT_H_
7 
8 #include <cstddef>
9 #include <memory>
10 #include <string>
11 
12 #include "base/macros.h"
13 #include "base/time/time.h"
14 #include "base/values.h"
15 #include "components/sync/base/syncer_error.h"
16 #include "components/sync/engine/events/protocol_event.h"
17 #include "components/sync/protocol/sync.pb.h"
18 
19 namespace syncer {
20 
21 // An event representing a commit response event from the server.
22 class CommitResponseEvent : public ProtocolEvent {
23  public:
24   CommitResponseEvent(base::Time timestamp,
25                       SyncerError result,
26                       const sync_pb::ClientToServerResponse& response);
27   ~CommitResponseEvent() override;
28   std::unique_ptr<ProtocolEvent> Clone() const override;
29 
30  private:
31   base::Time GetTimestamp() const override;
32   std::string GetType() const override;
33   std::string GetDetails() const override;
34   std::unique_ptr<base::DictionaryValue> GetProtoMessage(
35       bool include_specifics) const override;
36 
37   static std::unique_ptr<base::DictionaryValue> ToValue(
38       const ProtocolEvent& event);
39 
40   const base::Time timestamp_;
41   const SyncerError result_;
42   const sync_pb::ClientToServerResponse response_;
43 
44   DISALLOW_COPY_AND_ASSIGN(CommitResponseEvent);
45 };
46 
47 }  // namespace syncer
48 
49 #endif  // COMPONENTS_SYNC_ENGINE_IMPL_EVENTS_COMMIT_RESPONSE_EVENT_H_
50