Example #1
0
ae_event_loop * ae_create_event_loop(int setsize)
{
	ae_event_loop * event_loop = NULL;
	event_loop = (ae_event_loop *)calloc(1, sizeof(*event_loop));
	if (!event_loop)
		goto err_handle;

	event_loop->events = (ae_file_event *)calloc(setsize, sizeof(ae_file_event));
	event_loop->fired = (ae_fired_event *)calloc(setsize, sizeof(ae_fired_event));
	if (!event_loop->events || !event_loop->fired)
		goto err_handle;

	event_loop->maxfd = -1;
	event_loop->setsize = setsize;
	event_loop->stop = 0;

	event_loop->time_event_head = NULL;
	event_loop->last_time = time(NULL);
	event_loop->time_event_next_id = 0;
	event_loop->beforesleep = NULL;

	//使用select
	if (ae_api_create(event_loop) == AE_ERR) {
		//LOG here
		goto err_handle;
	}

	int i;
	for (i = 0; i < setsize; i++) {
		event_loop->events[i].mask = AE_NONE;
	}
	
	return event_loop;

err_handle:
	if (event_loop) {
		if(event_loop->events) free(event_loop->events);
		if(event_loop->fired) free(event_loop->fired);
		if(event_loop) free(event_loop);
	}
	return NULL;
}
Example #2
0
File: ae.c Project: flygoast/verben
ae_event_loop *ae_create_event_loop(void) {
    ae_event_loop *el;
    int i;

    el = (ae_event_loop*)malloc(sizeof(*el));
    if (!el) {
        return NULL;
    }
    el->time_event_head = NULL;
    el->time_event_next_id = 0;
    el->maxfd = -1;
    el->before_sleep = NULL;
    if (ae_api_create(el) == -1) {
        free(el);
        return NULL;
    }

    /* Events with mask == AE_NONE are not set. So let's initialize
       the vector with it. */
    for (i = 0; i < AE_SETSIZE; ++i) {
        el->events[i].mask = AE_NONE;
    }
    return el;
}