| // Copyright 2013 The Flutter 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 FLUTTER_FML_STATUS_H_ | |
| #define FLUTTER_FML_STATUS_H_ | |
| #include <string_view> | |
| namespace fml { | |
| enum class StatusCode { | |
| kOk, | |
| kCancelled, | |
| kUnknown, | |
| kInvalidArgument, | |
| kDeadlineExceeded, | |
| kNotFound, | |
| kAlreadyExists, | |
| kPermissionDenied, | |
| kResourceExhausted, | |
| kFailedPrecondition, | |
| kAborted, | |
| kOutOfRange, | |
| kUnimplemented, | |
| kInternal, | |
| kUnavailable, | |
| kDataLoss, | |
| kUnauthenticated | |
| }; | |
| /// Class that represents the resolution of the execution of a procedure. This | |
| /// is used similarly to how exceptions might be used, typically as the return | |
| /// value to a synchronous procedure or an argument to an asynchronous callback. | |
| class Status final { | |
| public: | |
| /// Creates an 'ok' status. | |
| Status(); | |
| Status(fml::StatusCode code, std::string_view message); | |
| fml::StatusCode code() const; | |
| /// A noop that helps with static analysis tools if you decide to ignore an | |
| /// error. | |
| void IgnoreError() const; | |
| /// @return 'true' when the code is kOk. | |
| bool ok() const; | |
| std::string_view message() const; | |
| private: | |
| fml::StatusCode code_; | |
| std::string_view message_; | |
| }; | |
| inline Status::Status() : code_(fml::StatusCode::kOk), message_() {} | |
| inline Status::Status(fml::StatusCode code, std::string_view message) | |
| : code_(code), message_(message) {} | |
| inline fml::StatusCode Status::code() const { | |
| return code_; | |
| } | |
| inline void Status::IgnoreError() const { | |
| // noop | |
| } | |
| inline bool Status::ok() const { | |
| return code_ == fml::StatusCode::kOk; | |
| } | |
| inline std::string_view Status::message() const { | |
| return message_; | |
| } | |
| } // namespace fml | |
| #endif // FLUTTER_FML_STATUS_H_ |