// Copyright 2016 The Chromium 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 COMPONENTS_NTP_SNIPPETS_STATUS_H_ #define COMPONENTS_NTP_SNIPPETS_STATUS_H_ #include namespace ntp_snippets { // This enum indicates how an operation was completed. These values are written // to logs. New enum values can be added, but existing enums must never be // renumbered or deleted and reused. enum class StatusCode { // The operation has been completed successfully. SUCCESS = 0, // The operation failed but retrying might solve the error. TEMPORARY_ERROR = 1, // The operation failed and would fail again if retried. PERMANENT_ERROR = 2, STATUS_CODE_COUNT }; // This struct provides the status code of a request and an optional message // describing the status (esp. failures) in detail. struct Status { Status(StatusCode status_code, const std::string& message); ~Status(); // Errors always need a message but a success does not. static Status Success(); bool IsSuccess() const { return code == StatusCode::SUCCESS; } StatusCode code; // The message is not meant to be displayed to the user. std::string message; // Copy and assignment allowed. }; } // namespace ntp_snippets #endif // COMPONENTS_NTP_SNIPPETS_STATUS_H_