summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/thrift/lib/swift/Sources/TError.swift
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/jaegertracing/thrift/lib/swift/Sources/TError.swift77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/jaegertracing/thrift/lib/swift/Sources/TError.swift b/src/jaegertracing/thrift/lib/swift/Sources/TError.swift
new file mode 100644
index 000000000..79edba602
--- /dev/null
+++ b/src/jaegertracing/thrift/lib/swift/Sources/TError.swift
@@ -0,0 +1,77 @@
+/*
+* 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.
+*/
+
+
+/// TErrorCode
+///
+/// Protocol for TError conformers' enum's to conform to.
+/// Generic Int Thrift error code to allow error cases to have
+/// associated values.
+public protocol TErrorCode : CustomStringConvertible {
+ var thriftErrorCode: Int { get }
+}
+
+/// TError
+///
+/// Base protocol for all Thrift Error(Exception) types to conform to
+public protocol TError : Error, CustomStringConvertible {
+
+ /// Enum for error cases. Can be typealiased to any conforming enum
+ /// or defined nested.
+ associatedtype Code: TErrorCode
+
+ /// Error Case, value from internal enum
+ var error: Code { get set }
+
+ /// Optional additional message
+ var message: String? { get set }
+
+ /// Default error case for the error type, used for generic init()
+ static var defaultCase: Code { get }
+
+ init()
+}
+
+extension TError {
+ /// Human readable description of error. Default provided for you in the
+ /// format \(Self.self): \(error.errorDescription) \n message
+ /// eg:
+ ///
+ /// TApplicationError (1): Invalid Message Type
+ /// An unknown Error has occured.
+ public var description: String {
+ var out = "\(Self.self) (\(error.thriftErrorCode)): " + error.description + "\n"
+ if let message = message {
+ out += "Message: \(message)"
+ }
+ return out
+ }
+
+ /// Simple default Initializer for TError's
+ ///
+ /// - parameter error: ErrorCode value. Default: defaultCase
+ /// - parameter message: Custom message with error. Optional
+ ///
+ /// - returns: <#return value description#>
+ public init(error: Code, message: String? = nil) {
+ self.init()
+ self.error = error
+ self.message = message
+ }
+}