]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/swift/Sources/TError.swift
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / swift / Sources / TError.swift
CommitLineData
f67539c2
TL
1/*
2* Licensed to the Apache Software Foundation (ASF) under one
3* or more contributor license agreements. See the NOTICE file
4* distributed with this work for additional information
5* regarding copyright ownership. The ASF licenses this file
6* to you under the Apache License, Version 2.0 (the
7* "License"); you may not use this file except in compliance
8* with the License. You may obtain a copy of the License at
9*
10* http://www.apache.org/licenses/LICENSE-2.0
11*
12* Unless required by applicable law or agreed to in writing,
13* software distributed under the License is distributed on an
14* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15* KIND, either express or implied. See the License for the
16* specific language governing permissions and limitations
17* under the License.
18*/
19
20
21/// TErrorCode
22///
23/// Protocol for TError conformers' enum's to conform to.
24/// Generic Int Thrift error code to allow error cases to have
25/// associated values.
26public protocol TErrorCode : CustomStringConvertible {
27 var thriftErrorCode: Int { get }
28}
29
30/// TError
31///
32/// Base protocol for all Thrift Error(Exception) types to conform to
33public protocol TError : Error, CustomStringConvertible {
34
35 /// Enum for error cases. Can be typealiased to any conforming enum
36 /// or defined nested.
37 associatedtype Code: TErrorCode
38
39 /// Error Case, value from internal enum
40 var error: Code { get set }
41
42 /// Optional additional message
43 var message: String? { get set }
44
45 /// Default error case for the error type, used for generic init()
46 static var defaultCase: Code { get }
47
48 init()
49}
50
51extension TError {
52 /// Human readable description of error. Default provided for you in the
53 /// format \(Self.self): \(error.errorDescription) \n message
54 /// eg:
55 ///
56 /// TApplicationError (1): Invalid Message Type
57 /// An unknown Error has occured.
58 public var description: String {
59 var out = "\(Self.self) (\(error.thriftErrorCode)): " + error.description + "\n"
60 if let message = message {
61 out += "Message: \(message)"
62 }
63 return out
64 }
65
66 /// Simple default Initializer for TError's
67 ///
68 /// - parameter error: ErrorCode value. Default: defaultCase
69 /// - parameter message: Custom message with error. Optional
70 ///
71 /// - returns: <#return value description#>
72 public init(error: Code, message: String? = nil) {
73 self.init()
74 self.error = error
75 self.message = message
76 }
77}