46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
-
+
-
+
|
struct pollfd p = { _cancelFD[0], POLLIN, 0 };
_FDs = [[OFMutableData alloc] initWithItemSize:
sizeof(struct pollfd)];
[_FDs addItem: &p];
_maxFD = _cancelFD[0];
_FDToObject = of_alloc((size_t)_maxFD + 1, sizeof(id));
_FDToObject = OFAllocMemory((size_t)_maxFD + 1, sizeof(id));
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
- (void)dealloc
{
[_FDs release];
free(_FDToObject);
OFFreeMemory(_FDToObject);
[super dealloc];
}
static void
addObject(OFPollKernelEventObserver *self, id object, int fd, short events)
{
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
-
+
|
}
if (!found) {
struct pollfd p = { fd, events, 0 };
if (fd > self->_maxFD) {
self->_maxFD = fd;
self->_FDToObject = of_realloc(self->_FDToObject,
self->_FDToObject = OFResizeMemory(self->_FDToObject,
(size_t)self->_maxFD + 1, sizeof(id));
}
self->_FDToObject[fd] = object;
[self->_FDs addItem: &p];
}
}
|