}
for (int i = 0; i < n; ++i) {
- vine_epoll_io_event_handler *h = (vine_epoll_io_event_handler *)events[i].data.ptr;
-
- if (!h)
- continue;
-
- if (_find_io_event_handler(h->fd) == NULL) {
- VINE_LOGI("Removed fd[%d]", h->fd);
+ int fd = events[i].data.fd;
+ vine_epoll_io_event_handler *h = _find_io_event_handler(fd);
+ if (!h) {
+ VINE_LOGD("Removed fd[%d] %d", fd);
continue;
}
struct epoll_event event;
event.events = events;
- event.data.ptr = (void *)h;
+ event.data.fd = fd;
epoll_ctl(__vine_epoll_fd, EPOLL_CTL_ADD, fd, &event);
VINE_LOGD("Add an epoll event. fd: %d", fd);
{
RET_VAL_IF(fd < 0, VINE_ERROR_INVALID_PARAMETER,
"fd should be equal to or greater than zero");
+ RET_VAL_IF(_find_io_event_handler(fd) == NULL,
+ VINE_ERROR_INVALID_PARAMETER, "fd is removed.");
struct epoll_event event;
event.events = events;
- event.data.ptr = _find_io_event_handler(fd);
+ event.data.fd = fd;
epoll_ctl(__vine_epoll_fd, EPOLL_CTL_MOD, fd, &event);
VINE_LOGD("Modify an epoll event. fd: %d event: %d", fd, events);