Couchbase C Client  2.10.0
Asynchronous C Client for Couchbase

Detailed Description

Get/Set Library Options.

The lcb_cntl() function and its various helpers are the means by which to modify settings within the library

See also


 Setting List
 Adjust tunables for the client.


lcb_error_t lcb_cntl (lcb_t 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_t handle. More...
lcb_error_t lcb_cntl_string (lcb_t instance, const char *key, const char *value)
Alternatively one may change configuration settings by passing a string key and value. More...
lcb_error_t lcb_cntl_setu32 (lcb_t instance, int cmd, lcb_U32 arg)
Convenience function to set a value as an lcb_U32 More...
lcb_U32 lcb_cntl_getu32 (lcb_t instance, int cmd)
Retrieve an lcb_U32 setting More...
int lcb_cntl_exists (int ctl)
 Determine if a specific control code exists. More...

Function Documentation

◆ lcb_cntl()

lcb_error_t lcb_cntl ( lcb_t  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_t handle.

instanceThe instance to modify
modeOne of LCB_CNTL_GET (to retrieve a setting) or LCB_CNTL_SET (to modify a setting). Note that not all configuration properties support SET.
cmdThe 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

argThe 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.
LCB_NOT_SUPPORTED if the code is unrecognized
LCB_EINVAL if there was a problem with the argument (typically for LCB_CNTL_SET) other error codes depending on the command.

The following error codes are returned if the LCB_CNTL_DETAILED_ERRCODES are enabled.

LCB_ECTL_UNKNOWN if the code is unrecognized
LCB_ECTL_UNSUPPMODE An invalid mode was passed
LCB_ECTL_BADARG if the value was invalid
See also
example/analytics/analytics.c, example/fts/fts.c, and example/minimal/query.c.

◆ lcb_cntl_string()

lcb_error_t lcb_cntl_string ( lcb_t  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:

  • Timeval. A timeval value can either be specified as fractional seconds ("1.5" for 1.5 seconds), or in microseconds ("1500000"). In releases prior to libcouchbase 2.8, this was called timeout.
  • Number. This is any valid numerical value. This may be signed or unsigned depending on the setting.
  • Boolean. This specifies a boolean. A true value is either a positive numeric value (i.e. "1") or the string "true". A false value is a zero (i.e. "0") or the string "false".
  • Float. This is like a Number, but also allows fractional specification, e.g. "2.4".
  • String. Arbitrary string as char *, e.g. for client identification string.
  • Path. File path.
  • FILE*, Path. Set file stream pointer (lcb_cntl() style) or file path (lcb_cntl_string() style).
Code Name Type
LCB_CNTL_OP_TIMEOUT "operation_timeout" Timeval
LCB_CNTL_VIEW_TIMEOUT "view_timeout" Timeval
LCB_CNTL_N1QL_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_CONFIGCACHE "config_cache" Path
LCB_CNTL_DETAILED_ERRCODES "detailed_errcodes" Boolean
LCB_CNTL_RETRY_BACKOFF "retry_backoff" Float
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_FETCH_MUTATION_TOKENS "fetch_mutation_tokens" Boolean
LCB_CNTL_DURABILITY_MUTATION_TOKENS "dur_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")
  • Note, the actual API call is considered committed and will not disappear, however the existence of the various string settings are dependendent on the actual settings they map to. It is recommended that applications use the numerical lcb_cntl() as the string names are subject to change.
See also

◆ lcb_cntl_setu32()

lcb_error_t lcb_cntl_setu32 ( lcb_t  instance,
int  cmd,
lcb_U32  arg 

Convenience function to set a value as an lcb_U32

cmdsetting to modify
argthe new value
see lcb_cntl() for details

◆ lcb_cntl_getu32()

lcb_U32 lcb_cntl_getu32 ( lcb_t  instance,
int  cmd 

Retrieve an lcb_U32 setting

cmdsetting to retrieve
the value.
This function does not return an error code. Ensure that the cntl is correct for this version, or use lcb_cntl() directly.

◆ lcb_cntl_exists()

int lcb_cntl_exists ( int  ctl)

Determine if a specific control code exists.

ctlthe code to check for
0 if it does not exist, nonzero if it exists.