149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
if (kevent(_kernelQueue, &event, 1, NULL, 0, NULL) != 0)
@throw [OFObserveFailedException exceptionWithObserver: self
errNo: errno];
[super removeObjectForWriting: object];
}
- (void)observeForTimeInterval: (of_time_interval_t)timeInterval
{
struct timespec timeout;
struct kevent eventList[EVENTLIST_SIZE];
int events;
if ([self of_processReadBuffers])
return;
|
|
|
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
if (kevent(_kernelQueue, &event, 1, NULL, 0, NULL) != 0)
@throw [OFObserveFailedException exceptionWithObserver: self
errNo: errno];
[super removeObjectForWriting: object];
}
- (void)observeForTimeInterval: (OFTimeInterval)timeInterval
{
struct timespec timeout;
struct kevent eventList[EVENTLIST_SIZE];
int events;
if ([self of_processReadBuffers])
return;
|
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
exceptionWithObserver: self
errNo: (int)eventList[i].data];
if (eventList[i].ident == (uintptr_t)_cancelFD[0]) {
char buffer;
assert(eventList[i].filter == EVFILT_READ);
OF_ENSURE(read(_cancelFD[0], &buffer, 1) == 1);
continue;
}
pool = objc_autoreleasePoolPush();
switch (eventList[i].filter) {
|
|
|
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
exceptionWithObserver: self
errNo: (int)eventList[i].data];
if (eventList[i].ident == (uintptr_t)_cancelFD[0]) {
char buffer;
assert(eventList[i].filter == EVFILT_READ);
OFEnsure(read(_cancelFD[0], &buffer, 1) == 1);
continue;
}
pool = objc_autoreleasePoolPush();
switch (eventList[i].filter) {
|