Name

lcb_set_flush_callback — Set callback for flush operations

Synopsis

cc [ flag … ] file… -lcouchbase [ library … ]

#include <libcouchbase/couchbase.h>
lcb_flush_callback lcb_set_flush_callback(lcb_t instance, lcb_flush_callback callback);

DESCRIPTION

lcb_set_flush_callback() is used to set a new callback function to handle flush commands for a given libcouchbase instance.

The callback parameter is a the callback function to call for each flush response. Passing NULL as the callback function may be used to query the current callback function. The lcb_flush_callback is a function with the following signature:

void function(lcb_t instance,
              const void* cookie,
              lcb_error_t error,
              lcb_flush_resp_t * resp);

instance is the libcouchbase instance that this response is called from. The cookie is cookie you passed to lcb_flush. error is the error status of this operation. If the error is LCB_SUCCESS the resp is a pointer to the result for the operation. lcb_flush_resp_t is a structure defined in <libcouchbase/arguments.h>:

typedef struct lcb_flush_resp_st {
    int version;              /* The enty in "v" to use */
    union {
        struct {
            const char *server_endpoint;
        } v0;
    } v;
} lcb_flush_resp_t;

The callback function will be called multiple times (one time per server in the cluster) with a final call with server_enpoint set to NULL to indicate the last invocation of the callback.

RETURN VALUES

lcb_set_flush_callback() returns the previous callback function.

EXAMPLES

Example 1: Query the current callback

#include <libcouchbase/couchbase.h>
...
lcb_t instance;
...
lcb_flush_callback old;
old = lcb_set_flush_callback(instance, NULL);
...

Example 2: Install custom callback

#include <libcouchbase/couchbase.h>
...
static void callback(lcb_t instance, const void *cookie,
                     lcb_error_t error,
                     const lcb_flush_resp_t *resp)
{
   if (error == LCB_SUCCESS) {
      switch (resp->version) {
          ...
          /* handle the known formats */
          ...
      default:
          /* handle unknown formats */
      }
   } else {
      /* handle errors */
   }
}
...
lcb_t instance;
...
lcb_set_flush_callback(instance, callback);
...

ATTRIBUTES

See lcb_attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE

Interface Stability

Committed

MT-Level

MT-Safe

COPYRIGHT

Copyright 2010-2013 Couchbase, Inc.

SEE ALSO

Learn more at http://www.couchbase.com/communities/c.

libcouchbase(3lib), lcb_flush(3couchbase), lcb_attributes(5)