blob: 870ea87c6d1cdaf648d1a7ec3a8a861c61c391a4 [file] [log] [blame]
// Copyright 2019 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 SRC_LEDGER_BIN_CLOCKS_IMPL_DEVICE_ID_MANAGER_IMPL_H_
#define SRC_LEDGER_BIN_CLOCKS_IMPL_DEVICE_ID_MANAGER_IMPL_H_
#include <string>
#include "src/ledger/bin/clocks/public/device_fingerprint_manager.h"
#include "src/ledger/bin/clocks/public/device_id_manager.h"
#include "src/ledger/bin/clocks/public/types.h"
#include "src/ledger/bin/environment/environment.h"
#include "src/ledger/bin/public/status.h"
#include "src/ledger/bin/storage/public/db.h"
#include "src/ledger/bin/synchronization/completer.h"
#include "src/ledger/lib/coroutine/coroutine.h"
namespace clocks {
class DeviceIdManagerImpl : public DeviceIdManager, public DeviceFingerprintManager {
public:
DeviceIdManagerImpl(ledger::Environment* environment, std::unique_ptr<storage::Db> db);
~DeviceIdManagerImpl() override;
// Asynchronously initializes this DeviceIdManager.
ledger::Status Init(coroutine::CoroutineHandler* handler);
// DeviceFingerprintManager:
ledger::Status GetDeviceFingerprint(coroutine::CoroutineHandler* handler,
DeviceFingerprint* device_fingerprint,
CloudUploadStatus* status) override;
ledger::Status SetDeviceFingerprintSynced(coroutine::CoroutineHandler* handler) override;
// DeviceIdManager:
ledger::Status OnPageDeleted(coroutine::CoroutineHandler* handler) override;
ledger::Status GetNewDeviceId(coroutine::CoroutineHandler* handler, DeviceId* device_id) override;
private:
// Private helper method for the public Init() method.
ledger::Status InternalInit(coroutine::CoroutineHandler* handler);
ledger::Environment* const environment_;
ledger::Completer initialization_completer_;
std::unique_ptr<storage::Db> db_;
DeviceFingerprint fingerprint_;
CloudUploadStatus upload_status_;
uint64_t counter_;
};
} // namespace clocks
#endif // SRC_LEDGER_BIN_CLOCKS_IMPL_DEVICE_ID_MANAGER_IMPL_H_