123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef SYNC_INTERNAL_API_EVENTS_COMMIT_REQUEST_EVENT_H
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define SYNC_INTERNAL_API_EVENTS_COMMIT_REQUEST_EVENT_H
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include <cstddef>
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/time/time.h"
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/values.h"
13e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "sync/base/sync_export.h"
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/internal_api/public/base/model_type.h"
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/internal_api/public/events/protocol_event.h"
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/protocol/sync.pb.h"
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace syncer {
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// An event representing a commit request message sent to the server.
21e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochclass SYNC_EXPORT_PRIVATE CommitRequestEvent : public ProtocolEvent {
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public:
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  CommitRequestEvent(
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      base::Time timestamp,
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      size_t num_items,
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ModelTypeSet contributing_types,
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const sync_pb::ClientToServerMessage& request);
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual ~CommitRequestEvent();
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual base::Time GetTimestamp() const OVERRIDE;
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual std::string GetType() const OVERRIDE;
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual std::string GetDetails() const OVERRIDE;
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual scoped_ptr<base::DictionaryValue> GetProtoMessage() const OVERRIDE;
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual scoped_ptr<ProtocolEvent> Clone() const OVERRIDE;
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  static scoped_ptr<base::DictionaryValue> ToValue(
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const ProtocolEvent& event);
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private:
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  const base::Time timestamp_;
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  const size_t num_items_;
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  const ModelTypeSet contributing_types_;
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  const sync_pb::ClientToServerMessage request_;
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(CommitRequestEvent);
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)};
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace syncer
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif  // SYNC_INTERNAL_API_EVENTS_COMMIT_REQUEST_EVENT_H
51