-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathSSYNetServiceResolver.m
67 lines (50 loc) · 1.91 KB
/
SSYNetServiceResolver.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#import "SSYNetServiceResolver.h"
NSString* const SSYNetServiceResolverDidFinishNotification = @"SSYNetServiceResolverDFi" ;
NSString* const SSYNetServiceResolverDidFailNotification = @"SSYNetServiceResolverDFa" ;
NSString* const SSYNetServiceResolverDidStopNotification = @"SSYNetServiceResolverDSt" ;
@interface SSYNetServiceResolver ()
@property SSYNetServiceResolverState state ;
@property (retain) NSNetService* service ;
@property (retain) NSError* error ;
@end
@implementation SSYNetServiceResolver
@synthesize state ;
@synthesize service ;
@synthesize error ;
- (void) dealloc {
[service release] ;
[error release] ;
[super dealloc];
}
- (id) initWithService:(NSNetService*)service_
timeout:(NSTimeInterval)timeout {
self = [super init] ;
if (self != nil) {
[service_ setDelegate:self] ;
[service_ resolveWithTimeout:timeout] ;
[self setService:service_] ;
}
return self ;
}
- (void)netServiceDidResolveAddress:(NSNetService*)service {
[self setState:SSYNetServiceResolverStateDone] ;
[[NSNotificationCenter defaultCenter] postNotificationName:SSYNetServiceResolverDidFinishNotification
object:self] ;
}
- (void)netService:(NSNetService*)service_
didNotResolve:(NSDictionary *)errorInfo {
NSError* error_ = [NSError errorWithDomain:NSNetServicesErrorDomain
code:[[errorInfo objectForKey:NSNetServicesErrorCode] integerValue]
userInfo:[NSDictionary dictionaryWithObject:service_
forKey:@"service"]] ;
[self setError:error_] ;
[self setState:SSYNetServiceResolverStateFailed] ;
[[NSNotificationCenter defaultCenter] postNotificationName:SSYNetServiceResolverDidFailNotification
object:self] ;
}
- (void)netServiceDidStop:(NSNetService*)sender {
[self setState:SSYNetServiceResolverStateStopped] ;
[[NSNotificationCenter defaultCenter] postNotificationName:SSYNetServiceResolverDidStopNotification
object:self] ;
}
@end