blob: 5cd6431f3a9caa6976e798bc793cb0b3853081a5 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "peridot/bin/ledger/sync_coordinator/impl/sync_watcher_converter.h"
#include <utility>
namespace sync_coordinator {
namespace {
DownloadSyncState ConvertToDownloadSyncState(
cloud_sync::DownloadSyncState download) {
switch (download) {
case cloud_sync::DOWNLOAD_NOT_STARTED:
return DownloadSyncState::DOWNLOAD_PENDING;
case cloud_sync::DOWNLOAD_BACKLOG:
return DownloadSyncState::DOWNLOAD_IN_PROGRESS;
case cloud_sync::DOWNLOAD_TEMPORARY_ERROR:
return DownloadSyncState::DOWNLOAD_PENDING;
case cloud_sync::DOWNLOAD_SETTING_REMOTE_WATCHER:
return DownloadSyncState::DOWNLOAD_IN_PROGRESS;
case cloud_sync::DOWNLOAD_IDLE:
return DownloadSyncState::DOWNLOAD_IDLE;
case cloud_sync::DOWNLOAD_IN_PROGRESS:
return DownloadSyncState::DOWNLOAD_IN_PROGRESS;
case cloud_sync::DOWNLOAD_PERMANENT_ERROR:
return DownloadSyncState::DOWNLOAD_ERROR;
}
}
UploadSyncState ConvertToUploadSyncState(cloud_sync::UploadSyncState upload) {
switch (upload) {
case cloud_sync::UPLOAD_NOT_STARTED:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_SETUP:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_IDLE:
return UploadSyncState::UPLOAD_IDLE;
case cloud_sync::UPLOAD_PENDING:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_WAIT_TOO_MANY_LOCAL_HEADS:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_WAIT_REMOTE_DOWNLOAD:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_TEMPORARY_ERROR:
return UploadSyncState::UPLOAD_PENDING;
case cloud_sync::UPLOAD_IN_PROGRESS:
return UploadSyncState::UPLOAD_IN_PROGRESS;
case cloud_sync::UPLOAD_PERMANENT_ERROR:
return UploadSyncState::UPLOAD_ERROR;
}
}
sync_coordinator::SyncStateWatcher::SyncStateContainer ConvertToSyncState(
cloud_sync::SyncStateWatcher::SyncStateContainer state) {
return {ConvertToDownloadSyncState(state.download),
ConvertToUploadSyncState(state.upload)};
}
} // namespace
SyncWatcherConverter::SyncWatcherConverter(
sync_coordinator::SyncStateWatcher* watcher)
: watcher_(watcher) {}
SyncWatcherConverter::~SyncWatcherConverter() {}
void SyncWatcherConverter::Notify(SyncStateContainer sync_state) {
watcher_->Notify(ConvertToSyncState(sync_state));
}
} // namespace sync_coordinator