blob: 1698842b9757903df1357153e55768f8fc052789 [file] [log] [blame] [edit]
// Copyright 2023 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/status_macros.h"
#include <optional>
#include <utility>
#include <base/types/expected.h>
#include "missive/util/status.h"
namespace reporting::internal {
std::optional<Status> ShouldReturnStatus(const Status& status) {
return status.ok() ? std::optional<Status>(std::nullopt) : status;
}
std::optional<Status> ShouldReturnStatus(Status&& status) {
return status.ok() ? std::optional<Status>(std::nullopt) : std::move(status);
}
std::optional<base::unexpected<Status>> ShouldReturnStatus(
const base::unexpected<Status>& status) {
return status.error().ok()
? std::optional<base::unexpected<Status>>(std::nullopt)
: status;
}
std::optional<base::unexpected<Status>> ShouldReturnStatus(
base::unexpected<Status>&& status) {
return status.error().ok()
? std::optional<base::unexpected<Status>>(std::nullopt)
: std::move(status);
}
} // namespace reporting::internal