Merge pull request #125 from daovanhuy/patch-1

Fix #124: set/get user data in epoll
dev
logwang 2017-12-27 14:43:22 +08:00 committed by GitHub
commit 2e360cf2b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 3 deletions

View File

@ -96,8 +96,9 @@ ff_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
write_flags |= EV_ENABLE;
}
EV_SET(&kev[0], fd, EVFILT_READ, read_flags, 0, 0, NULL);
EV_SET(&kev[1], fd, EVFILT_WRITE, write_flags, 0, 0, NULL);
// Fix #124: set user data
EV_SET(&kev[0], fd, EVFILT_READ, read_flags, 0, 0, event->data.ptr);
EV_SET(&kev[1], fd, EVFILT_WRITE, write_flags, 0, 0, event->data.ptr);
return ff_kevent(epfd, kev, changes, NULL, 0, NULL);
}
@ -135,7 +136,11 @@ ff_event_to_epoll(void **ev, struct kevent *kev)
}
(*ppev)->events = event_one;
(*ppev)->data.fd = kev->ident;
// Fix #124: get user data
if (kev->udata != NULL)
(*ppev)->data.ptr = kev->udata;
else
(*ppev)->data.fd = kev->ident;
(*ppev)++;
}