Exemplo n.º 1
0
void file_cache_free(FILE_CACHE *cache)
{
    BUFFER *buffer;

    acl_htable_delete(__cache_table, cache->path, NULL);

    while (1) {
        buffer = (BUFFER*) acl_fifo_pop(cache->fifo);
        if (buffer == NULL)
            break;
        acl_myfree(buffer->buf);
        acl_myfree(buffer);
    }

    acl_fifo_free(cache->fifo, NULL);
    acl_myfree(cache);
}
Exemplo n.º 2
0
static void fifo_test(bool use_slice)
{
	ACL_FIFO *fifo;
	int   i;
	char *ptr;
	ACL_SLICE_POOL *slice;

	if (use_slice)
		slice = acl_slice_pool_create(10, 100,
			ACL_SLICE_FLAG_GC2 | ACL_SLICE_FLAG_RTGC_OFF);
	else
		slice = NULL;

	fifo = acl_fifo_new1(slice);

	for (i = 0; i < 20; i++) {
		if (slice)
			ptr = (char*) acl_slice_pool_alloc(__FILE__, __LINE__,
					slice, 100);
		else
			ptr = (char*) acl_mymalloc(100);
		snprintf(ptr, 100, "test:%d", i);
		(void) acl_fifo_push(fifo, ptr);
		printf(">>>ptr: %s\n", ptr);
	}

	while (1) {
		ptr = (char*) acl_fifo_pop(fifo);
		if (ptr == NULL)
			break;
		printf("fifo pop: %s\n", ptr);
	}

	if (slice == NULL)
		acl_fifo_free(fifo, acl_myfree_fn);
	else
		acl_slice_pool_destroy(slice);
}