manicmaniac/ApolloDeveloperKit

View on GitHub
Sources/ApolloDeveloperKit/WebServer/AddressInfoError.swift

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
//
//  AddressInfoError.swift
//  ApolloDeveloperKit
//
//  Created by Ryosuke Ito on 9/20/20.
//  Copyright © 2020 Ryosuke Ito. All rights reserved.
//

import Darwin

struct AddressInfoError: Error {
    typealias Code = AddressInfoErrorCode

    let code: AddressInfoErrorCode

    init(_ code: AddressInfoErrorCode) {
        self.code = code
    }

    var localizedDescription: String {
        return String(cString: gai_strerror(code.rawValue))
    }
}

struct AddressInfoErrorCode: RawRepresentable {
    var rawValue: Int32

    init?(rawValue: Int32) {
        guard (1..<EAI_MAX).contains(rawValue) else { return nil }
        self.rawValue = rawValue
    }
}