12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // Copyright 2012 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_SYNC_BASE_SYNCER_ERROR_H_
- #define COMPONENTS_SYNC_BASE_SYNCER_ERROR_H_
- #include <string>
- namespace syncer {
- // This class describes all the possible results of a sync cycle. It should be
- // passed by value.
- class SyncerError {
- public:
- // This enum should be in sync with SyncerErrorValues in enums.xml. These
- // values are persisted to logs. Entries should not be renumbered and numeric
- // values should never be reused.
- enum Value {
- UNSET = 0, // Default value.
- CANNOT_DO_WORK = 1, // A model worker could not process a work item.
- NETWORK_CONNECTION_UNAVAILABLE = 2, // Connectivity failure.
- NETWORK_IO_ERROR = 3, // Response buffer read error.
- SYNC_SERVER_ERROR = 4, // Non auth HTTP error.
- SYNC_AUTH_ERROR = 5, // HTTP auth error.
- // Based on values returned by server. Most are defined in sync.proto.
- // Deprecated: SERVER_RETURN_INVALID_CREDENTIAL = 6,
- SERVER_RETURN_UNKNOWN_ERROR = 7,
- SERVER_RETURN_THROTTLED = 8,
- SERVER_RETURN_TRANSIENT_ERROR = 9,
- SERVER_RETURN_MIGRATION_DONE = 10,
- SERVER_RETURN_CLEAR_PENDING = 11,
- SERVER_RETURN_NOT_MY_BIRTHDAY = 12,
- SERVER_RETURN_CONFLICT = 13,
- SERVER_RESPONSE_VALIDATION_FAILED = 14,
- SERVER_RETURN_DISABLED_BY_ADMIN = 15,
- // Deprecated: SERVER_RETURN_USER_ROLLBACK = 16,
- SERVER_RETURN_PARTIAL_FAILURE = 17,
- SERVER_RETURN_CLIENT_DATA_OBSOLETE = 18,
- SERVER_RETURN_ENCRYPTION_OBSOLETE = 19,
- // A datatype decided the sync cycle needed to be performed again.
- DATATYPE_TRIGGERED_RETRY = 20,
- SERVER_MORE_TO_DOWNLOAD = 21,
- SYNCER_OK = 22,
- kMaxValue = SYNCER_OK,
- };
- constexpr SyncerError() = default;
- // Note: NETWORK_CONNECTION_UNAVAILABLE, SYNC_SERVER_ERROR, and
- // SYNC_AUTH_ERROR are *not* valid inputs for this constructor. These types
- // of errors must be created via the factory functions below.
- explicit SyncerError(Value value);
- static SyncerError NetworkConnectionUnavailable(int net_error_code);
- static SyncerError HttpError(int http_status_code);
- Value value() const { return value_; }
- std::string ToString() const;
- // Helper to check that |error| is set to something (not UNSET) and is not
- // SYNCER_OK or SERVER_MORE_TO_DOWNLOAD.
- bool IsActualError() const;
- private:
- constexpr SyncerError(Value value, int net_error_code, int http_status_code)
- : value_(value),
- net_error_code_(net_error_code),
- http_status_code_(http_status_code) {}
- Value value_ = UNSET;
- // TODO(crbug.com/947443): Consider storing the actual enums.
- int net_error_code_ = 0;
- int http_status_code_ = 0;
- };
- } // namespace syncer
- #endif // COMPONENTS_SYNC_BASE_SYNCER_ERROR_H_
|