Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
FILE_CACHE *file_cache_new(const char *file_path, time_t last_modified)
{
    FILE_CACHE *cache;

    cache = (FILE_CACHE*) acl_mymalloc(sizeof(FILE_CACHE));
    cache->size = 0;
    http_mkrfc1123(cache->tm_mtime, sizeof(cache->tm_mtime), last_modified);
    ACL_SAFE_STRNCPY(cache->path, file_path, sizeof(cache->path));
    cache->fifo = acl_fifo_new();
    (void) acl_htable_enter(__cache_table, file_path, (char*) cache);
    return (cache);
}
Exemplo n.º 3
0
void proctl_service_init()
{
	const char *myname = "proctl_service_init";
	char  ebuf[256];

	__services = acl_array_create(10);
	__services_wait = acl_fifo_new();
	acl_pthread_mutex_init(&__mutex_running_service, NULL);
	acl_pthread_mutex_init(&__mutex_waiting_service, NULL);
	handles_init();

	__sem_handle = CreateSemaphore(NULL, 0, 1024, NULL);
	if (__sem_handle == NULL)
		acl_msg_fatal("%s(%d): CreateSemaphore error(%s)",
			myname, __LINE__, acl_last_strerror(ebuf, sizeof(ebuf)));
	handles_add(__sem_handle);
}
Exemplo n.º 4
0
static SERVICE *service_create(ACL_AIO *aio,
	ACL_FIFO *service_modules, ACL_ARGV *ip_argv)
{
	const char *myname = "service_create";
	ACL_FIFO *services;
	SERVICE *service, *curr_service = NULL;
	ACL_ITER iter;

	/* 关闭持续读功能 */
	acl_aio_set_keep_read(aio, 0);

	services = acl_fifo_new();

	/* 加载所有的服务模块 */
	acl_foreach(iter, service_modules) {
		MODULE_SERVICE *module = (MODULE_SERVICE*) iter.data;

		service = module->mod_create();
		if (service == NULL)
			continue;
		service->aio = aio;
		service->module = module;
		service->rw_timeout = 120;
		service->conn_timeout = 10;
		service_set_dns(service, aio,
				var_cfg_dns_list,
				var_cfg_dns_lookup_timeout,
				var_cfg_dns_cache_limit,
				var_cfg_hosts_list);
		/* 创建连接池缓存对象 */
		service->conn_cache = conn_cache_create(aio, var_cfg_server_conn_limit);

		if (ip_argv) {
			ACL_ITER iter2;
			int   i = 0;

			service->bind_ip_list = (char**)
				acl_mycalloc(ip_argv->argc + 1, sizeof(char*));
			service->bind_ip_index = 0;

			acl_foreach(iter2, ip_argv) {
				char *ip = (char*) iter2.data;
				service->bind_ip_list[i++] = acl_mystrdup(ip);
			}
			service->bind_ip_list[i] = NULL;
		} else {