30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#import "OFKqueueKernelEventObserver.h"
#import "OFArray.h"
#import "OFInitializationFailedException.h"
#import "OFObserveFailedException.h"
#import "OFOutOfRangeException.h"
#define EVENTLIST_SIZE 64
@implementation OFKqueueKernelEventObserver
- (instancetype)init
{
self = [super init];
@try {
|
|
|
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#import "OFKqueueKernelEventObserver.h"
#import "OFArray.h"
#import "OFInitializationFailedException.h"
#import "OFObserveFailedException.h"
#import "OFOutOfRangeException.h"
#define eventListSize 64
@implementation OFKqueueKernelEventObserver
- (instancetype)init
{
self = [super init];
@try {
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
[super removeObjectForWriting: object];
}
- (void)observeForTimeInterval: (OFTimeInterval)timeInterval
{
struct timespec timeout;
struct kevent eventList[EVENTLIST_SIZE];
int events;
if ([self of_processReadBuffers])
return;
timeout.tv_sec = (time_t)timeInterval;
timeout.tv_nsec = (long)((timeInterval - timeout.tv_sec) * 1000000000);
events = kevent(_kernelQueue, NULL, 0, eventList, EVENTLIST_SIZE,
(timeInterval != -1 ? &timeout : NULL));
if (events < 0)
@throw [OFObserveFailedException exceptionWithObserver: self
errNo: errno];
for (int i = 0; i < events; i++) {
|
|
|
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
[super removeObjectForWriting: object];
}
- (void)observeForTimeInterval: (OFTimeInterval)timeInterval
{
struct timespec timeout;
struct kevent eventList[eventListSize];
int events;
if ([self of_processReadBuffers])
return;
timeout.tv_sec = (time_t)timeInterval;
timeout.tv_nsec = (long)((timeInterval - timeout.tv_sec) * 1000000000);
events = kevent(_kernelQueue, NULL, 0, eventList, eventListSize,
(timeInterval != -1 ? &timeout : NULL));
if (events < 0)
@throw [OFObserveFailedException exceptionWithObserver: self
errNo: errno];
for (int i = 0; i < events; i++) {
|