blob: 005705d53b82ec300b2af0f3e7d68c69f5d5d706 [file] [log] [blame] [edit]
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "missive/util/statusor.h"
#include <utility>
#include <base/check.h>
#include <base/no_destructor.h>
#include <base/types/expected.h>
namespace reporting {
namespace internal {
ErrorStatus::ErrorStatus(const ErrorStatus&) = default;
ErrorStatus& ErrorStatus::operator=(const ErrorStatus&) = default;
ErrorStatus::ErrorStatus(ErrorStatus&&) = default;
ErrorStatus& ErrorStatus::operator=(ErrorStatus&&) = default;
ErrorStatus::~ErrorStatus() = default;
ErrorStatus::ErrorStatus(const Status& status) : Status(status) {
CHECK(!ok()) << "The status must not be OK";
}
ErrorStatus::ErrorStatus(Status&& status) : Status(std::move(status)) {
CHECK(!ok()) << "The status must not be OK";
}
} // namespace internal
base::unexpected<Status> CreateUnknownErrorStatusOr() {
static base::NoDestructor<base::unexpected<Status>> status_not_initialized(
Status(error::UNKNOWN, "Not initialized"));
return *status_not_initialized;
}
} // namespace reporting