blob: a8d56ed7fbb946a2683c587b702609c12bc06614 [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.
#include "src/developer/forensics/testing/stubs/device_id_provider.h"
#include <lib/syslog/cpp/macros.h>
#include <zircon/errors.h>
namespace forensics {
namespace stubs {
void DeviceIdProviderBase::GetId(GetIdCallback callback) { GetIdInternal(std::move(callback)); }
void DeviceIdProviderBase::GetIdInternal(GetIdCallback callback) {
callback_ = std::move(callback);
if (!dirty_) {
dirty_ = true;
} else {
FX_CHECK(device_id_.has_value());
callback_(device_id_.value());
dirty_ = false;
}
}
void DeviceIdProviderBase::SetDeviceId(std::string device_id) {
device_id_ = std::move(device_id);
if (dirty_ && callback_) {
callback_(device_id_.value());
}
dirty_ = false;
}
void DeviceIdProvider::GetId(GetIdCallback callback) { GetIdInternal(std::move(callback)); }
DeviceIdProviderExpectsOneCall::~DeviceIdProviderExpectsOneCall() {
FX_CHECK(!is_first_) << "Too few calls made to GetId, expecting 1 call";
}
void DeviceIdProviderExpectsOneCall::GetId(GetIdCallback callback) {
FX_CHECK(is_first_) << "Too many calls made to GetId, expecting 1 call";
is_first_ = false;
GetIdInternal(std::move(callback));
}
void DeviceIdProviderClosesFirstConnection::GetId(GetIdCallback callback) {
if (is_first_) {
is_first_ = false;
CloseConnection();
return;
}
GetIdInternal(std::move(callback));
}
} // namespace stubs
} // namespace forensics