| // 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 |