| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sync/api/sync_error.h" | 5 #include "sync/api/sync_error.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 | 8 |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "sync/internal_api/public/base/model_type.h" | 11 #include "sync/internal_api/public/base/model_type.h" |
| 12 | 12 |
| 13 namespace syncer { | 13 namespace syncer { |
| 14 | 14 |
| 15 SyncError::SyncError() { | 15 SyncError::SyncError() { |
| 16 Clear(); | 16 Clear(); |
| 17 } | 17 } |
| 18 | 18 |
| 19 SyncError::SyncError(const tracked_objects::Location& location, | 19 SyncError::SyncError(const tracked_objects::Location& location, |
| 20 ErrorType error_type, | 20 ErrorType error_type, |
| 21 const std::string& custom_message, | 21 const std::string& message, |
| 22 ModelType model_type) { | 22 ModelType model_type) { |
| 23 std::string type_message; | 23 DCHECK(error_type != UNSET); |
| 24 switch (error_type) { | 24 Init(location, message, model_type, error_type); |
| 25 case UNRECOVERABLE_ERROR: | |
| 26 type_message = "unrecoverable error was encountered: "; | |
| 27 break; | |
| 28 case DATATYPE_ERROR: | |
| 29 type_message = "datatype error was encountered: "; | |
| 30 break; | |
| 31 case PERSISTENCE_ERROR: | |
| 32 type_message = "persistence error was encountered: "; | |
| 33 break; | |
| 34 case CRYPTO_ERROR: | |
| 35 type_message = "cryptographer error was encountered: "; | |
| 36 break; | |
| 37 case UNREADY_ERROR: | |
| 38 type_message = "unready error was encountered: "; | |
| 39 break; | |
| 40 case UNSET: | |
| 41 NOTREACHED() << "Invalid error type"; | |
| 42 return; | |
| 43 } | |
| 44 Init(location, type_message + custom_message, model_type, error_type); | |
| 45 PrintLogError(); | 25 PrintLogError(); |
| 46 } | 26 } |
| 47 | 27 |
| 48 SyncError::SyncError(const SyncError& other) { | 28 SyncError::SyncError(const SyncError& other) { |
| 49 Copy(other); | 29 Copy(other); |
| 50 } | 30 } |
| 51 | 31 |
| 52 SyncError::~SyncError() { | 32 SyncError::~SyncError() { |
| 53 } | 33 } |
| 54 | 34 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 ModelType SyncError::model_type() const { | 93 ModelType SyncError::model_type() const { |
| 114 CHECK(IsSet()); | 94 CHECK(IsSet()); |
| 115 return model_type_; | 95 return model_type_; |
| 116 } | 96 } |
| 117 | 97 |
| 118 SyncError::ErrorType SyncError::error_type() const { | 98 SyncError::ErrorType SyncError::error_type() const { |
| 119 CHECK(IsSet()); | 99 CHECK(IsSet()); |
| 120 return error_type_; | 100 return error_type_; |
| 121 } | 101 } |
| 122 | 102 |
| 103 SyncError::Severity SyncError::GetSeverity() const { |
| 104 switch (error_type_) { |
| 105 case UNREADY_ERROR: |
| 106 case DATATYPE_POLICY_ERROR: |
| 107 return SYNC_ERROR_SEVERITY_INFO; |
| 108 default: |
| 109 return SYNC_ERROR_SEVERITY_ERROR; |
| 110 } |
| 111 } |
| 112 |
| 113 std::string SyncError::GetMessagePrefix() const { |
| 114 std::string type_message; |
| 115 switch (error_type_) { |
| 116 case UNRECOVERABLE_ERROR: |
| 117 type_message = "unrecoverable error was encountered: "; |
| 118 break; |
| 119 case DATATYPE_ERROR: |
| 120 type_message = "datatype error was encountered: "; |
| 121 break; |
| 122 case PERSISTENCE_ERROR: |
| 123 type_message = "persistence error was encountered: "; |
| 124 break; |
| 125 case CRYPTO_ERROR: |
| 126 type_message = "cryptographer error was encountered: "; |
| 127 break; |
| 128 case UNREADY_ERROR: |
| 129 type_message = "unready error was encountered: "; |
| 130 break; |
| 131 case DATATYPE_POLICY_ERROR: |
| 132 type_message = "disabled due to configuration constraints: "; |
| 133 break; |
| 134 case UNSET: |
| 135 NOTREACHED() << "Invalid error type"; |
| 136 break; |
| 137 } |
| 138 return type_message; |
| 139 } |
| 140 |
| 123 std::string SyncError::ToString() const { | 141 std::string SyncError::ToString() const { |
| 124 if (!IsSet()) { | 142 if (!IsSet()) { |
| 125 return std::string(); | 143 return std::string(); |
| 126 } | 144 } |
| 127 return location_->ToString() + ", " + ModelTypeToString(model_type_) + | 145 return location_->ToString() + ", " + ModelTypeToString(model_type_) + |
| 128 " " + message_; | 146 " " + GetMessagePrefix() + message_; |
| 129 } | 147 } |
| 130 | 148 |
| 131 void SyncError::PrintLogError() const { | 149 void SyncError::PrintLogError() const { |
| 150 logging::LogSeverity logSeverity = |
| 151 (GetSeverity() == SYNC_ERROR_SEVERITY_INFO) |
| 152 ? logging::LOG_INFO : logging::LOG_ERROR; |
| 153 |
| 132 LAZY_STREAM(logging::LogMessage(location_->file_name(), | 154 LAZY_STREAM(logging::LogMessage(location_->file_name(), |
| 133 location_->line_number(), | 155 location_->line_number(), |
| 134 logging::LOG_ERROR).stream(), | 156 logSeverity).stream(), |
| 135 LOG_IS_ON(ERROR)) | 157 logSeverity >= ::logging::GetMinLogLevel()) |
| 136 << ModelTypeToString(model_type_) << " " << message_; | 158 << ModelTypeToString(model_type_) << " " |
| 159 << GetMessagePrefix() << message_; |
| 137 } | 160 } |
| 138 | 161 |
| 139 void PrintTo(const SyncError& sync_error, std::ostream* os) { | 162 void PrintTo(const SyncError& sync_error, std::ostream* os) { |
| 140 *os << sync_error.ToString(); | 163 *os << sync_error.ToString(); |
| 141 } | 164 } |
| 142 | 165 |
| 143 } // namespace syncer | 166 } // namespace syncer |
| OLD | NEW |