Exemple #1
0
/* 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;
}
Exemple #2
0
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;
}