QConf C\Cpp Doc - Qihoo360/QConf GitHub Wiki
C Interface
Environment initialisation and destroy functions.
qconf_init
int qconf_init();
Description
Initial qconf environment
Parameters
Return Value**
QCONF_OK if success, others if failed.
Example
int ret = qconf_init();
qconf_destroy
int qconf_destroy();
Description
destroy qconf environment
Parameters
Return Value
Example
qconf_destroy();
QConf access functions wait version, retry sometime if configure not exist
qconf_get_conf
int qconf_get_conf(const char *path, char *buf, unsigned int buf_len, const char *idc);
Description
get configure value
Parameters
path - key of configuration.
buf - out parameter, buffer for value
buf_len - lenghth of value buffer
idc - from which idc to get the value,get from local idc if idc is NULL
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_NOT_FOUND if configuration is not exists
Example
char value[QCONF_CONF_BUF_MAX_LEN];
int ret = qconf_get_conf("demo/conf1", value, sizeof(value), NULL);
assert(QCONF_OK == ret);
qconf_get_batch_keys
int qconf_get_batch_keys(const char *path, string_vector_t *nodes, const char *idc);
Description
get all children nodes'key
Parameters
path - key of configuration.
nodes - out parameter, keep all children nodes'key
idc - from which idc to get the keys,get from local idc if idc is NULL
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_NOT_FOUND if not exists
Example
string_vector_t bnodes_key;
init_string_vector(&bnodes_key);
int ret = qconf_get_batch_keys(path, &bnodes_key, NULL);
assert(QCONF_OK == ret);
for (i = 0; i < bnodes_key.count; i++)
{ cout << bnodes_key.data[i] << endl;}
destroy_string_vector(&bnodes_key);
qconf_get_batch_conf
int qconf_get_batch_conf(const char *path, string_vector_t *nodes, const char *idc);
Description
get all children nodes' key and value
Parameters
path - key of configuration.
nodes - out parameter, keep all children nodes' key and value
idc - from which idc to get the children configurations,get from local idc if idc is NULL
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_NOT_FOUND if not exists
Example
qconf_batch_nodes bnodes;
init_qconf_batch_nodes(&bnodes);
int ret = qconf_get_batch_conf(path, &bnodes, NULL);
assert(QCONF_OK == ret);
for (i = 0; i < bnodes.count; i++)
{cout << bnodes.nodes[i].key << " : " << bnodes.nodes[i].value;}
destroy_qconf_batch_nodes(&bnodes);
qconf_get_allhost
int qconf_get_allhost(const char *path, string_vector_t *nodes, const char *idc);
Description
get all available services under given path
Parameters
path - key of configuration.
nodes - out parameter, keep all available services
idc - from which idc to get the services,get from local idc if idc is NULL
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_NOT_FOUND if not exists
Example
string_vector_t nodes;
init_string_vector(&nodes);
int ret = qconf_get_batch_conf(path, &nodes, NULL);
assert(QCONF_OK == ret);
for (i = 0; i < nodes.count; i++)
{cout << nodes.data[i] << endl;}
destroy_string_vector(&nodes_key);
qconf_get_host
int qconf_get_host(const char *path, char *buf, unsigned int buf_len, const char *idc);
Description
get one available service
Parameters
path - key of configuration.
buf - out parameter, keep the service
buf_len - lenghth of buf
idc - from which idc to get the value,get from local idc if idc is NULL
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_NOT_FOUND if configuration is not exists
Example
char host[QCONF_HOST_BUF_MAX_LEN] = {0};
int ret = qconf_get_host(path, host, sizeof(host), NULL);
assert(QCONF_OK == ret);
Data structure related functions
typedef struct
{
int count; // the number of services
char **data; // the array of services
} string_vector_t;
init_string_vector
int init_string_vector(string_vector_t *nodes);
Description
initial array for keeping services
Tips: the function should be called before calling qconf_get_batchkeys or qconf_get_allhosts
Parameters
nodes - out parameter, the array for keeping batch keys or services
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_PARAM if nodes is null
Example
string_vector_t bnodes_key;
init_string_vector(&bnodes_key);
destroy_string_vector
int destroy_string_vector(string_vector_t *nodes);
Description
destroy the array for keeping batch keys or services
Tips: remember to call this function after the last use of string_vector_t
Parameters
nodes - out parameter, qconf_batch_nodes keeping batch keys or services
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_PARAM if nodes is null
Example
qconf_batch_nodes nodes;
destroy_string_vector(&nodes);
typedef struct qconf_node
{
char *key;
char *value;
} qconf_node;
typedef struct qconf_batch_nodes
{
int count;
qconf_node *nodes;
} qconf_batch_nodes;
init_qconf_batch_nodes
int init_qconf_batch_nodes(qconf_batch_nodes *bnodes);
Description
initial nodes array for keeping batch conf
Tips: the function should be called before calling qconf_get_batchconf
Parameters
bnodes - out parameter, qconf_batch_nodes to keeping batch nodes
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_PARAM if nodes is null
Example
qconf_batch_nodes bnodes;
init_qconf_batch_nodes(&bnodes);
destroy_qconf_batch_nodes
int destroy_qconf_batch_nodes(qconf_batch_nodes *bnodes);
Description
destroy the nodes array for keeping batch conf
Tips: remember to call this function after the last use of qconf_batch_nodes
Parameters
bnodes - out parameter, qconf_batch_nodes keeping batch nodes
Return Value
QCONF_OK if success, others if failed. QCONF_ERR_PARAM if nodes is null
Example
qconf_batch_nodes bnodes;
destroy_qconf_batch_nodes(&bnodes);
Shell Command
Usage:
qconf command key [idc]
command: can be one of below commands:
get_conf : get configure value
get_host : get one service
get_allhost : get all services available
get_batch_keys : get all children keys
key : the path of your configure items
idc : query from current idc if be omitted
Example:
qconf get_conf "demo/conf"
qconf get_conf "demo/conf" "test"
qconf get_host "demo/hosts"
qconf get_host "demo/hosts" "test"
qconf get_allhost "demo/hosts"
qconf get_allhost "demo/hosts" "test"
qconf get_conf "demo/batch"
qconf get_conf "demo/batch" "test"