Skip to content

Commit c5d9b79

Browse files
authored
Use dnssd framework on Darwin platforms (#8)
* Use dnssd framework on Darwin platforms Add `DNSResolver` protocol with two implementations: one backed by c-ares and the other dnssd. Use `dnssd` implementation on Darwin platforms by default. * Address review feedback
1 parent 5e8afd5 commit c5d9b79

13 files changed

+1375
-616
lines changed

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ let package = Package(
2828
.library(name: "AsyncDNSResolver", targets: ["AsyncDNSResolver"]),
2929
],
3030
dependencies: [
31-
.package(url: "https://github.com/apple/swift-log", .upToNextMajor(from: "1.0.0")),
31+
.package(url: "https://github.com/apple/swift-nio", .upToNextMajor(from: "2.53.0")),
3232
],
3333
targets: [
3434
.target(
@@ -47,7 +47,7 @@ let package = Package(
4747
name: "AsyncDNSResolver",
4848
dependencies: [
4949
"CAsyncDNSResolver",
50-
.product(name: "Logging", package: "swift-log"),
50+
.product(name: "NIOCore", package: "swift-nio"),
5151
]
5252
),
5353

Sources/AsyncDNSResolver/AsyncDNSResolver.swift

Lines changed: 66 additions & 536 deletions
Large diffs are not rendered by default.

Sources/AsyncDNSResolver/Error.swift renamed to Sources/AsyncDNSResolver/Errors.swift

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15-
import CAsyncDNSResolver
16-
17-
// MARK: - Async DNS resolver errors
18-
1915
extension AsyncDNSResolver {
2016
public struct Error: Swift.Error, CustomStringConvertible {
2117
enum Code: Equatable, CustomStringConvertible {
@@ -43,7 +39,7 @@ extension AsyncDNSResolver {
4339
case initError(String?)
4440
case cancelled(String?)
4541
case service(String?)
46-
case other(code: Int32, String?)
42+
case other(code: Int, String?)
4743

4844
var description: String {
4945
switch self {
@@ -107,61 +103,6 @@ extension AsyncDNSResolver {
107103
self.code = code
108104
}
109105

110-
init(code: Int32, _ description: String? = nil) {
111-
switch code {
112-
case ARES_ENODATA:
113-
self = .noData(description)
114-
case ARES_EFORMERR:
115-
self = .invalidQuery(description)
116-
case ARES_ESERVFAIL:
117-
self = .serverFailure(description)
118-
case ARES_ENOTFOUND:
119-
self = .notFound(description)
120-
case ARES_ENOTIMP:
121-
self = .notImplemented(description)
122-
case ARES_EREFUSED:
123-
self = .serverRefused(description)
124-
case ARES_EBADQUERY:
125-
self = .badQuery(description)
126-
case ARES_EBADNAME:
127-
self = .badName(description)
128-
case ARES_EBADFAMILY:
129-
self = .badFamily(description)
130-
case ARES_EBADRESP:
131-
self = .badResponse(description)
132-
case ARES_ECONNREFUSED:
133-
self = .connectionRefused(description)
134-
case ARES_ETIMEOUT:
135-
self = .timeout(description)
136-
case ARES_EOF:
137-
self = .eof(description)
138-
case ARES_EFILE:
139-
self = .fileIO(description)
140-
case ARES_ENOMEM:
141-
self = .noMemory(description)
142-
case ARES_EDESTRUCTION:
143-
self = .destruction(description)
144-
case ARES_EBADSTR:
145-
self = .badString(description)
146-
case ARES_EBADFLAGS:
147-
self = .badFlags(description)
148-
case ARES_ENONAME:
149-
self = .noName(description)
150-
case ARES_EBADHINTS:
151-
self = .badHints(description)
152-
case ARES_ENOTINITIALIZED:
153-
self = .notInitialized(description)
154-
case ARES_ELOADIPHLPAPI, ARES_EADDRGETNETWORKPARAMS:
155-
self = .initError(description)
156-
case ARES_ECANCELLED:
157-
self = .cancelled(description)
158-
case ARES_ESERVICE:
159-
self = .service(description)
160-
default:
161-
self = .other(code: code, description)
162-
}
163-
}
164-
165106
public var description: String {
166107
"\(self.code)"
167108
}
@@ -262,7 +203,7 @@ extension AsyncDNSResolver {
262203
.init(code: .service(description))
263204
}
264205

265-
public static func other(code: Int32, _ description: String? = nil) -> Error {
206+
public static func other(code: Int, _ description: String? = nil) -> Error {
266207
.init(code: .other(code: code, description))
267208
}
268209
}

Sources/AsyncDNSResolver/Options.swift renamed to Sources/AsyncDNSResolver/c-ares/AresOptions.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
import CAsyncDNSResolver
1616

17-
// MARK: - Options for async DNS resolver
17+
// MARK: - Options for `CAresDNSResolver`
1818

19-
extension AsyncDNSResolver {
19+
extension CAresDNSResolver {
2020
public struct Options {
2121
public static var `default`: Options {
2222
.init()
@@ -87,7 +87,7 @@ extension AsyncDNSResolver {
8787
}
8888
}
8989

90-
extension AsyncDNSResolver.Options {
90+
extension CAresDNSResolver.Options {
9191
public struct Flags: OptionSet {
9292
public let rawValue: Int32
9393

@@ -119,7 +119,7 @@ extension AsyncDNSResolver.Options {
119119
}
120120
}
121121

122-
extension AsyncDNSResolver.Options {
122+
extension CAresDNSResolver.Options {
123123
var aresOptions: AresOptions {
124124
let aresOptions = AresOptions()
125125
aresOptions.setFlags(self.flags.rawValue)

0 commit comments

Comments
 (0)