Skip to content

Commit 372944a

Browse files
author
Paul Ehrhardt
authored
Merge pull request #19 from grandcentrix/feature/release_1_2_1
Circumvent re-occouring error http://www.openradar.me/28943305
2 parents 64cf792 + 49fc457 commit 372944a

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

GCXMulticastDNSKit/Discovery.swift

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class DiscoveryService: NSObject {
6969

7070
public init(configuration: DiscoveryConfiguration, netService: NetService) {
7171
self.configuration = configuration
72-
self.netService = netService
72+
self.netService = netService
7373
super.init()
7474
}
7575
}
@@ -125,25 +125,25 @@ public class Discovery: NSObject {
125125

126126
/// the default search domain, empty string means .local.
127127
/// Should be sufficient for 99% of the use cases
128-
fileprivate let defaultMDNSDomain = ""
128+
private let defaultMDNSDomain = ""
129129

130130
/// the timeout for resolving a service
131-
fileprivate var serviceResolveTimeout: TimeInterval
131+
private var serviceResolveTimeout: TimeInterval
132132

133133
/// the configurations used for the search
134-
fileprivate var configurations: [DiscoveryConfiguration]
134+
private var configurations: [DiscoveryConfiguration]
135135

136136
/// the local models to manage the search
137-
fileprivate var items: [DiscoveryItem]?
137+
private var items: [DiscoveryItem]?
138138

139139
/// the delegate
140140
public weak var delegate: DiscoveryDelegate?
141141

142142

143143
/// the completion closures
144-
fileprivate var discoverHandler: DiscoveryDiscoverHandler?
145-
fileprivate var failHandler: DiscoveryFailHandler?
146-
fileprivate var serviceRemovedHandler: DiscoveryServiceRemovedHandler?
144+
private var discoverHandler: DiscoveryDiscoverHandler?
145+
private var failHandler: DiscoveryFailHandler?
146+
private var serviceRemovedHandler: DiscoveryServiceRemovedHandler?
147147

148148
/// the designated initializer. creates a new discovery for the specified configurations
149149
///
@@ -186,11 +186,9 @@ public class Discovery: NSObject {
186186
self.serviceResolveTimeout = serviceResolveTimeout
187187
}
188188

189-
// workaround for http://www.openradar.me/28943305, see https://github.com/grandcentrix/GCXMulticastDNSKit/issues/11
189+
// sanity workaround for http://www.openradar.me/28943305, also see https://github.com/grandcentrix/GCXMulticastDNSKit/issues/11
190190
deinit {
191-
_ = items?.map {
192-
$0.netServiceBrowser.delegate = nil
193-
}
191+
stopSearchingAndResolving()
194192
}
195193

196194
/// starts the discovery process
@@ -209,55 +207,60 @@ public class Discovery: NSObject {
209207
extension Discovery {
210208

211209
/// creates the models from the configurations and starts the search for the services
212-
fileprivate func initializeItems() {
210+
private func initializeItems() {
213211
items = configurations.map {
214-
let item = DiscoveryItem( with: $0)
212+
let item = DiscoveryItem(with: $0)
215213
item.netServiceBrowser.delegate = self
216214
item.netServiceBrowser.searchForServices(ofType: item.configuration.serviceType, inDomain: defaultMDNSDomain)
217215
return item
218216
}
219217
}
220218

221-
/// stops all search and resolve operations
222-
fileprivate func stopSearchingAndResolving() {
219+
/// stops all search and resolve operations, nil out delegates to circumvent http://www.openradar.me/28943305
220+
private func stopSearchingAndResolving() {
223221
_ = items?.map {
224222
$0.netServiceBrowser.stop()
225-
_ = $0.netServices.map { $0.stop() }
223+
$0.netServiceBrowser.delegate = nil
224+
_ = $0.netServices.map {
225+
$0.stop()
226+
$0.delegate = nil
227+
}
226228
}
227229

228230
items = nil
229231
}
230232

231233
/// lookup for an item from a net service
232-
fileprivate func item(service: NetService) -> DiscoveryItem? {
234+
private func item(service: NetService) -> DiscoveryItem? {
233235
return items?.first { $0.netServices.contains(service) }
234236
}
235237

236238
/// lookup for an item from a net service browser
237-
fileprivate func item(serviceBrowser: NetServiceBrowser) -> DiscoveryItem? {
239+
private func item(serviceBrowser: NetServiceBrowser) -> DiscoveryItem? {
238240
return items?.first { $0.netServiceBrowser == serviceBrowser }
239241
}
240242
}
241243

242244
// MARK: - Delegate notifiction helpers
243245
extension Discovery {
244-
fileprivate func notifyDiscoveryDidDiscover(service: DiscoveryService) {
246+
247+
private func notifyDiscoveryDidDiscover(service: DiscoveryService) {
245248
DispatchQueue.main.async { [weak self] () -> Void in
246249
guard let strongSelf = self else { return }
247250
strongSelf.delegate?.discoveryDidDiscover(service: service)
248251
strongSelf.discoverHandler?(service)
249252
}
250253
}
251254

252-
fileprivate func notifyDiscoveryDidFail(configuration: DiscoveryConfiguration, error: DiscoveryError) {
255+
private func notifyDiscoveryDidFail(configuration: DiscoveryConfiguration, error: DiscoveryError) {
253256
DispatchQueue.main.async { [weak self] () -> Void in
254257
guard let strongSelf = self else { return }
255258
strongSelf.delegate?.discoveryDidFail(configuration: configuration, error: error)
256259
strongSelf.failHandler?(configuration, error)
257260
}
258261
}
259262

260-
fileprivate func notifyDiscoveryServiceDidDisappear(service: DiscoveryService) {
263+
private func notifyDiscoveryServiceDidDisappear(service: DiscoveryService) {
261264
DispatchQueue.main.async { [weak self] () -> Void in
262265
guard let strongSelf = self else { return }
263266
strongSelf.delegate?.discoveryDidDisappear(service: service)

0 commit comments

Comments
 (0)