@@ -182,23 +182,19 @@ [self OF_removeObject: object fileDescriptor: [object fileDescriptorForWriting] events: EPOLLOUT]; } -- (bool)observeForTimeInterval: (of_time_interval_t)timeInterval +- (void)observeForTimeInterval: (of_time_interval_t)timeInterval { OFNull *nullObject = [OFNull null]; void *pool = objc_autoreleasePoolPush(); struct epoll_event eventList[EVENTLIST_SIZE]; - int i, events, realEvents = 0; + int i, events; [self OF_processQueueAndStoreRemovedIn: nil]; - - if ([self OF_processReadBuffers]) { - objc_autoreleasePoolPop(pool); - return true; - } + [self OF_processReadBuffers]; objc_autoreleasePoolPop(pool); events = epoll_wait(_epfd, eventList, EVENTLIST_SIZE, (timeInterval != -1 ? timeInterval * 1000 : -1)); @@ -205,13 +201,10 @@ if (events < 0) return [OFObserveFailedException exceptionWithObserver: self errNo: errno]; - if (events == 0) - return false; - for (i = 0; i < events; i++) { if (eventList[i].data.ptr == nullObject) { char buffer; assert(eventList[i].events == EPOLLIN); @@ -226,12 +219,10 @@ if ([_delegate respondsToSelector: @selector(objectIsReadyForReading:)]) [_delegate objectIsReadyForReading: eventList[i].data.ptr]; - realEvents++; - objc_autoreleasePoolPop(pool); } if (eventList[i].events & EPOLLOUT) { pool = objc_autoreleasePoolPush(); @@ -239,19 +230,12 @@ if ([_delegate respondsToSelector: @selector(objectIsReadyForWriting:)]) [_delegate objectIsReadyForWriting: eventList[i].data.ptr]; - realEvents++; - objc_autoreleasePoolPop(pool); } assert((eventList[i].events & ~(EPOLLIN | EPOLLOUT)) == 0); } - - if (realEvents == 0) - return false; - - return true; } @end