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)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "sync/internal_api/public/events/get_updates_response_event.h"
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/strings/stringprintf.h"
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/protocol/proto_value_conversions.h"
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace syncer {
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)GetUpdatesResponseEvent::GetUpdatesResponseEvent(
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      base::Time timestamp,
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const sync_pb::ClientToServerResponse& response,
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      SyncerError error)
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  : timestamp_(timestamp),
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    response_(response),
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    error_(error) {
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)GetUpdatesResponseEvent::~GetUpdatesResponseEvent() {}
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)base::Time GetUpdatesResponseEvent::GetTimestamp() const {
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return timestamp_;
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)std::string GetUpdatesResponseEvent::GetType() const {
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return "GetUpdates Response";
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)std::string GetUpdatesResponseEvent::GetDetails() const {
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  switch (error_) {
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    case SYNCER_OK:
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      return base::StringPrintf("Received %d update(s).",
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                response_.get_updates().entries_size());
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    case SERVER_MORE_TO_DOWNLOAD:
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      return base::StringPrintf("Received %d update(s).  Some updates remain.",
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                response_.get_updates().entries_size());
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    default:
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      return base::StringPrintf("Received error: %s",
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                GetSyncerErrorString(error_));
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<base::DictionaryValue>
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)GetUpdatesResponseEvent::GetProtoMessage() const {
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return scoped_ptr<base::DictionaryValue>(
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ClientToServerResponseToValue(response_, false));
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<ProtocolEvent> GetUpdatesResponseEvent::Clone() const {
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return scoped_ptr<ProtocolEvent>(
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      new GetUpdatesResponseEvent(
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          timestamp_,
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          response_,
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          error_));
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace syncer
60