libcouchbase 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +11 -8
- data/ext/libcouchbase/CMakeLists.txt +1 -1
- data/ext/libcouchbase/README.markdown +38 -6
- data/ext/libcouchbase/RELEASE_NOTES.markdown +151 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +2 -2
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
- data/ext/libcouchbase/cmake/source_files.cmake +1 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +686 -288
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +0 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +17 -17
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +76 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +66 -15
- data/ext/libcouchbase/contrib/genhash/genhash.c +1 -2
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4 -3
- data/ext/libcouchbase/example/instancepool/main.cc +12 -2
- data/ext/libcouchbase/example/libeventdirect/main.c +99 -25
- data/ext/libcouchbase/example/minimal/minimal.c +7 -5
- data/ext/libcouchbase/example/observe/durability.c +102 -0
- data/ext/libcouchbase/example/observe/observe.c +19 -6
- data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +1 -2
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +6 -8
- data/ext/libcouchbase/include/libcouchbase/cntl.h +84 -64
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +295 -78
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +2 -2
- data/ext/libcouchbase/include/libcouchbase/error.h +1 -1
- data/ext/libcouchbase/include/libcouchbase/iops.h +9 -9
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +2 -2
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +69 -7
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +17 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +3 -3
- data/ext/libcouchbase/include/memcached/protocol_binary.h +62 -1
- data/ext/libcouchbase/packaging/deb/control +1 -1
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +37 -36
- data/ext/libcouchbase/src/bootstrap.cc +22 -8
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +1 -1
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +0 -1
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +13 -8
- data/ext/libcouchbase/src/callbacks.c +2 -0
- data/ext/libcouchbase/src/cntl.cc +28 -17
- data/ext/libcouchbase/src/dns-srv.cc +1 -2
- data/ext/libcouchbase/src/dump.cc +4 -0
- data/ext/libcouchbase/src/errmap.h +89 -16
- data/ext/libcouchbase/src/handler.cc +28 -11
- data/ext/libcouchbase/src/http/http-priv.h +4 -1
- data/ext/libcouchbase/src/http/http.cc +3 -0
- data/ext/libcouchbase/src/instance.cc +1 -1
- data/ext/libcouchbase/src/internal.h +1 -0
- data/ext/libcouchbase/src/lcbio/connect.cc +2 -3
- data/ext/libcouchbase/src/lcbio/manager.cc +2 -2
- data/ext/libcouchbase/src/lcbio/ssl.h +10 -0
- data/ext/libcouchbase/src/mc/mcreq.c +8 -0
- data/ext/libcouchbase/src/mcserver/mcserver.cc +14 -1
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +0 -3
- data/ext/libcouchbase/src/n1ql/n1ql.cc +22 -29
- data/ext/libcouchbase/src/n1ql/params.cc +46 -1
- data/ext/libcouchbase/src/newconfig.cc +4 -4
- data/ext/libcouchbase/src/operations/durability-seqno.cc +4 -0
- data/ext/libcouchbase/src/operations/durability.cc +3 -0
- data/ext/libcouchbase/src/operations/ping.cc +315 -0
- data/ext/libcouchbase/src/operations/stats.cc +10 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +13 -1
- data/ext/libcouchbase/src/retrychk.cc +1 -0
- data/ext/libcouchbase/src/settings.c +2 -0
- data/ext/libcouchbase/src/settings.h +13 -7
- data/ext/libcouchbase/src/ssl/ssl_c.c +28 -2
- data/ext/libcouchbase/src/ssl/ssl_common.c +3 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +15 -1
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +3 -1
- data/ext/libcouchbase/src/timings.c +0 -1
- data/ext/libcouchbase/src/vbucket/vbucket.c +49 -1
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +58 -40
- data/ext/libcouchbase/tests/iotests/mock-environment.h +23 -4
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +8 -8
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +5 -5
- data/ext/libcouchbase/tests/iotests/t_durability.cc +50 -0
- data/ext/libcouchbase/tests/iotests/t_eerrs.cc +4 -2
- data/ext/libcouchbase/tests/iotests/t_errmap.cc +6 -3
- data/ext/libcouchbase/tests/iotests/t_lock.cc +5 -6
- data/ext/libcouchbase/tests/iotests/t_misc.cc +44 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +1 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +28 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +22 -10
- data/ext/libcouchbase/tools/CMakeLists.txt +21 -1
- data/ext/libcouchbase/tools/cbc-handlers.h +23 -3
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +1 -1
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +126 -26
- data/ext/libcouchbase/tools/cbc-proxy.cc +403 -0
- data/ext/libcouchbase/tools/cbc-subdoc.cc +826 -0
- data/ext/libcouchbase/tools/cbc.cc +149 -37
- data/ext/libcouchbase/tools/common/options.h +5 -2
- data/ext/libcouchbase/tools/linenoise/linenoise.c +15 -15
- data/lib/libcouchbase.rb +4 -0
- data/lib/libcouchbase/bucket.rb +51 -0
- data/lib/libcouchbase/connection.rb +100 -13
- data/lib/libcouchbase/ext/libcouchbase.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +13 -1
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +2 -1
- data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +5 -0
- data/lib/libcouchbase/subdoc_request.rb +129 -0
- data/lib/libcouchbase/version.rb +1 -1
- data/spec/bucket_spec.rb +15 -1
- data/spec/connection_spec.rb +1 -1
- data/spec/subdoc_spec.rb +192 -0
- metadata +13 -4
- data/ext/libcouchbase/.travis.yml +0 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
2
|
/*
|
|
3
|
-
* Copyright 2010-
|
|
3
|
+
* Copyright 2010-2017 Couchbase, Inc.
|
|
4
4
|
*
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
* you may not use this file except in compliance with the License.
|
|
@@ -33,7 +33,7 @@ struct lcb_st;
|
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* @ingroup lcb-init
|
|
36
|
-
* Library handle representing a connection to a data
|
|
36
|
+
* Library handle representing a connection to a cluster and its data buckets. The contents
|
|
37
37
|
* of this structure are opaque.
|
|
38
38
|
* @see lcb_create
|
|
39
39
|
* @see lcb_destroy
|
|
@@ -154,7 +154,7 @@ typedef lcb_U32 lcb_USECS;
|
|
|
154
154
|
*
|
|
155
155
|
* ### Options
|
|
156
156
|
*
|
|
157
|
-
* @warning The key-value options here are considered to be
|
|
157
|
+
* @warning The key-value options here are considered to be an uncommitted interface
|
|
158
158
|
* as their names may change.
|
|
159
159
|
*
|
|
160
160
|
* Options can be specified as the _query_ part of the connection string,
|
|
@@ -235,6 +235,19 @@ typedef enum {
|
|
|
235
235
|
LCB_TYPE_CLUSTER = 0x01 /**< Handle for administrative access */
|
|
236
236
|
} lcb_type_t;
|
|
237
237
|
|
|
238
|
+
/**
|
|
239
|
+
* @brief Type of the bucket
|
|
240
|
+
*
|
|
241
|
+
* @see https://developer.couchbase.com/documentation/server/current/architecture/core-data-access-buckets.html
|
|
242
|
+
*/
|
|
243
|
+
typedef enum {
|
|
244
|
+
LCB_BTYPE_UNSPEC = 0x00, /**< Unknown or unspecified */
|
|
245
|
+
LCB_BTYPE_COUCHBASE = 0x01, /**< Data persisted and replicated */
|
|
246
|
+
LCB_BTYPE_EPHEMERAL = 0x02, /**< Data not persisted, but replicated */
|
|
247
|
+
LCB_BTYPE_MEMCACHED = 0x03 /**< Data not persisted and not replicated */
|
|
248
|
+
} lcb_BTYPE;
|
|
249
|
+
|
|
250
|
+
|
|
238
251
|
#ifndef __LCB_DOXYGEN__
|
|
239
252
|
/* These are definitions for some of the older fields of the `lcb_create_st`
|
|
240
253
|
* structure. They are here for backwards compatibility and should not be
|
|
@@ -270,8 +283,10 @@ struct lcb_create_st3 {
|
|
|
270
283
|
lcb_type_t type;
|
|
271
284
|
};
|
|
272
285
|
|
|
273
|
-
|
|
274
|
-
* @
|
|
286
|
+
/**
|
|
287
|
+
* @brief Wrapper structure for lcb_create()
|
|
288
|
+
* @see lcb_create_st3
|
|
289
|
+
*/
|
|
275
290
|
struct lcb_create_st {
|
|
276
291
|
/** Indicates which field in the @ref lcb_CRST_u union should be used. Set this to `3` */
|
|
277
292
|
int version;
|
|
@@ -483,10 +498,11 @@ typedef struct lcb_CMDBASE {
|
|
|
483
498
|
} lcb_CMDBASE;
|
|
484
499
|
|
|
485
500
|
/**
|
|
486
|
-
* @private
|
|
487
501
|
* Flag for lcb_CMDBASE::cmdflags which indicates that the lcb_CMDBASE::cookie
|
|
488
502
|
* is a special callback object. This flag is used internally within the
|
|
489
503
|
* library.
|
|
504
|
+
*
|
|
505
|
+
* @internal
|
|
490
506
|
*/
|
|
491
507
|
#define LCB_CMD_F_INTERNAL_CALLBACK (1 << 0)
|
|
492
508
|
|
|
@@ -498,8 +514,6 @@ typedef struct lcb_CMDBASE {
|
|
|
498
514
|
#define LCB_CMD_F_MULTIAUTH (1<<1)
|
|
499
515
|
|
|
500
516
|
/**
|
|
501
|
-
* @committed
|
|
502
|
-
*
|
|
503
517
|
* Set the key for the command.
|
|
504
518
|
* @param cmd A command derived from lcb_CMDBASE
|
|
505
519
|
* @param keybuf the buffer for the key
|
|
@@ -517,8 +531,6 @@ typedef struct lcb_CMDBASE {
|
|
|
517
531
|
LCB_KREQ_SIMPLE(&(cmd)->key, keybuf, keylen)
|
|
518
532
|
|
|
519
533
|
/**
|
|
520
|
-
* @volatile
|
|
521
|
-
*
|
|
522
534
|
* Sets the vBucket ID for the item. This accomplishes the same effect as
|
|
523
535
|
* _hashkey_ except that this assumes the vBucket has already been obtained.
|
|
524
536
|
*
|
|
@@ -526,6 +538,7 @@ typedef struct lcb_CMDBASE {
|
|
|
526
538
|
*
|
|
527
539
|
* @param cmd the command structure
|
|
528
540
|
* @param vbid the vBucket ID for the key.
|
|
541
|
+
* @volatile
|
|
529
542
|
*/
|
|
530
543
|
#define LCB_CMD__SETVBID(cmd, vbid) do { \
|
|
531
544
|
(cmd)->_hashkey.type = LCB_KV_VBID; \
|
|
@@ -577,7 +590,8 @@ typedef struct lcb_CMDBASE {
|
|
|
577
590
|
lcb_CAS cas; /**< CAS for response (if applicable) */ \
|
|
578
591
|
lcb_error_t rc; /**< Status code */ \
|
|
579
592
|
lcb_U16 version; /**< ABI version for response */ \
|
|
580
|
-
|
|
593
|
+
/** Response specific flags. see ::lcb_RESPFLAGS */ \
|
|
594
|
+
lcb_U16 rflags;
|
|
581
595
|
|
|
582
596
|
|
|
583
597
|
/**
|
|
@@ -594,7 +608,8 @@ typedef struct {
|
|
|
594
608
|
/** String containing the `host:port` of the server which sent this response */ \
|
|
595
609
|
const char *server;
|
|
596
610
|
|
|
597
|
-
|
|
611
|
+
/**
|
|
612
|
+
* @brief Base structure for informational commands from servers
|
|
598
613
|
* This contains an additional lcb_RESPSERVERBASE::server field containing the
|
|
599
614
|
* server which emitted this response.
|
|
600
615
|
*/
|
|
@@ -675,6 +690,8 @@ typedef enum {
|
|
|
675
690
|
LCB_CALLBACK_STOREDUR, /** <for lcb_storedur3() */
|
|
676
691
|
LCB_CALLBACK_SDLOOKUP,
|
|
677
692
|
LCB_CALLBACK_SDMUTATE,
|
|
693
|
+
LCB_CALLBACK_NOOP, /**< lcb_noop3() */
|
|
694
|
+
LCB_CALLBACK_PING, /**< lcb_ping3() */
|
|
678
695
|
LCB_CALLBACK__MAX /* Number of callbacks */
|
|
679
696
|
} lcb_CALLBACKTYPE;
|
|
680
697
|
|
|
@@ -689,11 +706,10 @@ typedef enum {
|
|
|
689
706
|
/** Callback type for N1QL (cannot be used for lcb_install_callback3()) */
|
|
690
707
|
#define LCB_CALLBACK_N1QL -2
|
|
691
708
|
|
|
709
|
+
/** Callback type for N1QL index management (cannot be used for lcb_install_callback3()) */
|
|
692
710
|
#define LCB_CALLBACK_IXMGMT -3
|
|
693
711
|
|
|
694
712
|
/**
|
|
695
|
-
* @committed
|
|
696
|
-
*
|
|
697
713
|
* Callback invoked for responses.
|
|
698
714
|
* @param instance The handle
|
|
699
715
|
* @param cbtype The type of callback - or in other words, the type of operation
|
|
@@ -746,8 +762,6 @@ lcb_RESPCALLBACK
|
|
|
746
762
|
lcb_get_callback3(lcb_t instance, int cbtype);
|
|
747
763
|
|
|
748
764
|
/**
|
|
749
|
-
* @committed
|
|
750
|
-
*
|
|
751
765
|
* Returns the type of the callback as a string.
|
|
752
766
|
* This function is helpful for debugging and demonstrative processes.
|
|
753
767
|
* @param cbtype the type of the callback (the second argument to the callback)
|
|
@@ -814,7 +828,7 @@ typedef struct {
|
|
|
814
828
|
const void *value; /**< Value buffer for the item */
|
|
815
829
|
lcb_SIZE nvalue; /**< Length of value */
|
|
816
830
|
void* bufh;
|
|
817
|
-
lcb_datatype_t datatype; /**< @
|
|
831
|
+
lcb_datatype_t datatype; /**< @internal */
|
|
818
832
|
lcb_U32 itmflags; /**< User-defined flags for the item */
|
|
819
833
|
} lcb_RESPGET;
|
|
820
834
|
|
|
@@ -1152,7 +1166,7 @@ typedef struct {
|
|
|
1152
1166
|
* if (rb->rc == LCB_SUCCESS) {
|
|
1153
1167
|
* printf("Store success: CAS=%llx\n", rb->cas);
|
|
1154
1168
|
* } else {
|
|
1155
|
-
* printf("Store failed: %s\n",
|
|
1169
|
+
* printf("Store failed: %s\n", lcb_strerror(NULL, rb->rc);
|
|
1156
1170
|
* }
|
|
1157
1171
|
* }
|
|
1158
1172
|
* @endcode
|
|
@@ -1449,7 +1463,7 @@ typedef struct lcb_durability_opts_st {
|
|
|
1449
1463
|
|
|
1450
1464
|
/**Must specify this flag if using the 'mutation_token' field, as it was added in
|
|
1451
1465
|
* a later version */
|
|
1452
|
-
#define LCB_CMDENDURE_F_MUTATION_TOKEN 1<<16
|
|
1466
|
+
#define LCB_CMDENDURE_F_MUTATION_TOKEN (1 << 16)
|
|
1453
1467
|
|
|
1454
1468
|
/**@brief Command structure for endure.
|
|
1455
1469
|
* If the lcb_CMDENDURE::cas field is specified, the operation will check and
|
|
@@ -1630,7 +1644,7 @@ typedef struct {
|
|
|
1630
1644
|
LCB_CMD_BASE;
|
|
1631
1645
|
lcb_VALBUF value; /**< @see lcb_CMDSTORE::value */
|
|
1632
1646
|
lcb_U32 flags; /**< @see lcb_CMDSTORE::flags */
|
|
1633
|
-
lcb_datatype_t datatype; /**< @
|
|
1647
|
+
lcb_datatype_t datatype; /**< @internal */
|
|
1634
1648
|
lcb_storage_t operation; /**< @see lcb_CMDSTORE::operation */
|
|
1635
1649
|
|
|
1636
1650
|
/**
|
|
@@ -1675,7 +1689,7 @@ LIBCOUCHBASE_API
|
|
|
1675
1689
|
lcb_error_t
|
|
1676
1690
|
lcb_storedur3(lcb_t instance, const void *cookie, const lcb_CMDSTOREDUR *cmd);
|
|
1677
1691
|
|
|
1678
|
-
#define LCB_DURABILITY_VALIDATE_CAPMAX 1<<1
|
|
1692
|
+
#define LCB_DURABILITY_VALIDATE_CAPMAX (1 << 1)
|
|
1679
1693
|
|
|
1680
1694
|
/**
|
|
1681
1695
|
* @committed
|
|
@@ -1718,7 +1732,7 @@ lcb_durability_validate(lcb_t instance,
|
|
|
1718
1732
|
|
|
1719
1733
|
/**Set this bit in the cmdflags field to indicate that only the master node
|
|
1720
1734
|
* should be contacted*/
|
|
1721
|
-
#define LCB_CMDOBSERVE_F_MASTER_ONLY 1<<16
|
|
1735
|
+
#define LCB_CMDOBSERVE_F_MASTER_ONLY (1 << 16)
|
|
1722
1736
|
|
|
1723
1737
|
/**@brief Structure for an observe request.
|
|
1724
1738
|
* To request the status from _only_ the master node of the key, set the
|
|
@@ -1761,10 +1775,11 @@ typedef struct {
|
|
|
1761
1775
|
lcb_U32 ttr; /**<Unused */
|
|
1762
1776
|
} lcb_RESPOBSERVE;
|
|
1763
1777
|
|
|
1764
|
-
|
|
1778
|
+
/**
|
|
1765
1779
|
* @brief Create a new multi context for an observe operation
|
|
1766
1780
|
* @param instance the instance
|
|
1767
1781
|
* @return a new multi command context, or NULL on allocation failure.
|
|
1782
|
+
* @committed
|
|
1768
1783
|
*
|
|
1769
1784
|
* Note that the callback for this command will be invoked multiple times,
|
|
1770
1785
|
* one for each node. To determine when no more callbacks will be invoked,
|
|
@@ -1877,11 +1892,11 @@ lcb_observe_seqno3(lcb_t instance, const void *cookie, const lcb_CMDOBSEQNO *cmd
|
|
|
1877
1892
|
*/
|
|
1878
1893
|
|
|
1879
1894
|
/** Get the vBucket UUID */
|
|
1880
|
-
#define LCB_MUTATION_TOKEN_ID(p) (p)->uuid_
|
|
1895
|
+
#define LCB_MUTATION_TOKEN_ID(p) ((p)->uuid_)
|
|
1881
1896
|
/** Get the sequence number */
|
|
1882
|
-
#define LCB_MUTATION_TOKEN_SEQ(p) (p)->seqno_
|
|
1897
|
+
#define LCB_MUTATION_TOKEN_SEQ(p) ((p)->seqno_)
|
|
1883
1898
|
/** Get the vBucket number itself */
|
|
1884
|
-
#define LCB_MUTATION_TOKEN_VB(p) (p)->vbid_
|
|
1899
|
+
#define LCB_MUTATION_TOKEN_VB(p) ((p)->vbid_)
|
|
1885
1900
|
/** Whether this mutation token has valid contents */
|
|
1886
1901
|
#define LCB_MUTATION_TOKEN_ISVALID(p) \
|
|
1887
1902
|
(p && !((p)->uuid_ == 0 && (p)->seqno_ == 0 && (p)->vbid_ == 0))
|
|
@@ -1954,7 +1969,8 @@ lcb_get_mutation_token(lcb_t instance, const lcb_KEYBUF *kb, lcb_error_t *errp);
|
|
|
1954
1969
|
|
|
1955
1970
|
/**@} (Group: Mutation Tokens) */
|
|
1956
1971
|
|
|
1957
|
-
|
|
1972
|
+
/**
|
|
1973
|
+
* @ingroup lcb-kv-api
|
|
1958
1974
|
* @defgroup lcb-counter Counters
|
|
1959
1975
|
* @brief Manipulate the numeric content of a document
|
|
1960
1976
|
* @details Counter operations treat the document being accessed as a numeric
|
|
@@ -1965,7 +1981,8 @@ lcb_get_mutation_token(lcb_t instance, const lcb_KEYBUF *kb, lcb_error_t *errp);
|
|
|
1965
1981
|
* @{
|
|
1966
1982
|
*/
|
|
1967
1983
|
|
|
1968
|
-
|
|
1984
|
+
/**
|
|
1985
|
+
* @brief Command for counter operations.
|
|
1969
1986
|
* @see lcb_counter3(), lcb_RESPCOUNTER.
|
|
1970
1987
|
*
|
|
1971
1988
|
* @warning You may only set the #exptime member if the #create member is set
|
|
@@ -1989,7 +2006,8 @@ typedef struct {
|
|
|
1989
2006
|
int create;
|
|
1990
2007
|
} lcb_CMDCOUNTER;
|
|
1991
2008
|
|
|
1992
|
-
|
|
2009
|
+
/**
|
|
2010
|
+
* @brief Response structure for counter operations
|
|
1993
2011
|
* @see lcb_counter3()
|
|
1994
2012
|
*/
|
|
1995
2013
|
typedef struct {
|
|
@@ -2254,14 +2272,17 @@ typedef struct {
|
|
|
2254
2272
|
lcb_SIZE nversion; /**< Length of the version string */
|
|
2255
2273
|
} lcb_RESPMCVERSION;
|
|
2256
2274
|
|
|
2257
|
-
|
|
2275
|
+
/**
|
|
2276
|
+
* @volatile
|
|
2277
|
+
*/
|
|
2258
2278
|
LIBCOUCHBASE_API
|
|
2259
2279
|
lcb_error_t
|
|
2260
2280
|
lcb_server_versions3(lcb_t instance, const void *cookie, const lcb_CMDBASE * cmd);
|
|
2261
2281
|
|
|
2262
2282
|
/**@} (Name: MCversion) */
|
|
2263
2283
|
|
|
2264
|
-
|
|
2284
|
+
/**
|
|
2285
|
+
* @name Server Log Verbosity
|
|
2265
2286
|
* @{
|
|
2266
2287
|
*/
|
|
2267
2288
|
|
|
@@ -2287,7 +2308,8 @@ lcb_server_verbosity3(lcb_t instance, const void *cookie, const lcb_CMDVERBOSITY
|
|
|
2287
2308
|
/**@} (Name: Verbosity) */
|
|
2288
2309
|
/**@} (Group: Misc) */
|
|
2289
2310
|
|
|
2290
|
-
|
|
2311
|
+
/**
|
|
2312
|
+
* @ingroup lcb-public-api
|
|
2291
2313
|
* @defgroup lcb-flush Flush
|
|
2292
2314
|
* @brief Clear the contents of a bucket
|
|
2293
2315
|
*
|
|
@@ -2338,6 +2360,180 @@ lcb_error_t
|
|
|
2338
2360
|
lcb_flush3(lcb_t instance, const void *cookie, const lcb_CMDFLUSH *cmd);
|
|
2339
2361
|
/**@} (Group: Flush) */
|
|
2340
2362
|
|
|
2363
|
+
/**
|
|
2364
|
+
* @ingroup lcb-public-api
|
|
2365
|
+
* @defgroup lcb-noop NOOP
|
|
2366
|
+
* @brief Send NOOP command to server
|
|
2367
|
+
*
|
|
2368
|
+
* @addtogroup lcb-noop
|
|
2369
|
+
* @{
|
|
2370
|
+
*/
|
|
2371
|
+
typedef lcb_CMDBASE lcb_CMDNOOP;
|
|
2372
|
+
typedef lcb_RESPSERVERBASE lcb_RESPNOOP;
|
|
2373
|
+
|
|
2374
|
+
/**
|
|
2375
|
+
* @uncommitted
|
|
2376
|
+
*
|
|
2377
|
+
* Send NOOP to the node
|
|
2378
|
+
*
|
|
2379
|
+
* @param instance the library handle
|
|
2380
|
+
* @param cookie the cookie passed in the callback
|
|
2381
|
+
* @param cmd empty command structure.
|
|
2382
|
+
* @return status code for scheduling.
|
|
2383
|
+
*/
|
|
2384
|
+
LIBCOUCHBASE_API
|
|
2385
|
+
lcb_error_t
|
|
2386
|
+
lcb_noop3(lcb_t instance, const void *cookie, const lcb_CMDNOOP *cmd);
|
|
2387
|
+
/**@} (Group: NOOP) */
|
|
2388
|
+
|
|
2389
|
+
/**
|
|
2390
|
+
* @ingroup lcb-public-api
|
|
2391
|
+
* @defgroup lcb-ping PING
|
|
2392
|
+
* @brief Broadcast NOOP-like commands to each service in the cluster
|
|
2393
|
+
*
|
|
2394
|
+
* @addtogroup lcb-ping
|
|
2395
|
+
* @{
|
|
2396
|
+
*/
|
|
2397
|
+
|
|
2398
|
+
/**
|
|
2399
|
+
* Ping data (Key/Value) service. Used in lcb_CMDPING#services
|
|
2400
|
+
*/
|
|
2401
|
+
#define LCB_PINGSVC_F_KV 0x01
|
|
2402
|
+
|
|
2403
|
+
/**
|
|
2404
|
+
* Ping query (N1QL) service. Used in lcb_CMDPING#services
|
|
2405
|
+
*/
|
|
2406
|
+
#define LCB_PINGSVC_F_N1QL 0x02
|
|
2407
|
+
|
|
2408
|
+
/**
|
|
2409
|
+
* Ping views (Map/Reduce) service. Used in lcb_CMDPING#services
|
|
2410
|
+
*/
|
|
2411
|
+
#define LCB_PINGSVC_F_VIEWS 0x04
|
|
2412
|
+
|
|
2413
|
+
/**
|
|
2414
|
+
* Ping full text search (FTS) service. Used in lcb_CMDPING#services
|
|
2415
|
+
*/
|
|
2416
|
+
#define LCB_PINGSVC_F_FTS 0x08
|
|
2417
|
+
|
|
2418
|
+
/**
|
|
2419
|
+
* Do not record any metrics or status codes from ping responses.
|
|
2420
|
+
* This might be useful to reduce overhead, when user-space
|
|
2421
|
+
* keep-alive mechanism is not interested in actual latencies,
|
|
2422
|
+
* but rather need keep sockets active. Used in lcb_CMDPING#options
|
|
2423
|
+
*/
|
|
2424
|
+
#define LCB_PINGOPT_F_NOMETRICS 0x01
|
|
2425
|
+
|
|
2426
|
+
/**
|
|
2427
|
+
* Automatically encode PING result as JSON. See njson/json fields
|
|
2428
|
+
* of #lcb_RESPPING structure. Used in lcb_CMDPING#options
|
|
2429
|
+
*/
|
|
2430
|
+
#define LCB_PINGOPT_F_JSON 0x02
|
|
2431
|
+
|
|
2432
|
+
/**
|
|
2433
|
+
* Add extra details about service status into generated JSON.
|
|
2434
|
+
* Requires LCB_PINGOPT_F_JSON to be set. Used in lcb_CMDPING#options
|
|
2435
|
+
*/
|
|
2436
|
+
#define LCB_PINGOPT_F_JSONDETAILS 0x04
|
|
2437
|
+
|
|
2438
|
+
/**
|
|
2439
|
+
* Generate indented JSON, which is better for reading. Used in lcb_CMDPING#options
|
|
2440
|
+
*/
|
|
2441
|
+
#define LCB_PINGOPT_F_JSONPRETTY 0x08
|
|
2442
|
+
|
|
2443
|
+
/**
|
|
2444
|
+
* Structure for PING requests.
|
|
2445
|
+
*
|
|
2446
|
+
* @uncommitted
|
|
2447
|
+
*/
|
|
2448
|
+
typedef struct {
|
|
2449
|
+
LCB_CMD_BASE;
|
|
2450
|
+
int services; /**< bitmap for services to ping */
|
|
2451
|
+
int options; /**< extra options, e.g. for result representation */
|
|
2452
|
+
} lcb_CMDPING;
|
|
2453
|
+
|
|
2454
|
+
/**
|
|
2455
|
+
* Type of the service. This enumeration is used in PING responses.
|
|
2456
|
+
*
|
|
2457
|
+
* @uncommitted
|
|
2458
|
+
*/
|
|
2459
|
+
typedef enum {
|
|
2460
|
+
LCB_PINGSVC_KV = 0,
|
|
2461
|
+
LCB_PINGSVC_VIEWS,
|
|
2462
|
+
LCB_PINGSVC_N1QL,
|
|
2463
|
+
LCB_PINGSVC_FTS,
|
|
2464
|
+
LCB_PINGSVC__MAX
|
|
2465
|
+
} lcb_PINGSVCTYPE;
|
|
2466
|
+
|
|
2467
|
+
/**
|
|
2468
|
+
* Entry describing the status of the service in the cluster.
|
|
2469
|
+
* It is part of lcb_RESPING structure.
|
|
2470
|
+
*
|
|
2471
|
+
* @uncommitted
|
|
2472
|
+
*/
|
|
2473
|
+
typedef struct {
|
|
2474
|
+
lcb_PINGSVCTYPE type; /**< type of the service */
|
|
2475
|
+
char *server; /**< server host:port */
|
|
2476
|
+
lcb_U64 latency; /**< latency in nanoseconds */
|
|
2477
|
+
lcb_error_t status; /**< status of the operation */
|
|
2478
|
+
} lcb_PINGSVC;
|
|
2479
|
+
|
|
2480
|
+
/**
|
|
2481
|
+
* Structure for PING responses.
|
|
2482
|
+
*
|
|
2483
|
+
* @uncommitted
|
|
2484
|
+
*/
|
|
2485
|
+
typedef struct {
|
|
2486
|
+
LCB_RESP_BASE
|
|
2487
|
+
LCB_RESP_SERVER_FIELDS
|
|
2488
|
+
lcb_SIZE nservices; /**< number of the nodes, replied to ping */
|
|
2489
|
+
lcb_PINGSVC *services; /**< the nodes, replied to ping, if any */
|
|
2490
|
+
lcb_SIZE njson; /**< length of JSON string (when #LCB_PINGOPT_F_JSON was specified) */
|
|
2491
|
+
const char *json; /**< pointer to JSON string */
|
|
2492
|
+
} lcb_RESPPING;
|
|
2493
|
+
|
|
2494
|
+
/**
|
|
2495
|
+
* @brief Check connections by sending NOOP-like messages to all services.
|
|
2496
|
+
*
|
|
2497
|
+
* @uncommitted
|
|
2498
|
+
*
|
|
2499
|
+
* When no metrics, required, it is possible to reduce memory overhead
|
|
2500
|
+
* by turning off response contents using #LCB_PINGOPT_F_NOMETRICS.
|
|
2501
|
+
*
|
|
2502
|
+
* @par Request
|
|
2503
|
+
* @code{.c}
|
|
2504
|
+
* lcb_CMDPING cmd = { 0 };
|
|
2505
|
+
* // select services to ping
|
|
2506
|
+
* cmd.services = LCB_PINGSVC_F_KV | LCB_PINGSVC_F_N1QL;
|
|
2507
|
+
* lcb_ping3(instance, fp, &cmd);
|
|
2508
|
+
* lcb_wait(instance);
|
|
2509
|
+
* @endcode
|
|
2510
|
+
*
|
|
2511
|
+
* @par Response
|
|
2512
|
+
* @code{.c}
|
|
2513
|
+
* lcb_install_callback3(instance, LCB_CALLBACK_PING, ping_callback);
|
|
2514
|
+
* void ping_callback(lcb_t, int, const lcb_RESPBASE *rb)
|
|
2515
|
+
* {
|
|
2516
|
+
* const lcb_RESPPING *resp = (const lcb_RESPPING*)rb;
|
|
2517
|
+
* int ii;
|
|
2518
|
+
* for (ii = 0; ii < resp->nservices; ii++) {
|
|
2519
|
+
* printf("service: %s, status: %d, host: %s, latency: %lu nanoseconds\n",
|
|
2520
|
+
* resp->services[ii].type == LCB_PINGSVC_KV ? "KV" : "N1QL",
|
|
2521
|
+
* resp->services[ii].status,
|
|
2522
|
+
* resp->services[ii].server,
|
|
2523
|
+
* (unsigned long)resp->services[ii].latency);
|
|
2524
|
+
* }
|
|
2525
|
+
* }
|
|
2526
|
+
* @endcode
|
|
2527
|
+
* @param instance the library handle
|
|
2528
|
+
* @param cookie the cookie passed in the callback
|
|
2529
|
+
* @param cmd empty command structure.
|
|
2530
|
+
* @return status code for scheduling.
|
|
2531
|
+
*/
|
|
2532
|
+
LIBCOUCHBASE_API
|
|
2533
|
+
lcb_error_t
|
|
2534
|
+
lcb_ping3(lcb_t instance, const void *cookie, const lcb_CMDPING *cmd);
|
|
2535
|
+
/**@} (Group: PING) */
|
|
2536
|
+
|
|
2341
2537
|
/**@ingroup lcb-public-api
|
|
2342
2538
|
* @defgroup lcb-http HTTP Client
|
|
2343
2539
|
* @brief Access Couchbase HTTP APIs
|
|
@@ -2380,6 +2576,9 @@ typedef enum {
|
|
|
2380
2576
|
/** Search a fulltext index */
|
|
2381
2577
|
LCB_HTTP_TYPE_FTS = 4,
|
|
2382
2578
|
|
|
2579
|
+
/** Execute an Analytics Query */
|
|
2580
|
+
LCB_HTTP_TYPE_CBAS = 5,
|
|
2581
|
+
|
|
2383
2582
|
LCB_HTTP_TYPE_MAX
|
|
2384
2583
|
} lcb_http_type_t;
|
|
2385
2584
|
|
|
@@ -2406,20 +2605,20 @@ typedef enum {
|
|
|
2406
2605
|
* To use streaming requests, this flag should be set in the
|
|
2407
2606
|
* lcb_CMDHTTP::cmdflags field
|
|
2408
2607
|
*/
|
|
2409
|
-
#define LCB_CMDHTTP_F_STREAM 1<<16
|
|
2608
|
+
#define LCB_CMDHTTP_F_STREAM (1 << 16)
|
|
2410
2609
|
|
|
2411
2610
|
/**
|
|
2412
|
-
* @
|
|
2611
|
+
* @internal
|
|
2413
2612
|
* If specified, the lcb_CMDHTTP::cas field becomes the timeout for this
|
|
2414
2613
|
* specific request.
|
|
2415
2614
|
*/
|
|
2416
|
-
#define LCB_CMDHTTP_F_CASTMO 1<<17
|
|
2615
|
+
#define LCB_CMDHTTP_F_CASTMO (1 << 17)
|
|
2417
2616
|
|
|
2418
2617
|
/**
|
|
2419
|
-
* @
|
|
2618
|
+
* @internal
|
|
2420
2619
|
* Do not inject authentication header into the request.
|
|
2421
2620
|
*/
|
|
2422
|
-
#define LCB_CMDHTTP_F_NOUPASS 1<<18
|
|
2621
|
+
#define LCB_CMDHTTP_F_NOUPASS (1 << 18)
|
|
2423
2622
|
|
|
2424
2623
|
/**
|
|
2425
2624
|
* Structure for performing an HTTP request.
|
|
@@ -2485,7 +2684,7 @@ typedef struct {
|
|
|
2485
2684
|
const void *body;
|
|
2486
2685
|
/** Length of buffer in #body */
|
|
2487
2686
|
lcb_SIZE nbody;
|
|
2488
|
-
/**@
|
|
2687
|
+
/**@internal*/
|
|
2489
2688
|
lcb_http_request_t _htreq;
|
|
2490
2689
|
} lcb_RESPHTTP;
|
|
2491
2690
|
|
|
@@ -2575,7 +2774,8 @@ void
|
|
|
2575
2774
|
lcb_cancel_http_request(lcb_t instance, lcb_http_request_t request);
|
|
2576
2775
|
/**@} (Group: HTTP) */
|
|
2577
2776
|
|
|
2578
|
-
|
|
2777
|
+
/**
|
|
2778
|
+
* @ingroup lcb-public-api
|
|
2579
2779
|
* @defgroup lcb-cookie User Cookies
|
|
2580
2780
|
* @brief Associate user-defined data with operations
|
|
2581
2781
|
* @details
|
|
@@ -3036,10 +3236,10 @@ void lcb_destroy_async(lcb_t instance, const void *arg);
|
|
|
3036
3236
|
|
|
3037
3237
|
/**@}*/
|
|
3038
3238
|
|
|
3039
|
-
/** @
|
|
3239
|
+
/** @internal */
|
|
3040
3240
|
#define LCB_DATATYPE_JSON 0x01
|
|
3041
3241
|
|
|
3042
|
-
/** @
|
|
3242
|
+
/** @internal */
|
|
3043
3243
|
typedef enum { LCB_VALUE_RAW = 0x00, LCB_VALUE_F_JSON = 0x01, LCB_VALUE_F_SNAPPYCOMP } lcb_VALUEFLAGS;
|
|
3044
3244
|
|
|
3045
3245
|
|
|
@@ -3277,8 +3477,9 @@ lcb_dump(lcb_t instance, FILE *fp, lcb_U32 flags);
|
|
|
3277
3477
|
LIBCOUCHBASE_API
|
|
3278
3478
|
lcb_error_t lcb_cntl(lcb_t instance, int mode, int cmd, void *arg);
|
|
3279
3479
|
|
|
3480
|
+
|
|
3280
3481
|
/**
|
|
3281
|
-
*
|
|
3482
|
+
* Alternatively one may change configuration settings by passing a string key
|
|
3282
3483
|
* and value. This may be used to provide a simple interface from a command
|
|
3283
3484
|
* line or higher level language to allow the setting of specific key-value
|
|
3284
3485
|
* pairs.
|
|
@@ -3286,8 +3487,9 @@ lcb_error_t lcb_cntl(lcb_t instance, int mode, int cmd, void *arg);
|
|
|
3286
3487
|
* The format for the value is dependent on the option passed, the following
|
|
3287
3488
|
* value types exist:
|
|
3288
3489
|
*
|
|
3289
|
-
* - **
|
|
3290
|
-
* seconds (`"1.5"` for 1.5 seconds), or in microseconds (`"1500000"`).
|
|
3490
|
+
* - **Timeval**. A _timeval_ value can either be specified as fractional
|
|
3491
|
+
* seconds (`"1.5"` for 1.5 seconds), or in microseconds (`"1500000"`). In
|
|
3492
|
+
* releases prior to libcouchbase 2.8, this was called _timeout_.
|
|
3291
3493
|
* - **Number**. This is any valid numerical value. This may be signed or
|
|
3292
3494
|
* unsigned depending on the setting.
|
|
3293
3495
|
* - **Boolean**. This specifies a boolean. A true value is either a positive
|
|
@@ -3295,26 +3497,41 @@ lcb_error_t lcb_cntl(lcb_t instance, int mode, int cmd, void *arg);
|
|
|
3295
3497
|
* is a zero (i.e. `"0"`) or the string `"false"`.
|
|
3296
3498
|
* - **Float**. This is like a _Number_, but also allows fractional specification,
|
|
3297
3499
|
* e.g. `"2.4"`.
|
|
3298
|
-
*
|
|
3299
|
-
*
|
|
3300
|
-
*
|
|
3301
|
-
*
|
|
3302
|
-
*
|
|
3303
|
-
*
|
|
3304
|
-
*
|
|
3305
|
-
*
|
|
3306
|
-
* |@ref
|
|
3307
|
-
* |@ref
|
|
3308
|
-
* |@ref
|
|
3309
|
-
* |@ref
|
|
3310
|
-
* |@ref
|
|
3311
|
-
* |@ref
|
|
3312
|
-
* |@ref
|
|
3313
|
-
* |@ref
|
|
3314
|
-
* |@ref
|
|
3315
|
-
* |@ref
|
|
3316
|
-
* |@ref
|
|
3317
|
-
*
|
|
3500
|
+
* - **String**. Arbitrary string as `char *`, e.g. for client identification
|
|
3501
|
+
* string.
|
|
3502
|
+
* - **Path**. File path.
|
|
3503
|
+
* - **FILE*, Path**. Set file stream pointer (lcb_cntl() style) or file path
|
|
3504
|
+
* (lcb_cntl_string() style).
|
|
3505
|
+
*
|
|
3506
|
+
* | Code | Name | Type |
|
|
3507
|
+
* |-----------------------------------------|---------------------------|-------------------|
|
|
3508
|
+
* |@ref LCB_CNTL_OP_TIMEOUT | `"operation_timeout"` | Timeval |
|
|
3509
|
+
* |@ref LCB_CNTL_VIEW_TIMEOUT | `"view_timeout"` | Timeval |
|
|
3510
|
+
* |@ref LCB_CNTL_N1QL_TIMEOUT | `"n1ql_timeout"` | Timeval |
|
|
3511
|
+
* |@ref LCB_CNTL_HTTP_TIMEOUT | `"http_timeout"` | Timeval |
|
|
3512
|
+
* |@ref LCB_CNTL_CONFIG_POLL_INTERVAL | `"config_poll_interval"` | Timeval |
|
|
3513
|
+
* |@ref LCB_CNTL_CONFERRTHRESH | `"error_thresh_count"` | Number (Positive) |
|
|
3514
|
+
* |@ref LCB_CNTL_CONFIGURATION_TIMEOUT | `"config_total_timeout"` | Timeval |
|
|
3515
|
+
* |@ref LCB_CNTL_CONFIG_NODE_TIMEOUT | `"config_node_timeout"` | Timeval |
|
|
3516
|
+
* |@ref LCB_CNTL_CONFDELAY_THRESH | `"error_thresh_delay"` | Timeval |
|
|
3517
|
+
* |@ref LCB_CNTL_DURABILITY_TIMEOUT | `"durability_timeout"` | Timeval |
|
|
3518
|
+
* |@ref LCB_CNTL_DURABILITY_INTERVAL | `"durability_interval"` | Timeval |
|
|
3519
|
+
* |@ref LCB_CNTL_RANDOMIZE_BOOTSTRAP_HOSTS | `"randomize_nodes"` | Boolean |
|
|
3520
|
+
* |@ref LCB_CNTL_CONFIGCACHE | `"config_cache"` | Path |
|
|
3521
|
+
* |@ref LCB_CNTL_DETAILED_ERRCODES | `"detailed_errcodes"` | Boolean |
|
|
3522
|
+
* |@ref LCB_CNTL_HTCONFIG_URLTYPE | `"http_urlmode"` | Number (enum #lcb_HTCONFIG_URLTYPE) |
|
|
3523
|
+
* |@ref LCB_CNTL_RETRY_BACKOFF | `"retry_backoff"` | Float |
|
|
3524
|
+
* |@ref LCB_CNTL_RETRY_INTERVAL | `"retry_interval"` | Timeval |
|
|
3525
|
+
* |@ref LCB_CNTL_HTTP_POOLSIZE | `"http_poolsize"` | Number |
|
|
3526
|
+
* |@ref LCB_CNTL_VBGUESS_PERSIST | `"vbguess_persist"` | Boolean |
|
|
3527
|
+
* |@ref LCB_CNTL_CONLOGGER_LEVEL | `"console_log_level"` | Number (enum #lcb_log_severity_t) |
|
|
3528
|
+
* |@ref LCB_CNTL_FETCH_MUTATION_TOKENS | `"fetch_mutation_tokens"` | Boolean |
|
|
3529
|
+
* |@ref LCB_CNTL_DURABILITY_MUTATION_TOKENS | `"dur_mutation_tokens"` | Boolean |
|
|
3530
|
+
* |@ref LCB_CNTL_TCP_NODELAY | `"tcp_nodelay"` | Boolean |
|
|
3531
|
+
* |@ref LCB_CNTL_CONLOGGER_FP | `"console_log_file"` | FILE*, Path |
|
|
3532
|
+
* |@ref LCB_CNTL_CLIENT_STRING | `"client_string"` | String |
|
|
3533
|
+
* |@ref LCB_CNTL_TCP_KEEPALIVE | `"tcp_keepalive"` | Boolean |
|
|
3534
|
+
* |@ref LCB_CNTL_CONFIG_POLL_INTERVAL | `"config_poll_interval"` | Timeval |
|
|
3318
3535
|
*
|
|
3319
3536
|
* @committed - Note, the actual API call is considered committed and will
|
|
3320
3537
|
* not disappear, however the existence of the various string settings are
|
|
@@ -3601,7 +3818,7 @@ LIBCOUCHBASE_API
|
|
|
3601
3818
|
void lcb_mem_free(void *ptr);
|
|
3602
3819
|
|
|
3603
3820
|
/**
|
|
3604
|
-
* @
|
|
3821
|
+
* @internal
|
|
3605
3822
|
*
|
|
3606
3823
|
* These two functions unconditionally start and stop the event loop. These
|
|
3607
3824
|
* should be used _only_ when necessary. Use lcb_wait and lcb_breakout
|
|
@@ -3612,11 +3829,11 @@ void lcb_mem_free(void *ptr);
|
|
|
3612
3829
|
LCB_INTERNAL_API
|
|
3613
3830
|
void lcb_run_loop(lcb_t instance);
|
|
3614
3831
|
|
|
3615
|
-
/** @
|
|
3832
|
+
/** @internal */
|
|
3616
3833
|
LCB_INTERNAL_API
|
|
3617
3834
|
void lcb_stop_loop(lcb_t instance);
|
|
3618
3835
|
|
|
3619
|
-
/** @
|
|
3836
|
+
/** @internal */
|
|
3620
3837
|
/* This returns the library's idea of time */
|
|
3621
3838
|
LCB_INTERNAL_API
|
|
3622
3839
|
lcb_U64 lcb_nstime(void);
|
|
@@ -3632,34 +3849,34 @@ typedef enum {
|
|
|
3632
3849
|
LCB_DUMP_ALL = 0xff
|
|
3633
3850
|
} lcb_DUMPFLAGS;
|
|
3634
3851
|
|
|
3635
|
-
/**
|
|
3852
|
+
/** Volatile histogram APIs, used by pillowfight and others */
|
|
3636
3853
|
struct lcb_histogram_st;
|
|
3637
3854
|
typedef struct lcb_histogram_st lcb_HISTOGRAM;
|
|
3638
3855
|
|
|
3639
3856
|
/**
|
|
3640
|
-
* @
|
|
3857
|
+
* @volatile
|
|
3641
3858
|
* Create a histogram structure
|
|
3642
3859
|
* @return a new histogram structure
|
|
3643
3860
|
*/
|
|
3644
|
-
|
|
3861
|
+
LIBCOUCHBASE_API
|
|
3645
3862
|
lcb_HISTOGRAM *
|
|
3646
3863
|
lcb_histogram_create(void);
|
|
3647
3864
|
|
|
3648
3865
|
/**
|
|
3649
|
-
* @
|
|
3866
|
+
* @volatile free a histogram structure
|
|
3650
3867
|
* @param hg the histogram
|
|
3651
3868
|
*/
|
|
3652
|
-
|
|
3869
|
+
LIBCOUCHBASE_API
|
|
3653
3870
|
void
|
|
3654
3871
|
lcb_histogram_destroy(lcb_HISTOGRAM *hg);
|
|
3655
3872
|
|
|
3656
3873
|
/**
|
|
3657
|
-
* @
|
|
3874
|
+
* @volatile
|
|
3658
3875
|
* Add an entry to a histogram structure
|
|
3659
3876
|
* @param hg the histogram
|
|
3660
3877
|
* @param duration the duration in nanoseconds
|
|
3661
3878
|
*/
|
|
3662
|
-
|
|
3879
|
+
LIBCOUCHBASE_API
|
|
3663
3880
|
void
|
|
3664
3881
|
lcb_histogram_record(lcb_HISTOGRAM *hg, lcb_U64 duration);
|
|
3665
3882
|
|
|
@@ -3668,13 +3885,13 @@ typedef void (*lcb_HISTOGRAM_CALLBACK)
|
|
|
3668
3885
|
lcb_U32 total, lcb_U32 maxtotal);
|
|
3669
3886
|
|
|
3670
3887
|
/**
|
|
3671
|
-
* @
|
|
3888
|
+
* @volatile
|
|
3672
3889
|
* Repeatedly invoke a callback for all entries in the histogram
|
|
3673
3890
|
* @param hg the histogram
|
|
3674
3891
|
* @param cookie pointer passed to callback
|
|
3675
3892
|
* @param cb callback to invoke
|
|
3676
3893
|
*/
|
|
3677
|
-
|
|
3894
|
+
LIBCOUCHBASE_API
|
|
3678
3895
|
void
|
|
3679
3896
|
lcb_histogram_read(const lcb_HISTOGRAM *hg, const void *cookie,
|
|
3680
3897
|
lcb_HISTOGRAM_CALLBACK cb);
|
|
@@ -3689,7 +3906,7 @@ lcb_histogram_read(const lcb_HISTOGRAM *hg, const void *cookie,
|
|
|
3689
3906
|
* @param hg the histogram
|
|
3690
3907
|
* @param stream File to print the histogram to.
|
|
3691
3908
|
*/
|
|
3692
|
-
|
|
3909
|
+
LIBCOUCHBASE_API
|
|
3693
3910
|
void lcb_histogram_print(lcb_HISTOGRAM* hg, FILE* stream);
|
|
3694
3911
|
|
|
3695
3912
|
/**
|
|
@@ -3708,7 +3925,7 @@ const char *
|
|
|
3708
3925
|
lcb_resp_get_error_context(int cbtype, const lcb_RESPBASE *rb);
|
|
3709
3926
|
|
|
3710
3927
|
/**
|
|
3711
|
-
* @
|
|
3928
|
+
* @uncommitted
|
|
3712
3929
|
*
|
|
3713
3930
|
* Retrieves the error reference id from the response structure.
|
|
3714
3931
|
*
|