/* Register a file event. */ int ae_create_file_event(ae_event_loop *el, int fd, int mask, ae_file_proc *proc, void *client_data) { if (fd >= AE_SETSIZE) { return AE_ERR; } ae_file_event *fe = &el->events[fd]; if (ae_api_add_event(el, fd, mask) == -1) { return AE_ERR; } fe->mask |= mask; /* On one fd, multi events can be registered. */ if (mask & AE_READABLE) { fe->r_file_proc = proc; } if (mask & AE_WRITABLE) { fe->w_file_proc = proc; } fe->client_data = client_data; /* Once one file event has been registered, the el->maxfd no longer is -1. */ if (fd > el->maxfd) { el->maxfd = fd; } return AE_OK; }
int ae_create_file_event(ae_event_loop * ev_loop, int fd, int mask, ae_file_func * r_file_func, ae_file_func * w_file_func, void * client_data) { if (fd >= ev_loop->setsize) { errno = ERANGE; return AE_ERR; } ae_file_event * fe = &ev_loop->events[fd]; if (ae_api_add_event(ev_loop, fd, mask) == AE_ERR) { //LOG return AE_ERR; } fe->mask |= mask; if (mask & AE_READABLE) fe->r_file_func = r_file_func; if (mask & AE_WRITABLE) fe->w_file_func = w_file_func; fe->client_data = client_data; if (fd > ev_loop->maxfd) ev_loop->maxfd = fd; return AE_OK; }