31 lines
804 B
Swift
31 lines
804 B
Swift
import Foundation
|
|
|
|
actor DNSService {
|
|
enum Event {
|
|
case packet(Data)
|
|
}
|
|
|
|
typealias EventHandler = @Sendable (Event) async -> Void
|
|
|
|
private let cloudService: DNSCloudService
|
|
private let localService: DNSLocalService
|
|
|
|
init(cloudService: DNSCloudService, localService: DNSLocalService) {
|
|
self.cloudService = cloudService
|
|
self.localService = localService
|
|
}
|
|
|
|
func stop() async {
|
|
await self.cloudService.stop()
|
|
await self.localService.stop()
|
|
}
|
|
|
|
func forward(ipPacketData: Data) async {
|
|
await self.cloudService.forward(ipPacketData: ipPacketData)
|
|
}
|
|
|
|
func queryLocal(tracker: DNSLocalClient.DNSTracker, dnsPayload: Data) async {
|
|
await self.localService.query(tracker: tracker, dnsPayload: dnsPayload)
|
|
}
|
|
}
|