| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| #import "TError.h" |
| |
| |
| extern NSString *TProtocolErrorDomain; |
| |
| typedef NS_ENUM (int, TProtocolError) { |
| TProtocolErrorUnknown = 0, |
| TProtocolErrorInvalidData = 1, |
| TProtocolErrorNegativeSize = 2, |
| TProtocolErrorSizeLimit = 3, |
| TProtocolErrorBadVersion = 4, |
| TProtocolErrorNotImplemented = 5, |
| TProtocolErrorDepthLimit = 6, |
| }; |
| |
| |
| typedef NS_ENUM(int, TProtocolExtendedError) { |
| TProtocolExtendedErrorMissingRequiredField = 1001, |
| TProtocolExtendedErrorUnexpectedType = 1002, |
| TProtocolExtendedErrorMismatchedProtocol = 1003, |
| }; |
| |
| extern NSString *TProtocolErrorExtendedErrorKey; |
| extern NSString *TProtocolErrorFieldNameKey; |
| extern NSString *TProtocolErrorExpectedIdKey; |
| extern NSString *TProtocolErrorExpectedVersionKey; |
| extern NSString *TProtocolErrorTypeKey; |
| extern NSString *TProtocolErrorSourceLineKey; |
| extern NSString *TProtocolErrorSourceFileKey; |
| extern NSString *TProtocolErrorSourceMethodKey; |
| extern NSString *TProtocolErrorMessageNameKey; |
| |
| |
| #define PROTOCOL_ERROR(ret, err, ...) \ |
| if (error) { \ |
| *error = [NSError errorWithDomain:TProtocolErrorDomain \ |
| code:TProtocolError ## err \ |
| userInfo:@{NSLocalizedDescriptionKey: [NSString stringWithFormat:__VA_ARGS__], \ |
| @"SourceFile": [NSString stringWithUTF8String:__FILE__], \ |
| @"SourceLine": @(__LINE__), \ |
| @"SourceFunction": [NSString stringWithUTF8String:__PRETTY_FUNCTION__], \ |
| @"Message": self.currentMessageName ? self.currentMessageName : @""}]; \ |
| } \ |
| return ret |
| |
| #define PROTOCOL_TRANSPORT_ERROR(ret, errorPtr, ...) \ |
| if (errorPtr) { \ |
| *error = [NSError errorWithDomain:TProtocolErrorDomain \ |
| code:TProtocolErrorUnknown \ |
| userInfo:@{NSLocalizedDescriptionKey: [[NSString stringWithFormat:__VA_ARGS__] stringByAppendingFormat:@": %@", [(*errorPtr) localizedDescription]], \ |
| TProtocolErrorSourceFileKey: [NSString stringWithUTF8String:__FILE__], \ |
| TProtocolErrorSourceLineKey: @(__LINE__), \ |
| TProtocolErrorSourceMethodKey: [NSString stringWithUTF8String:__PRETTY_FUNCTION__], \ |
| TProtocolErrorMessageNameKey: self.currentMessageName ? self.currentMessageName : @"", \ |
| NSUnderlyingErrorKey: *errorPtr}]; \ |
| } \ |
| return ret |