@@ -150,23 +150,19 @@ [self OF_removeObject: object fileDescriptor: [object fileDescriptorForWriting] events: POLLOUT]; } -- (bool)observeForTimeInterval: (of_time_interval_t)timeInterval +- (void)observeForTimeInterval: (of_time_interval_t)timeInterval { void *pool = objc_autoreleasePoolPush(); struct pollfd *FDs; int events; - size_t i, nFDs, realEvents = 0; + size_t i, nFDs; [self OF_processQueueAndStoreRemovedIn: nil]; - - if ([self OF_processReadBuffers]) { - objc_autoreleasePoolPop(pool); - return true; - } + [self OF_processReadBuffers]; objc_autoreleasePoolPop(pool); FDs = [_FDs items]; nFDs = [_FDs count]; @@ -181,13 +177,10 @@ if (events < 0) @throw [OFObserveFailedException exceptionWithObserver: self errNo: errno]; - if (events == 0) - return false; - for (i = 0; i < nFDs; i++) { if (FDs[i].fd > _maxFD) @throw [OFOutOfRangeException exception]; if (FDs[i].revents & POLLIN) { @@ -206,12 +199,10 @@ @selector(objectIsReadyForReading:)]) [_delegate objectIsReadyForReading: _FDToObject[FDs[i].fd]]; objc_autoreleasePoolPop(pool); - - realEvents++; } if (FDs[i].revents & POLLOUT) { pool = objc_autoreleasePoolPush(); @@ -219,18 +210,11 @@ @selector(objectIsReadyForWriting:)]) [_delegate objectIsReadyForWriting: _FDToObject[FDs[i].fd]]; objc_autoreleasePoolPop(pool); - - realEvents++; } FDs[i].revents = 0; } - - if (realEvents == 0) - return false; - - return true; } @end