コード例 #1
0
ファイル: proctl_service.c プロジェクト: 1514louluo/acl
/* 往消息队列中添加一个消息,并向主线程发送通知 */
void proctl_msg_push(PROCTL_MSG *msg)
{
	LOCK_WAITING_SERVICE;
	acl_fifo_push(__services_wait, msg);
	UNLOCK_WAITING_SERVICE;

	/* 向主线程发送消息 */
	ReleaseSemaphore(__sem_handle, 1, NULL);
}
コード例 #2
0
ファイル: mime_state_parse.cpp プロジェクト: aaronshang/acl
static ACL_FIFO *mail_addr_add(ACL_FIFO *addr_list, const char *addr)
{
	MAIL_ADDR *mail_addr;

	if (addr_list == NULL)
		addr_list = acl_fifo_new();
	mail_addr = (MAIL_ADDR*) acl_mycalloc(1, sizeof(MAIL_ADDR));
	mail_addr->addr = acl_mystrdup(addr);
	acl_fifo_push(addr_list, mail_addr);
	return (addr_list);
}
コード例 #3
0
ファイル: file_cache.c プロジェクト: lunlun1992/acl
void file_cache_push(FILE_CACHE *cache, const void *data, size_t size)
{
    BUFFER *buffer = acl_mymalloc(sizeof(BUFFER));

    buffer->buf = acl_mymalloc(size);
    buffer->size = size;
    memcpy(buffer->buf, data, size);
    buffer->ptr = buffer->buf;
    cache->size += size;
    acl_fifo_push(cache->fifo, buffer);
}
コード例 #4
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);
}