blob: ed243af70051efbcd455ce9fb40d8ba1c6b8da77 [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.
#ifndef PERIDOT_BIN_LEDGER_SYNC_COORDINATOR_IMPL_LEDGER_SYNC_IMPL_H_
#define PERIDOT_BIN_LEDGER_SYNC_COORDINATOR_IMPL_LEDGER_SYNC_IMPL_H_
#include <functional>
#include <memory>
#include <lib/fit/function.h>
#include "peridot/bin/ledger/cloud_sync/public/ledger_sync.h"
#include "peridot/bin/ledger/p2p_sync/public/ledger_communicator.h"
#include "peridot/bin/ledger/storage/public/page_storage.h"
#include "peridot/bin/ledger/sync_coordinator/public/ledger_sync.h"
#include "peridot/bin/ledger/sync_coordinator/public/page_sync.h"
namespace sync_coordinator {
class LedgerSyncImpl : public LedgerSync {
public:
LedgerSyncImpl(std::unique_ptr<cloud_sync::LedgerSync> cloud_sync,
std::unique_ptr<p2p_sync::LedgerCommunicator> p2p_sync);
~LedgerSyncImpl() override;
// LedgerSync:
std::unique_ptr<PageSync> CreatePageSync(
storage::PageStorage* page_storage,
storage::PageSyncClient* page_sync_client) override;
private:
std::unique_ptr<cloud_sync::LedgerSync> const cloud_sync_;
std::unique_ptr<p2p_sync::LedgerCommunicator> const p2p_sync_;
};
} // namespace sync_coordinator
#endif // PERIDOT_BIN_LEDGER_SYNC_COORDINATOR_IMPL_LEDGER_SYNC_IMPL_H_