X-Git-Url: http://git.ithinksw.org/ITFoundation.git/blobdiff_plain/ee6e3ba1019fb96ea727f0e83e873eef7f85510f..1ea39b0f18a93a1622b987e11b502b3b4ac2f821:/ITInetServerSocket.m?ds=inline diff --git a/ITInetServerSocket.m b/ITInetServerSocket.m index 8c6ff00..c37ec4f 100755 --- a/ITInetServerSocket.m +++ b/ITInetServerSocket.m @@ -19,7 +19,7 @@ /* Too bad Objective-C doesn't have class variables... */ static NSMutableSet *servsockets; -static NSTimer *timer; + @interface ITInetServerSocket(Private) +(void)registerSocket:(ITInetServerSocket*)sock; +(void)unregisterSocket:(ITInetServerSocket*)sock; @@ -28,17 +28,17 @@ static NSTimer *timer; -(void)stopConnection; -(void)setupRendezvousAdvertising; -(void)stopRendezvousAdvertising; -+(void)setupTimer; -+(void)stopTimer; +-(void)setupTimer; +-(void)stopTimer; +(void)globalTimerFunc:(NSTimer*)timer; --(void)timerFunc; +-(void)timerFunc:(NSTimer*)timer; @end @implementation ITInetServerSocket + (void)initialize { servsockets = [[NSMutableSet alloc] init]; - [self setupTimer]; + //[self setupTimer]; } - (id)init @@ -51,6 +51,7 @@ static NSTimer *timer; service = nil; port = 0; rndType = rndName = nil; + timer = nil; } return self; } @@ -65,6 +66,7 @@ static NSTimer *timer; service = nil; port = 0; rndType = rndName = nil; + timer = nil; } return self; } @@ -175,6 +177,7 @@ static NSTimer *timer; listen(sockfd, SOMAXCONN); fcntl(sockfd,F_SETFL,O_NONBLOCK); [self setupRendezvousAdvertising]; + [self setupTimer]; } - (void)stopConnection @@ -199,13 +202,13 @@ static NSTimer *timer; service = nil; } -+ (void)setupTimer +- (void)setupTimer { - if (!timer) timer = [NSTimer timerWithTimeInterval:0 target:self selector:@selector(globalTimerFunc:) userInfo:nil repeats:YES]; + if (!timer) timer = [NSTimer timerWithTimeInterval:0 target:self selector:@selector(timerFunc:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; } -+ (void)stopTimer +- (void)stopTimer { [timer invalidate]; [timer release]; @@ -217,7 +220,7 @@ static NSTimer *timer; [servsockets makeObjectsPerformSelector:@selector(timerFunc)]; } -- (void)timerFunc +- (void)timerFunc:(NSTimer*)timer { if (sockfd != -1) { @@ -230,7 +233,7 @@ static NSTimer *timer; else {perror("Too bad I haven't implemented error checking yet");} } else { - ITInetSocket *csocket = [[[ITInetSocket alloc] initWithFD:cfd delegate:self] autorelease]; + ITInetSocket *csocket = [[ITInetSocket alloc] initWithFD:cfd delegate:self]; [clients addObject:csocket]; [delegate newClientJoined:csocket]; }