src/server/daemon/event_bsd.c

changeset 704
778dcf4ad63c
parent 552
4ed0e46aa9dc
equal deleted inserted replaced
703:395c62fac7e5 704:778dcf4ad63c
197 struct kevent kev; 197 struct kevent kev;
198 EV_SET(&kev, fd, EVFILT_WRITE, EV_ADD, 0, 0, event); 198 EV_SET(&kev, fd, EVFILT_WRITE, EV_ADD, 0, 0, event);
199 return kevent(h->kqueue, &kev, 1, NULL, 0, NULL); 199 return kevent(h->kqueue, &kev, 1, NULL, 0, NULL);
200 } 200 }
201 201
202 int ev_poll(EventHandler *h, int fd, Event *event) {
203 event->events = EVENT_POLLOUT;
204 int filter = 0;
205 if(event->events & EVENT_POLLOUT) {
206 filter |= EVFILT_WRITE;
207 }
208 if(event->events & EVENT_POLIN) {
209 filter |= EVFILT_READ;
210 }
211 struct kevent kev;
212 EV_SET(&kev, fd, filter, EV_ADD, 0, 0, event);
213 return kevent(h->kqueue, &kev, 1, NULL, 0, NULL);
214 }
215
202 int ev_remove_poll(EventHandler *h, int fd) { 216 int ev_remove_poll(EventHandler *h, int fd) {
203 struct kevent kev; 217 struct kevent kev;
204 EV_SET(&kev, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); 218 EV_SET(&kev, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
205 int r1 = kevent(h->kqueue, &kev, 1, NULL, 0, NULL); 219 int r1 = kevent(h->kqueue, &kev, 1, NULL, 0, NULL);
206 EV_SET(&kev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL); 220 EV_SET(&kev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);

mercurial