Exemplo n.º 1
0
Arquivo: dbt.c Projeto: badzong/mopher
void
dbt_driver_register(dbt_driver_t *dd)
{
	if (dd->dd_use_sql)
	{
		dd->dd_get = sql_db_get;
		dd->dd_set = sql_db_set;
		dd->dd_del = sql_db_del;
		dd->dd_walk = sql_db_walk;
		dd->dd_expire = sql_db_expire;
	}

	if (dd->dd_init)
	{
		dd->dd_init();
	}

	if((sht_insert(dbt_drivers, dd->dd_name, dd)) == -1)
	{
		log_die(EX_SOFTWARE, "dbt_driver_register: sht_insert for "
		    "driver \"%s\" failed", dd->dd_name);
	}

	log_info("dbt_driver_register: database driver \"%s\" registered",
	    dd->dd_name);

	return;
}
Exemplo n.º 2
0
int
hitlist_register(char *name)
{
	hitlist_t *hl;
	ll_t *keys;
	VAR_INT_T *create;
	VAR_INT_T *update;
	VAR_INT_T *count;
	VAR_INT_T *timeout;
	VAR_INT_T *extend;
	VAR_INT_T *cleanup;
        char *sum;
        char *table;
	char *value_field;
	char *expire_field;

	if (name == NULL)
	{
		log_die(EX_SOFTWARE, "hitlist_register: name is NULL");
	}

	keys = cf_get_value(VT_LIST, HITLIST_NAME, name, "keys", NULL);
	create = cf_get_value(VT_INT, HITLIST_NAME, name, "create", NULL);
	update = cf_get_value(VT_INT, HITLIST_NAME, name, "update", NULL);
	count = cf_get_value(VT_INT, HITLIST_NAME, name, "count", NULL);
	timeout = cf_get_value(VT_INT, HITLIST_NAME, name, "timeout", NULL);
	extend = cf_get_value(VT_INT, HITLIST_NAME, name, "extend", NULL);
	cleanup = cf_get_value(VT_INT, HITLIST_NAME, name, "cleanup", NULL);
	sum = cf_get_value(VT_STRING, HITLIST_NAME, name, "sum", NULL);
	table = cf_get_value(VT_STRING, HITLIST_NAME, name, "table", NULL);
	value_field = cf_get_value(VT_STRING, HITLIST_NAME, name, "value_field", NULL);
	expire_field = cf_get_value(VT_STRING, HITLIST_NAME, name, "expire_field", NULL);

	if (keys == NULL)
	{
		log_die(EX_SOFTWARE, "hitlist_register: %s: need keys", name);
	}

	if (keys->ll_size == 0)
	{
		log_die(EX_CONFIG, "hitlist_register: %s: keys is empty", name);
	}

	hl = hitlist_create(name, keys, create, update, count, timeout, extend,
	   cleanup, sum, table, value_field, expire_field);
	if (hl == NULL)
	{
		log_die(EX_SOFTWARE, "hitlist_register: hl_create failed");
	}

	if (sht_insert(hitlists, name, hl))
	{
		log_die(EX_SOFTWARE, "hitlist_register: sht_insert failed");
	}

	acl_symbol_register(name, MS_ANY, hitlist_lookup, AS_CACHE);
	
	return 0;
}
Exemplo n.º 3
0
void
watchdog(var_t *table, char *stage)
{
	watchdog_t *wd;
	char *id;

	if (pthread_mutex_lock(&watchdog_mutex))
	{
		log_sys_error("watchdog: pthread_mutex_lock");
		return;
	}

	watchdog_init();

	// In init id is not set. No problem.
	id = vtable_get(table, "id");
	if (id == NULL)
	{
		goto exit;
	}


	// Record does not exist
	wd = sht_lookup(&watchdog_table, id);
	if (wd == NULL)
	{
		wd = watchdog_create(id, stage);
		if (wd == NULL)
		{
			log_error("watchdog: watchdog_create failed");
			goto exit;
		}

		if (sht_insert(&watchdog_table, id, wd))
		{
			log_error("watchdog: sht_insert failed");
			goto exit;
		}
	}
	else
	{
		wd->wd_stage = stage;
		wd->wd_instage = time(NULL);
	}


exit:
	if (pthread_mutex_unlock(&watchdog_mutex))
	{
		log_sys_error("watchdog: pthread_mutex_unlock");
	}

	return;
}
Exemplo n.º 4
0
void
exp_define(char *name, exp_t *exp)
{
	if (sht_insert(exp_defs, name, exp))
	{
		log_debug("exp_define: sht_insert failed");
		log_die(EX_SOFTWARE, "Multiple definition of %s", name);
	}

	free(name);

	return;
}
Exemplo n.º 5
0
int
server_init()
{
	server_function_t *func;

	/*
	 * Don't start the server if server_socket is empty
	 */
	if (!cf_control_socket)
	{
		log_debug("server_init: server_socket is empty: exit");
		return 0;
	}

	/*
	 * Load function table
	 */
	if (sht_init(&server_function_table, FUNC_BUCKETS, NULL))
	{
		log_die(EX_SOFTWARE, "server_init: sht_init failed");
	}

	for (func = server_functions; func->sf_name; ++func)
	{
		if (sht_insert(&server_function_table, func->sf_name, func))
		{
			log_die(EX_SOFTWARE, "server_init: sht_insert failed");
		}
	}
	
	/*
	 * Create server socket
	 */
	server_socket = sock_listen(cf_control_socket, BACKLOG);
	if (server_socket == -1)
	{
		log_die(EX_SOFTWARE, "server_init: sock_listen failed");
	}

	/*
	 * Start server thread
	 */
	if (util_thread_create(&server_thread, server_main, NULL))
	{
		log_error("server_init: util_thread_create failed");
		return -1;
	}

	return 0;
}