Couchbase C Client
3.3.14
Asynchronous C Client for Couchbase
|
Get/Set Library Options
The lcb_cntl() function and its various helpers are the means by which to modify settings within the library
Topics | |
Setting List | |
lcb_STATUS lcb_cntl | ( | lcb_INSTANCE * | instance, |
int | mode, | ||
int | cmd, | ||
void * | arg ) |
This function exposes an ioctl/fcntl-like interface to read and write various configuration properties to and from an lcb_INSTANCE *handle.
instance | The instance to modify |
mode | One of LCB_CNTL_GET (to retrieve a setting) or LCB_CNTL_SET (to modify a setting). Note that not all configuration properties support SET. |
cmd | The specific command/property to modify. This is one of the LCB_CNTL_* constants defined in this file. Note that it is safe (and even recommanded) to use the raw numeric value (i.e. to be backwards and forwards compatible with libcouchbase versions), as they are not subject to change. |
Using the actual value may be useful in ensuring your application will still compile with an older libcouchbase version (though you may get a runtime error (see return) if the command is not supported
arg | The argument passed to the configuration handler. The actual type of this pointer is dependent on the command in question. Typically for GET operations, the value of 'arg' is set to the current configuration value; and for SET operations, the current configuration is updated with the contents of *arg. |
The following error codes are returned if the LCB_CNTL_DETAILED_ERRCODES are enabled.
lcb_STATUS lcb_cntl_string | ( | lcb_INSTANCE * | instance, |
const char * | key, | ||
const char * | value ) |
Alternatively one may change configuration settings by passing a string key and value.
This may be used to provide a simple interface from a command line or higher level language to allow the setting of specific key-value pairs.
The format for the value is dependent on the option passed, the following value types exist:
"1.5"
for 1.5 seconds), or in microseconds ("1500000"
). In releases prior to libcouchbase 2.8, this was called timeout."1"
) or the string "true"
. A false value is a zero (i.e. "0"
) or the string "false"
."2.4"
.char *
, e.g. for client identification string.Code | Name | Type |
---|---|---|
LCB_CNTL_OP_TIMEOUT | "operation_timeout" | Timeval |
LCB_CNTL_VIEW_TIMEOUT | "view_timeout" | Timeval |
LCB_CNTL_QUERY_TIMEOUT | "n1ql_timeout" | Timeval |
LCB_CNTL_HTTP_TIMEOUT | "http_timeout" | Timeval |
LCB_CNTL_CONFIG_POLL_INTERVAL | "config_poll_interval" | Timeval |
LCB_CNTL_CONFERRTHRESH | "error_thresh_count" | Number (Positive) |
LCB_CNTL_CONFIGURATION_TIMEOUT | "config_total_timeout" | Timeval |
LCB_CNTL_CONFIG_NODE_TIMEOUT | "config_node_timeout" | Timeval |
LCB_CNTL_CONFDELAY_THRESH | "error_thresh_delay" | Timeval |
LCB_CNTL_DURABILITY_TIMEOUT | "durability_timeout" | Timeval |
LCB_CNTL_DURABILITY_INTERVAL | "durability_interval" | Timeval |
LCB_CNTL_RANDOMIZE_BOOTSTRAP_HOSTS | "randomize_nodes" | Boolean |
LCB_CNTL_CONFIGCACHE | "config_cache" | Path |
LCB_CNTL_DETAILED_ERRCODES | "detailed_errcodes" | Boolean |
LCB_CNTL_HTCONFIG_URLTYPE | "http_urlmode" | Number (enum lcb_HTCONFIG_URLTYPE) |
LCB_CNTL_RETRY_INTERVAL | "retry_interval" | Timeval |
LCB_CNTL_HTTP_POOLSIZE | "http_poolsize" | Number |
LCB_CNTL_VBGUESS_PERSIST | "vbguess_persist" | Boolean |
LCB_CNTL_CONLOGGER_LEVEL | "console_log_level" | Number (enum #lcb_log_severity_t) |
LCB_CNTL_ENABLE_MUTATION_TOKENS | "enable_mutation_tokens" | Boolean |
LCB_CNTL_TCP_NODELAY | "tcp_nodelay" | Boolean |
LCB_CNTL_CONLOGGER_FP | "console_log_file" | FILE*, Path |
LCB_CNTL_CLIENT_STRING | "client_string" | String |
LCB_CNTL_TCP_KEEPALIVE | "tcp_keepalive" | Boolean |
LCB_CNTL_CONFIG_POLL_INTERVAL | "config_poll_interval" | Timeval |
LCB_CNTL_IP6POLICY | "ipv6" | String ("disabled", "only", "allow") |
lcb_STATUS lcb_cntl_setu32 | ( | lcb_INSTANCE * | instance, |
int | cmd, | ||
lcb_U32 | arg ) |
Convenience function to set a value as an lcb_U32.
instance | |
cmd | setting to modify |
arg | the new value |
lcb_U32 lcb_cntl_getu32 | ( | lcb_INSTANCE * | instance, |
int | cmd ) |
Retrieve an lcb_U32 setting.
instance | |
cmd | setting to retrieve |
int lcb_cntl_exists | ( | int | ctl | ) |
Determine if a specific control code exists.
ctl | the code to check for |
void lcb_refresh_config | ( | lcb_INSTANCE * | instance | ) |
Force the library to refetch the cluster configuration.
The library by default employs various heuristics to determine if a new configuration is needed from the cluster. However there are some situations in which an application may wish to force a refresh of the configuration:
LCB_ERR_NO_MATCHING_SERVER
for the given item and will not request a new configuration. In this state, the client will not perform any network I/O until a request has been made to it using a key that is mapped to a known active node.This function is provided as an aid to assist in such situations
If you wish for your application to block until a new configuration is received, you must call lcb_wait() with the LCB_WAIT_NO_CHECK flag as this function call is not bound to a specific operation. Additionally there is no status notification as to whether this operation succeeded or failed (the configuration callback via lcb_set_configuration_callback() may provide hints as to whether a configuration was received or not, but by no means should be considered to be part of this function's control flow).
In general the use pattern of this function is like so: