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