コード例 #1
0
ファイル: event_lea.c プロジェクト: MysteryOfPanda/leactor
void//res_t
lt_io_remove(base_t *base, event_t *ev)//Position TODO
{
    min_heap_erase_(&base->timeheap, ev);//First erase heap

    lt_remove_from_readylist(ev, &base->readylist, &base->deletedlist);
    lt_remove_from_epfd(base->epfd, ev, ev->fd, 0);


    ev->deleted = 1;
//    erase from heap
//    free(ev);
//TODO readylist is too long?
}
コード例 #2
0
ファイル: regress_minheap.c プロジェクト: 2asoft/freebsd
static void
test_heap_randomized(void *ptr)
{
	struct min_heap heap;
	struct event *inserted[1024];
	struct event *e, *last_e;
	int i;

	min_heap_ctor_(&heap);

	for (i = 0; i < 1024; ++i) {
		inserted[i] = malloc(sizeof(struct event));
		assert(inserted[i] != NULL);
		set_random_timeout(inserted[i]);
		min_heap_push_(&heap, inserted[i]);
	}
	check_heap(&heap);

	tt_assert(min_heap_size_(&heap) == 1024);

	for (i = 0; i < 512; ++i) {
		min_heap_erase_(&heap, inserted[i]);
		if (0 == (i % 32))
			check_heap(&heap);
	}
	tt_assert(min_heap_size_(&heap) == 512);

	last_e = min_heap_pop_(&heap);
	while (1) {
		e = min_heap_pop_(&heap);
		if (!e)
			break;
		tt_want(evutil_timercmp(&last_e->ev_timeout,
			&e->ev_timeout, <=));
	}
	tt_assert(min_heap_size_(&heap) == 0);
end:
	for (i = 0; i < 1024; ++i)
		free(inserted[i]);

	min_heap_dtor_(&heap);
}