libcouchbase 0.0.1

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.
Files changed (561) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +35 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +24 -0
  8. data/README.md +389 -0
  9. data/Rakefile +75 -0
  10. data/ext/README.md +6 -0
  11. data/ext/Rakefile +20 -0
  12. data/ext/libcouchbase/.gitignore +130 -0
  13. data/ext/libcouchbase/.travis.yml +19 -0
  14. data/ext/libcouchbase/CMakeLists.txt +429 -0
  15. data/ext/libcouchbase/CONTRIBUTING.md +124 -0
  16. data/ext/libcouchbase/LICENSE +202 -0
  17. data/ext/libcouchbase/README.markdown +163 -0
  18. data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
  19. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -0
  20. data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
  21. data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
  22. data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +20 -0
  23. data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
  24. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
  25. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +52 -0
  26. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
  27. data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
  28. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
  29. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -0
  30. data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
  31. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
  32. data/ext/libcouchbase/cmake/config-cmake.h.in +60 -0
  33. data/ext/libcouchbase/cmake/configure +357 -0
  34. data/ext/libcouchbase/cmake/defs.mk.in +8 -0
  35. data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
  36. data/ext/libcouchbase/cmake/source_files.cmake +73 -0
  37. data/ext/libcouchbase/configure.pl +1 -0
  38. data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
  39. data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
  40. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
  41. data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
  42. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
  43. data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
  44. data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -0
  45. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
  46. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
  47. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
  48. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
  49. data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
  50. data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
  51. data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
  52. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
  53. data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
  54. data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
  55. data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
  56. data/ext/libcouchbase/contrib/genhash/genhash.h +235 -0
  57. data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
  58. data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
  59. data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
  60. data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
  61. data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
  62. data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
  63. data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
  64. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
  65. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
  66. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
  67. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
  68. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
  69. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
  70. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
  71. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
  72. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
  73. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
  74. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
  75. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
  76. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
  77. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
  78. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
  79. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
  80. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  81. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
  82. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
  83. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
  84. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
  85. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
  86. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
  87. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
  88. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
  89. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
  90. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
  91. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
  92. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
  93. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
  94. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
  95. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
  96. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
  97. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
  98. data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
  99. data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
  100. data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
  101. data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
  102. data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
  103. data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
  104. data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
  105. data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
  106. data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
  107. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
  108. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4892 -0
  109. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
  110. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -0
  111. data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
  112. data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
  113. data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
  114. data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
  115. data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
  116. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +71 -0
  117. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
  118. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
  119. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
  120. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +98 -0
  121. data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -0
  122. data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
  123. data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
  124. data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
  125. data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
  126. data/ext/libcouchbase/example/CMakeLists.txt +37 -0
  127. data/ext/libcouchbase/example/README.markdown +47 -0
  128. data/ext/libcouchbase/example/db/db.c +167 -0
  129. data/ext/libcouchbase/example/db/vb.c +227 -0
  130. data/ext/libcouchbase/example/instancepool/main.cc +102 -0
  131. data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
  132. data/ext/libcouchbase/example/instancepool/pool.h +69 -0
  133. data/ext/libcouchbase/example/libeventdirect/main.c +148 -0
  134. data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
  135. data/ext/libcouchbase/example/minimal/minimal.c +130 -0
  136. data/ext/libcouchbase/example/observe/observe.c +146 -0
  137. data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
  138. data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
  139. data/ext/libcouchbase/example/tick/tick.c +119 -0
  140. data/ext/libcouchbase/example/views/views-example.cc +83 -0
  141. data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
  142. data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
  143. data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
  144. data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
  145. data/ext/libcouchbase/include/libcouchbase/cbft.h +109 -0
  146. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
  147. data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
  148. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
  149. data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
  150. data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
  151. data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
  152. data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
  153. data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
  154. data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
  155. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
  156. data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
  157. data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
  158. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -0
  159. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
  160. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
  161. data/ext/libcouchbase/include/libcouchbase/subdoc.h +312 -0
  162. data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
  163. data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
  164. data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
  165. data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -0
  166. data/ext/libcouchbase/include/memcached/COPYING +30 -0
  167. data/ext/libcouchbase/include/memcached/README +10 -0
  168. data/ext/libcouchbase/include/memcached/protocol_binary.h +1916 -0
  169. data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
  170. data/ext/libcouchbase/packaging/README +7 -0
  171. data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
  172. data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
  173. data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
  174. data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
  175. data/ext/libcouchbase/packaging/deb/compat +1 -0
  176. data/ext/libcouchbase/packaging/deb/control +73 -0
  177. data/ext/libcouchbase/packaging/deb/copyright +10 -0
  178. data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
  179. data/ext/libcouchbase/packaging/deb/package.mk +31 -0
  180. data/ext/libcouchbase/packaging/deb/rules +46 -0
  181. data/ext/libcouchbase/packaging/deb/source/format +1 -0
  182. data/ext/libcouchbase/packaging/distinfo/README +1 -0
  183. data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
  184. data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
  185. data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
  186. data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
  187. data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
  188. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +108 -0
  189. data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
  190. data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
  191. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +466 -0
  192. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
  193. data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
  194. data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
  195. data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
  196. data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +29 -0
  197. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
  198. data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
  199. data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -0
  200. data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
  201. data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
  202. data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +42 -0
  203. data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
  204. data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
  205. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
  206. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
  207. data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
  208. data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
  209. data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
  210. data/ext/libcouchbase/src/README.md +103 -0
  211. data/ext/libcouchbase/src/aspend.h +106 -0
  212. data/ext/libcouchbase/src/auth.cc +74 -0
  213. data/ext/libcouchbase/src/auth.h +54 -0
  214. data/ext/libcouchbase/src/bootstrap.c +269 -0
  215. data/ext/libcouchbase/src/bootstrap.h +129 -0
  216. data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
  217. data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
  218. data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
  219. data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
  220. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
  221. data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
  222. data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
  223. data/ext/libcouchbase/src/callbacks.c +378 -0
  224. data/ext/libcouchbase/src/cbft.cc +210 -0
  225. data/ext/libcouchbase/src/cntl.cc +847 -0
  226. data/ext/libcouchbase/src/config_static.h +159 -0
  227. data/ext/libcouchbase/src/connspec.cc +462 -0
  228. data/ext/libcouchbase/src/connspec.h +105 -0
  229. data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
  230. data/ext/libcouchbase/src/dump.c +98 -0
  231. data/ext/libcouchbase/src/getconfig.c +100 -0
  232. data/ext/libcouchbase/src/gethrtime.c +109 -0
  233. data/ext/libcouchbase/src/handler.c +922 -0
  234. data/ext/libcouchbase/src/hashset.c +164 -0
  235. data/ext/libcouchbase/src/hashset.h +86 -0
  236. data/ext/libcouchbase/src/hashtable.c +75 -0
  237. data/ext/libcouchbase/src/hdr_timings.c +92 -0
  238. data/ext/libcouchbase/src/hostlist.cc +301 -0
  239. data/ext/libcouchbase/src/hostlist.h +171 -0
  240. data/ext/libcouchbase/src/http/http-priv.h +307 -0
  241. data/ext/libcouchbase/src/http/http.cc +633 -0
  242. data/ext/libcouchbase/src/http/http.h +34 -0
  243. data/ext/libcouchbase/src/http/http_io.cc +307 -0
  244. data/ext/libcouchbase/src/instance.cc +722 -0
  245. data/ext/libcouchbase/src/internal.h +244 -0
  246. data/ext/libcouchbase/src/iofactory.c +575 -0
  247. data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
  248. data/ext/libcouchbase/src/jsparse/parser.h +173 -0
  249. data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
  250. data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
  251. data/ext/libcouchbase/src/lcbio/connect.c +557 -0
  252. data/ext/libcouchbase/src/lcbio/connect.h +364 -0
  253. data/ext/libcouchbase/src/lcbio/ctx.c +611 -0
  254. data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
  255. data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
  256. data/ext/libcouchbase/src/lcbio/iotable.h +84 -0
  257. data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
  258. data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
  259. data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
  260. data/ext/libcouchbase/src/lcbio/manager.c +584 -0
  261. data/ext/libcouchbase/src/lcbio/manager.h +156 -0
  262. data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
  263. data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
  264. data/ext/libcouchbase/src/lcbio/ssl.h +149 -0
  265. data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
  266. data/ext/libcouchbase/src/lcbio/timer.c +132 -0
  267. data/ext/libcouchbase/src/legacy.c +430 -0
  268. data/ext/libcouchbase/src/list.c +144 -0
  269. data/ext/libcouchbase/src/list.h +127 -0
  270. data/ext/libcouchbase/src/logging.c +244 -0
  271. data/ext/libcouchbase/src/logging.h +86 -0
  272. data/ext/libcouchbase/src/mc/compress.c +90 -0
  273. data/ext/libcouchbase/src/mc/compress.h +61 -0
  274. data/ext/libcouchbase/src/mc/forward.c +186 -0
  275. data/ext/libcouchbase/src/mc/forward.h +90 -0
  276. data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
  277. data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
  278. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +111 -0
  279. data/ext/libcouchbase/src/mc/mcreq.c +954 -0
  280. data/ext/libcouchbase/src/mc/mcreq.h +977 -0
  281. data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
  282. data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
  283. data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
  284. data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
  285. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
  286. data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
  287. data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
  288. data/ext/libcouchbase/src/n1ql/params.cc +215 -0
  289. data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
  290. data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
  291. data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
  292. data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
  293. data/ext/libcouchbase/src/newconfig.c +385 -0
  294. data/ext/libcouchbase/src/nodeinfo.cc +194 -0
  295. data/ext/libcouchbase/src/operations/cbflush.c +71 -0
  296. data/ext/libcouchbase/src/operations/counter.c +116 -0
  297. data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
  298. data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
  299. data/ext/libcouchbase/src/operations/durability.c +668 -0
  300. data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
  301. data/ext/libcouchbase/src/operations/get.c +409 -0
  302. data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
  303. data/ext/libcouchbase/src/operations/observe.c +340 -0
  304. data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
  305. data/ext/libcouchbase/src/operations/remove.c +83 -0
  306. data/ext/libcouchbase/src/operations/stats.c +461 -0
  307. data/ext/libcouchbase/src/operations/store.c +360 -0
  308. data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
  309. data/ext/libcouchbase/src/operations/touch.c +81 -0
  310. data/ext/libcouchbase/src/packetutils.c +60 -0
  311. data/ext/libcouchbase/src/packetutils.h +147 -0
  312. data/ext/libcouchbase/src/probes.d +211 -0
  313. data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
  314. data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
  315. data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
  316. data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
  317. data/ext/libcouchbase/src/rdb/rope.c +419 -0
  318. data/ext/libcouchbase/src/rdb/rope.h +488 -0
  319. data/ext/libcouchbase/src/retrychk.c +113 -0
  320. data/ext/libcouchbase/src/retryq.c +424 -0
  321. data/ext/libcouchbase/src/retryq.h +157 -0
  322. data/ext/libcouchbase/src/ringbuffer.c +442 -0
  323. data/ext/libcouchbase/src/ringbuffer.h +100 -0
  324. data/ext/libcouchbase/src/settings.c +95 -0
  325. data/ext/libcouchbase/src/settings.h +188 -0
  326. data/ext/libcouchbase/src/simplestring.c +211 -0
  327. data/ext/libcouchbase/src/simplestring.h +228 -0
  328. data/ext/libcouchbase/src/sllist-inl.h +197 -0
  329. data/ext/libcouchbase/src/sllist.h +76 -0
  330. data/ext/libcouchbase/src/ssl/CMakeLists.txt +23 -0
  331. data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
  332. data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
  333. data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
  334. data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
  335. data/ext/libcouchbase/src/ssobuf.h +82 -0
  336. data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
  337. data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
  338. data/ext/libcouchbase/src/timings.c +208 -0
  339. data/ext/libcouchbase/src/trace.h +105 -0
  340. data/ext/libcouchbase/src/utilities.c +171 -0
  341. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
  342. data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
  343. data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
  344. data/ext/libcouchbase/src/vbucket/hash.h +30 -0
  345. data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
  346. data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
  347. data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
  348. data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
  349. data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
  350. data/ext/libcouchbase/src/vbucket/vbucket.c +1543 -0
  351. data/ext/libcouchbase/src/views/docreq.c +194 -0
  352. data/ext/libcouchbase/src/views/docreq.h +83 -0
  353. data/ext/libcouchbase/src/views/viewreq.c +358 -0
  354. data/ext/libcouchbase/src/views/viewreq.h +36 -0
  355. data/ext/libcouchbase/src/wait.c +161 -0
  356. data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
  357. data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
  358. data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
  359. data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
  360. data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
  361. data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
  362. data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
  363. data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
  364. data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -0
  365. data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
  366. data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
  367. data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
  368. data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
  369. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +18 -0
  370. data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
  371. data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
  372. data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
  373. data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
  374. data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
  375. data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
  376. data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
  377. data/ext/libcouchbase/tests/check-all.cc +608 -0
  378. data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -0
  379. data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
  380. data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
  381. data/ext/libcouchbase/tests/ioserver/ioserver.cc +104 -0
  382. data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
  383. data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
  384. data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
  385. data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
  386. data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
  387. data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
  388. data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
  389. data/ext/libcouchbase/tests/iotests/mock-environment.cc +524 -0
  390. data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -0
  391. data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
  392. data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
  393. data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
  394. data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
  395. data/ext/libcouchbase/tests/iotests/t_behavior.cc +226 -0
  396. data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
  397. data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
  398. data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
  399. data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -0
  400. data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
  401. data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
  402. data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
  403. data/ext/libcouchbase/tests/iotests/t_lock.cc +275 -0
  404. data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -0
  405. data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
  406. data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
  407. data/ext/libcouchbase/tests/iotests/t_netfail.cc +654 -0
  408. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
  409. data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
  410. data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
  411. data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
  412. data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
  413. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
  414. data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
  415. data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
  416. data/ext/libcouchbase/tests/iotests/testutil.cc +250 -0
  417. data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
  418. data/ext/libcouchbase/tests/mc/mctest.h +119 -0
  419. data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
  420. data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
  421. data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
  422. data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
  423. data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
  424. data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
  425. data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
  426. data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
  427. data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
  428. data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
  429. data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
  430. data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
  431. data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
  432. data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
  433. data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
  434. data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
  435. data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
  436. data/ext/libcouchbase/tests/socktests/socktest.cc +347 -0
  437. data/ext/libcouchbase/tests/socktests/socktest.h +448 -0
  438. data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
  439. data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
  440. data/ext/libcouchbase/tests/socktests/t_manager.cc +179 -0
  441. data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
  442. data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
  443. data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
  444. data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
  445. data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
  446. data/ext/libcouchbase/tests/start_mock.bat +15 -0
  447. data/ext/libcouchbase/tests/start_mock.sh +42 -0
  448. data/ext/libcouchbase/tests/unit_tests.cc +43 -0
  449. data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
  450. data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
  451. data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
  452. data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
  453. data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
  454. data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
  455. data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
  456. data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
  457. data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
  458. data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
  459. data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
  460. data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
  461. data/ext/libcouchbase/tools/cbc.cc +1541 -0
  462. data/ext/libcouchbase/tools/common/histogram.cc +43 -0
  463. data/ext/libcouchbase/tools/common/histogram.h +23 -0
  464. data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
  465. data/ext/libcouchbase/tools/common/options.cc +420 -0
  466. data/ext/libcouchbase/tools/common/options.h +81 -0
  467. data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
  468. data/ext/libcouchbase/tools/docgen/loc.h +210 -0
  469. data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
  470. data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
  471. data/lib/libcouchbase.rb +36 -0
  472. data/lib/libcouchbase/bucket.rb +819 -0
  473. data/lib/libcouchbase/callbacks.rb +72 -0
  474. data/lib/libcouchbase/connection.rb +790 -0
  475. data/lib/libcouchbase/design_docs.rb +86 -0
  476. data/lib/libcouchbase/error.rb +68 -0
  477. data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
  478. data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
  479. data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
  480. data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
  481. data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
  482. data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
  483. data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
  484. data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
  485. data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
  486. data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
  487. data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
  488. data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
  489. data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
  490. data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
  491. data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
  492. data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
  493. data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
  494. data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
  495. data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
  496. data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
  497. data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
  498. data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
  499. data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
  500. data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
  501. data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
  502. data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
  503. data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
  504. data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
  505. data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
  506. data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
  507. data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
  508. data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
  509. data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
  510. data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
  511. data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
  512. data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
  513. data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
  514. data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
  515. data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
  516. data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
  517. data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
  518. data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
  519. data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
  520. data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
  521. data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
  522. data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
  523. data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
  524. data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
  525. data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
  526. data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
  527. data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
  528. data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
  529. data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
  530. data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
  531. data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
  532. data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
  533. data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
  534. data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
  535. data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
  536. data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
  537. data/lib/libcouchbase/ext/tasks.rb +87 -0
  538. data/lib/libcouchbase/n1ql.rb +73 -0
  539. data/lib/libcouchbase/query_full_text.rb +147 -0
  540. data/lib/libcouchbase/query_n1ql.rb +121 -0
  541. data/lib/libcouchbase/query_view.rb +129 -0
  542. data/lib/libcouchbase/results_fiber.rb +262 -0
  543. data/lib/libcouchbase/results_native.rb +211 -0
  544. data/lib/libcouchbase/version.rb +5 -0
  545. data/libcouchbase.gemspec +61 -0
  546. data/spec/bucket_spec.rb +270 -0
  547. data/spec/connection_spec.rb +277 -0
  548. data/spec/design_docs_spec.rb +23 -0
  549. data/spec/error_spec.rb +26 -0
  550. data/spec/fts_spec.rb +129 -0
  551. data/spec/n1ql_spec.rb +201 -0
  552. data/spec/results_libuv_spec.rb +229 -0
  553. data/spec/results_native_spec.rb +259 -0
  554. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
  555. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
  556. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
  557. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
  558. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
  559. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
  560. data/spec/view_spec.rb +195 -0
  561. metadata +775 -0
@@ -0,0 +1,263 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2016 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #ifndef LCB_IXMGMT_H
19
+ #define LCB_IXMGMT_H
20
+
21
+ #include <libcouchbase/couchbase.h>
22
+ #include <libcouchbase/n1ql.h>
23
+
24
+ #ifdef __cplusplus
25
+ extern "C" {
26
+ #endif
27
+
28
+ /**
29
+ * @volatile
30
+ *
31
+ * Structure representing a single index definition
32
+ */
33
+ typedef struct {
34
+ /**
35
+ * Raw JSON returned from server.
36
+ * Can be used to decode fields in future versions not present within the
37
+ * library.
38
+ *
39
+ * This field can also be used as an input field to populate the other
40
+ * fields in this structure. This means that if you have a raw JSON
41
+ * representation of an index, you need only set this field (and
42
+ * `nrawjson`). The library will internally parse the raw JSON and
43
+ * populate the internal equivalents of the fields in this structure.
44
+ *
45
+ * Note that when using this field as an input for creating indexes, you
46
+ * should still set the ::flags field if you wish to set flags (e.g. in
47
+ * order to create a deferred-build index).
48
+ */
49
+ const char *rawjson;
50
+ size_t nrawjson;
51
+
52
+ /** Name of the index. For raw JSON, use the `name` propery */
53
+ const char *name;
54
+ size_t nname;
55
+
56
+ /**
57
+ * Keyspace or "bucket" of the index. For raw JSON, use the
58
+ * `keyspace_id` property
59
+ */
60
+ const char *keyspace;
61
+ size_t nkeyspace;
62
+
63
+ /** 'namespace'. Currently unused */
64
+ const char *nspace;
65
+ size_t nnspace;
66
+
67
+ /** Output parameter only. State of index */
68
+ const char *state;
69
+ size_t nstate;
70
+
71
+ /** Actual index text. For raw JSON use the `index_key` property.
72
+ * The value for this field is a properly-encoded JSON array of fields
73
+ * to index. e.g.
74
+ *
75
+ * @code{c}
76
+ * spec.fields = "[\"`name`\", \"`email`\", \"`ctime`\"]"
77
+ * @endcode
78
+ */
79
+ const char *fields;
80
+ size_t nfields;
81
+
82
+ /**Indexing condition. If set, only field values matching this condition
83
+ * will be indexed */
84
+ const char *cond;
85
+ size_t ncond;
86
+
87
+ /**
88
+ * Modifiers for the index itself. This might be
89
+ * LCB_N1XSPEC_F_PRIMARY if the index is primary. For raw JSON,
90
+ * use `"is_primary":true`
91
+ *
92
+ * For creation the LCB_N1XSPEC_F_DEFER option is also accepted to
93
+ * indicate that the building of this index should be deferred.
94
+ */
95
+ unsigned flags;
96
+
97
+ /**
98
+ * Type of this index, Can be LCB_N1XSPEC_T_DEFAULT for the default
99
+ * server type, or an explicit LCB_N1XSPEC_T_GSI or LCB_N1XSPEC_T_VIEW.
100
+ * When using JSON, specify `"using":"gsi"`
101
+ */
102
+ unsigned ixtype;
103
+ } lcb_N1XSPEC;
104
+
105
+ /** Input/Output flag. The index is the primary index for the bucket */
106
+ #define LCB_N1XSPEC_F_PRIMARY 1<<16
107
+
108
+ /**
109
+ * Input flag for creation. Defer the index building until later. This may
110
+ * be used to accelerate the building of multiple indexes, so that the index
111
+ * builder can construct all indexes by scanning items only once
112
+ */
113
+ #define LCB_N1XSPEC_F_DEFER 1<<17
114
+
115
+ /**
116
+ * Input for index type. It's best to just leave this value to 0 (DEFAULT)
117
+ * unless you know what you're doing.
118
+ */
119
+ #define LCB_N1XSPEC_T_DEFAULT 0
120
+ #define LCB_N1XSPEC_T_GSI 1
121
+ #define LCB_N1XSPEC_T_VIEW 2
122
+
123
+ struct lcb_RESPN1XMGMT_st;
124
+
125
+ /**
126
+ * Callback for index management operations
127
+ * @param instance
128
+ * @param cbtype - set to LCB_CALLBACK_N1XMGMT
129
+ * @param resp the response structure
130
+ */
131
+ typedef void (*lcb_N1XMGMTCALLBACK)(lcb_t instance,
132
+ int cbtype, const struct lcb_RESPN1XMGMT_st *resp);
133
+
134
+ /**
135
+ * @volatile
136
+ * Command for index management operations
137
+ */
138
+ typedef struct {
139
+ /**
140
+ * The index to operate on. This can either be a full definition
141
+ * (when creating an index)
142
+ * or a partial definition (when listing or building
143
+ * indexes)
144
+ */
145
+ lcb_N1XSPEC spec;
146
+
147
+ /**
148
+ * Callback to be invoked when operation is complete.
149
+ */
150
+ lcb_N1XMGMTCALLBACK callback;
151
+ } lcb_CMDN1XMGMT;
152
+
153
+ /**
154
+ * @volatile
155
+ *
156
+ * Response structure for index management operations
157
+ */
158
+ typedef struct lcb_RESPN1XMGMT_st {
159
+ LCB_RESP_BASE
160
+
161
+ /**
162
+ * A list of pointers to specs. This isn't a simple array of specs because
163
+ * the spec structure internally is backed by additional internal data.
164
+ */
165
+ const lcb_N1XSPEC *const *specs;
166
+ /** Number of specs */
167
+ size_t nspecs;
168
+
169
+ /** Inner N1QL response. Examine on error */
170
+ const lcb_RESPN1QL *inner;
171
+ } lcb_RESPN1XMGMT;
172
+
173
+ /**
174
+ * @volatile
175
+ *
176
+ * Retrieve a list of all indexes in the cluster. If lcb_CMDN1XMGMT::spec
177
+ * contains entries then the search will be limited to the appropriate criteria.
178
+ */
179
+ LIBCOUCHBASE_API
180
+ lcb_error_t
181
+ lcb_n1x_list(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
182
+
183
+ /**
184
+ * @volatile
185
+ *
186
+ * Create an index. The index can either be a primary or secondary index, and
187
+ * it may be created immediately or it may be deferred.
188
+ */
189
+ LIBCOUCHBASE_API
190
+ lcb_error_t
191
+ lcb_n1x_create(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
192
+
193
+ /**
194
+ * @volatile
195
+ * Remove an index.
196
+ */
197
+ LIBCOUCHBASE_API
198
+ lcb_error_t
199
+ lcb_n1x_drop(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
200
+
201
+ /**
202
+ * @volatile
203
+ *
204
+ * Build defered indexes. This may be used with the @ref LCB_N1XSPEC_F_DEFER
205
+ * option (see lcb_n1x_create()) to initiate the background creation of
206
+ * indexes.
207
+ *
208
+ * lcb_n1x_watchbuild may be used to wait on the status of those indexes.
209
+ */
210
+ LIBCOUCHBASE_API
211
+ lcb_error_t
212
+ lcb_n1x_startbuild(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
213
+
214
+ /**
215
+ * @volatile
216
+ *
217
+ * Structure used for polling index building statuses
218
+ */
219
+ typedef struct {
220
+ /**
221
+ * Input specs. This should be the specs received from lcb_n1x_startbuild()'s
222
+ * callback. If you are building from scratch, only the lcb_N1XSPEC::rawjson
223
+ * and lcb_INDEXSPEC::nrawjson need to be populated
224
+ */
225
+ const lcb_N1XSPEC * const *specs;
226
+ /** Number of specs */
227
+ size_t nspec;
228
+
229
+ /**
230
+ * Maximum amount of time to wait (microseconds).
231
+ * If not specified, the default is 30 seconds (30 * 100000)
232
+ */
233
+ lcb_U32 timeout;
234
+
235
+ /**
236
+ * How often to check status (microseconds).
237
+ * Default is 500 milliseconds (500000)
238
+ */
239
+ lcb_U32 interval;
240
+
241
+ /**
242
+ * Callback to invoke once the indexes have been built or the timeout
243
+ * has been reached.
244
+ *
245
+ * The callback is only invoked once.
246
+ */
247
+ lcb_N1XMGMTCALLBACK callback;
248
+ } lcb_CMDN1XWATCH;
249
+
250
+ /**
251
+ * @volatile
252
+ * Poll indexes being built. This allows you to wait until the specified indexes
253
+ * which are being built (using lcb_n1x_startbuild()) have been fully
254
+ * created.
255
+ */
256
+ LIBCOUCHBASE_API
257
+ lcb_error_t
258
+ lcb_n1x_watchbuild(lcb_t instance, const void *cookie, const lcb_CMDN1XWATCH *cmd);
259
+
260
+ #ifdef __cplusplus
261
+ }
262
+ #endif /* __cplusplus */
263
+ #endif /* LCB_IXMGMT_H */
@@ -0,0 +1,132 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2014 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #ifndef LCB_KVBUF_H
19
+ #define LCB_KVBUF_H
20
+
21
+ /**
22
+ * @file
23
+ *
24
+ * Low level structures used by commands for buffers.
25
+ */
26
+
27
+ #ifdef __cplusplus
28
+ extern "C" {
29
+ #endif
30
+
31
+
32
+ /** @brief Flags indicating the storage policy for a buffer */
33
+ typedef enum {
34
+ LCB_KV_COPY = 0, /**< The buffer should be copied */
35
+ LCB_KV_CONTIG, /**< The buffer is contiguous and should not be copied */
36
+ LCB_KV_IOV, /**< The buffer is not contiguous and should not be copied */
37
+
38
+ /**For use within the hashkey field, indicates that the _length_
39
+ * of the hashkey is the vBucket ID, rather than an actual hashkey */
40
+ LCB_KV_VBID,
41
+
42
+ /**
43
+ * The buffers are not contiguous (multi-part buffers) but should be
44
+ * copied. This avoids having to make the buffers contiguous before
45
+ * passing it into the library (only to have the library copy it again) */
46
+ LCB_KV_IOVCOPY
47
+ } lcb_KVBUFTYPE;
48
+
49
+ #define LCB_KV_HEADER_AND_KEY LCB_KV_CONTIG
50
+
51
+ /**
52
+ * @brief simple buf/length structure for a contiguous series of bytes
53
+ */
54
+ typedef struct lcb_CONTIGBUF {
55
+ const void *bytes;
56
+ /** Number of total bytes */
57
+ lcb_size_t nbytes;
58
+ } lcb_CONTIGBUF;
59
+
60
+ /** @brief Common request header for all keys */
61
+ typedef struct lcb_KEYBUF {
62
+ /**
63
+ * The type of key to provide. This can currently be LCB_KV_COPY (Default)
64
+ * to copy the key into the pipeline buffers, or LCB_KV_HEADER_AND_KEY
65
+ * to provide a buffer with the header storage and the key.
66
+ *
67
+ * TODO:
68
+ * Currently only LCB_KV_COPY should be used. LCB_KV_HEADER_AND_KEY is used
69
+ * internally but may be exposed later on
70
+ */
71
+ lcb_KVBUFTYPE type;
72
+ lcb_CONTIGBUF contig;
73
+ } lcb_KEYBUF;
74
+
75
+ /**@private*/
76
+ #define LCB_KEYBUF_IS_EMPTY(k) (k)->contig.nbytes == 0
77
+
78
+ /**
79
+ * @brief Initialize a contiguous request backed by a buffer which should be
80
+ * copied
81
+ * @param req the key request to initialize
82
+ * @param k the key to copy
83
+ * @param nk the size of the key
84
+ */
85
+ #define LCB_KREQ_SIMPLE(req, k, nk) do { \
86
+ (req)->type = LCB_KV_COPY; \
87
+ (req)->contig.bytes = k; \
88
+ (req)->contig.nbytes = nk; \
89
+ } while (0);
90
+
91
+ /**
92
+ * Structure for an IOV buffer to be supplied as a buffer. This is currently
93
+ * only used for value buffers
94
+ */
95
+ typedef struct lcb_FRAGBUF {
96
+ /** An IOV array */
97
+ lcb_IOV *iov;
98
+
99
+ /** Number of elements in iov array */
100
+ unsigned int niov;
101
+
102
+ /**
103
+ * Total length of the items. This should be set, if known, to prevent the
104
+ * library from manually traversing the iov array to calculate the length.
105
+ */
106
+ unsigned int total_length;
107
+ } lcb_FRAGBUF;
108
+
109
+ /** @brief Structure representing a value to be stored */
110
+ typedef struct lcb_VALBUF {
111
+ /**
112
+ * Value request type. This may be one of:
113
+ * - LCB_KV_COPY: Copy over the value into LCB's own buffers
114
+ * Use the 'contig' field to supply the information.
115
+ *
116
+ * - LCB_KV_CONTIG: The buffer is a contiguous chunk of value data.
117
+ * Use the 'contig' field to supply the information.
118
+ *
119
+ * - LCB_KV_IOV: The buffer is a series of IOV elements. Use the 'multi'
120
+ * field to supply the information.
121
+ */
122
+ lcb_KVBUFTYPE vtype;
123
+ union {
124
+ lcb_CONTIGBUF contig;
125
+ lcb_FRAGBUF multi;
126
+ } u_buf;
127
+ } lcb_VALBUF;
128
+
129
+ #ifdef __cplusplus
130
+ }
131
+ #endif
132
+ #endif
@@ -0,0 +1,364 @@
1
+ /*
2
+ * Copyright 2015 Couchbase, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ **/
16
+
17
+ #ifndef LCB_N1QL_API_H
18
+ #define LCB_N1QL_API_H
19
+ #include <libcouchbase/couchbase.h>
20
+ #include <libcouchbase/api3.h>
21
+
22
+ #ifdef __cplusplus
23
+ extern "C" {
24
+ #endif
25
+
26
+ /**
27
+ * @ingroup lcb-public-api
28
+ * @defgroup lcb-n1ql-api N1QL
29
+ * @brief Execute N1QL queries and receive resultant rows
30
+ */
31
+
32
+ /**
33
+ * @addtogroup lcb-n1ql-api
34
+ * @{
35
+ */
36
+ typedef struct lcb_RESPN1QL lcb_RESPN1QL;
37
+ typedef struct lcb_CMDN1QL lcb_CMDN1QL;
38
+ typedef struct lcb_N1QLREQ* lcb_N1QLHANDLE;
39
+
40
+ /**
41
+ * Callback to be invoked for each row
42
+ * @param The instance
43
+ * @param Callback type. This is set to @ref LCB_CALLBACK_N1QL
44
+ * @param The response.
45
+ */
46
+ typedef void (*lcb_N1QLCALLBACK)(lcb_t, int, const lcb_RESPN1QL*);
47
+
48
+ /**
49
+ * @name N1QL Parameters
50
+ *
51
+ * The following APIs simply provide wrappers for creating the proper HTTP
52
+ * form parameters for N1QL requests. The general flow is to create a
53
+ * parameters (@ref lcb_N1QLPARAMS) object, set various options and properties
54
+ * on it, and populate an @ref lcb_CMDN1QL object using the lcb_n1p_mkcmd()
55
+ * function.
56
+ *
57
+ * @{
58
+ */
59
+
60
+ /**
61
+ * Opaque object representing N1QL parameters.
62
+ * This object is created via lcb_n1p_new(), may be cleared
63
+ * (for use with another query) via lcb_n1p_reset(), and may be freed via
64
+ * lcb_n1p_free().
65
+ */
66
+ typedef struct lcb_N1QLPARAMS_st lcb_N1QLPARAMS;
67
+
68
+ /**
69
+ * Create a new N1QL Parameters object. The returned object is an opaque
70
+ * pointer which may be used to set various properties on a N1QL query. This
71
+ * may then be used to populate relevant fields of an @ref lcb_CMDN1QL
72
+ * structure.
73
+ */
74
+ LIBCOUCHBASE_API
75
+ lcb_N1QLPARAMS *
76
+ lcb_n1p_new(void);
77
+
78
+ /**
79
+ * Reset the parameters structure so that it may be reused for a subsequent
80
+ * query. Internally this resets the buffer positions to 0, but does not free
81
+ * them, making this function optimal for issusing subsequent queries.
82
+ * @param params the object to reset
83
+ */
84
+ LIBCOUCHBASE_API
85
+ void
86
+ lcb_n1p_reset(lcb_N1QLPARAMS *params);
87
+
88
+ /**
89
+ * Free the parameters structure. This should be done when it is no longer
90
+ * needed
91
+ * @param params the object to reset
92
+ */
93
+ LIBCOUCHBASE_API
94
+ void
95
+ lcb_n1p_free(lcb_N1QLPARAMS *params);
96
+
97
+ /** Query is a statement string */
98
+ #define LCB_N1P_QUERY_STATEMENT 1
99
+
100
+ /** @private */
101
+ #define LCB_N1P_QUERY_PREPARED 2
102
+
103
+ /**
104
+ * Sets the actual statement to be executed
105
+ * @param params the params object
106
+ * @param qstr the query string (either N1QL statement or prepared JSON)
107
+ * @param nqstr the length of the string. Set to -1 if NUL-terminated
108
+ * @param type the type of statement. Should be ::LCB_N1P_QUERY_STATEMENT,
109
+ * currently.
110
+ */
111
+ LIBCOUCHBASE_API
112
+ lcb_error_t
113
+ lcb_n1p_setquery(lcb_N1QLPARAMS *params, const char *qstr, size_t nqstr, int type);
114
+
115
+ #define lcb_n1p_setstmtz(params, qstr) \
116
+ lcb_n1p_setquery(params, qstr, -1, LCB_N1P_QUERY_STATEMENT)
117
+
118
+ /**
119
+ * Sets a named argument for the query.
120
+ * @param params the object
121
+ * @param name The argument name (e.g. `$age`)
122
+ * @param n_name
123
+ * @param value The argument value (e.g. `42`)
124
+ * @param n_value
125
+ */
126
+ LIBCOUCHBASE_API
127
+ lcb_error_t
128
+ lcb_n1p_namedparam(lcb_N1QLPARAMS *params, const char *name, size_t n_name,
129
+ const char *value, size_t n_value);
130
+
131
+ #define lcb_n1p_namedparamz(params, name, value) \
132
+ lcb_n1p_namedparam(params, name, -1, value, -1)
133
+
134
+ /**
135
+ * Adds a _positional_ argument for the query
136
+ * @param params the params object
137
+ * @param value the argument
138
+ * @param n_value the length of the argument.
139
+ */
140
+ LIBCOUCHBASE_API
141
+ lcb_error_t
142
+ lcb_n1p_posparam(lcb_N1QLPARAMS *params, const char *value, size_t n_value);
143
+
144
+ /**
145
+ * Set a query option
146
+ * @param params the params object
147
+ * @param name the name of the option
148
+ * @param n_name
149
+ * @param value the value of the option
150
+ * @param n_value
151
+ */
152
+ LIBCOUCHBASE_API
153
+ lcb_error_t
154
+ lcb_n1p_setopt(lcb_N1QLPARAMS *params, const char *name, size_t n_name,
155
+ const char *value, size_t n_value);
156
+
157
+ /**
158
+ * Convenience function to set a string parameter with a string value
159
+ * @param params the parameter object
160
+ * @param key the NUL-terminated option name
161
+ * @param value the NUL-terminated option value
162
+ */
163
+ #define lcb_n1p_setoptz(params, key, value) \
164
+ lcb_n1p_setopt(params, key, -1, value, -1)
165
+
166
+
167
+ /** No consistency constraints */
168
+ #define LCB_N1P_CONSISTENCY_NONE 0
169
+
170
+ /**
171
+ * This is implicitly set by the lcb_n1p_synctok() family of functions. This
172
+ * will ensure that mutations up to the vector indicated by the mutation token
173
+ * passed to lcb_n1p_synctok() are used.
174
+ */
175
+ #define LCB_N1P_CONSISTENCY_RYOW 1
176
+
177
+ /** Refresh the snapshot for each request */
178
+ #define LCB_N1P_CONSISTENCY_REQUEST 2
179
+
180
+ /** Refresh the snapshot for each statement */
181
+ #define LCB_N1P_CONSISTENCY_STATEMENT 3
182
+
183
+ /**
184
+ * Sets the consistency mode for the request.
185
+ * By default results are read from a potentially stale snapshot of the data.
186
+ * This may be good for most cases; however at times you want the absolutely
187
+ * most recent data.
188
+ * @param params the parameters object
189
+ * @param mode one of the `LCB_N1P_CONSISTENT_*` constants.
190
+ */
191
+ LIBCOUCHBASE_API
192
+ lcb_error_t
193
+ lcb_n1p_setconsistency(lcb_N1QLPARAMS *params, int mode);
194
+
195
+ /**
196
+ * Indicate that the query should synchronize its internal snapshot to reflect
197
+ * the changes indicated by the given mutation token (`ss`).
198
+ * @param params the parameters object
199
+ * @param keyspace the keyspace (or bucket name) which this mutation token
200
+ * pertains to
201
+ * @param st the mutation token
202
+ */
203
+ LIBCOUCHBASE_API
204
+ lcb_error_t
205
+ lcb_n1p_setconsistent_token(lcb_N1QLPARAMS *params,
206
+ const char *keyspace, const lcb_MUTATION_TOKEN *st);
207
+
208
+ /**
209
+ * Indicate that the query should synchronize its internal snapshot to reflect
210
+ * any past changes made by the given instance `instance`.
211
+ *
212
+ * This iterates over all the vbuckets for the given instance and inserts
213
+ * the relevant mutation token, using @ref lcb_get_mutation_token
214
+ */
215
+ LIBCOUCHBASE_API
216
+ lcb_error_t
217
+ lcb_n1p_setconsistent_handle(lcb_N1QLPARAMS *params, lcb_t instance);
218
+
219
+ /**
220
+ * Encodes the request and returns it as a string. The string is valid
221
+ * until the next call to the params function.
222
+ * @param params the parameter object
223
+ * @param[out] rc an error code if there was an issue in encoding
224
+ * @return the NUL-terminated query string.
225
+ *
226
+ * @note Calling this function regenerates the query string internally,
227
+ * and is implicitly called by lcb_n1p_mkcmd().
228
+ */
229
+ LIBCOUCHBASE_API
230
+ const char *
231
+ lcb_n1p_encode(lcb_N1QLPARAMS *params, lcb_error_t *rc);
232
+
233
+ /**
234
+ * Populates the given low-level lcb_CMDN1QL structure with the relevant fields
235
+ * from the params structure. If this function returns successfuly, you must
236
+ * ensure that the params object is not modified until the command is
237
+ * submitted.
238
+ *
239
+ * @note
240
+ * This may also set some lcb_CMDN1QL::cmdflags fields. If setting your own
241
+ * flags, ensure that those flags do not replace the existing ones set by
242
+ * this function.
243
+ */
244
+ LIBCOUCHBASE_API
245
+ lcb_error_t
246
+ lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd);
247
+
248
+ /**@}*/
249
+
250
+ /**
251
+ * @name Low-level N1QL interface
252
+ * @{
253
+ */
254
+
255
+ /**
256
+ * Prepare and cache the query if required. This may be used on frequently
257
+ * issued queries, so they perform better.
258
+ */
259
+ #define LCB_CMDN1QL_F_PREPCACHE 1<<16
260
+
261
+ /** @private The lcb_CMDN1QL::query member is an internal JSON structure */
262
+ #define LCB_CMDN1QL_F_JSONQUERY 1<<17
263
+
264
+ /**
265
+ * Command structure for N1QL queries. Typically an application will use the
266
+ * lcb_N1QLPARAMS structure to populate the #query and #content_type fields.
267
+ *
268
+ * The #callback field must be specified, and indicates the function the
269
+ * library should call when more response data has arrived.
270
+ */
271
+ struct lcb_CMDN1QL {
272
+ lcb_U32 cmdflags;
273
+ /**Query to be placed in the POST request. The library will not perform
274
+ * any conversions or validation on this string, so it is up to the user
275
+ * (or wrapping library) to ensure that the string is well formed.
276
+ *
277
+ * If using the @ref lcb_N1QLPARAMS structure, the lcb_n1p_mkcmd() function
278
+ * will properly populate this field.
279
+ *
280
+ * In general the string should either be JSON (in which case, the
281
+ * #content_type field should be `application/json`) or url-encoded
282
+ * (in which case the #content_type field should be
283
+ * `application/x-www-form-urlencoded`)
284
+ */
285
+ const char *query;
286
+
287
+ /** Length of the query data */
288
+ size_t nquery;
289
+
290
+ /** Ignored since version 2.5.3 */
291
+ const char *host;
292
+
293
+ /** Ignored since version 2.5.3 */
294
+ const char *content_type;
295
+
296
+ /** Callback to be invoked for each row */
297
+ lcb_N1QLCALLBACK callback;
298
+
299
+ /**Request handle. Will be set to the handle which may be passed to
300
+ * lcb_n1ql_cancel() */
301
+ lcb_N1QLHANDLE *handle;
302
+ };
303
+
304
+ /**
305
+ * Response for a N1QL query. This is delivered in the @ref lcb_N1QLCALLBACK
306
+ * callback function for each result row received. The callback is also called
307
+ * one last time when all
308
+ */
309
+ struct lcb_RESPN1QL {
310
+ #ifndef __LCB_DOXYGEN__
311
+ LCB_RESP_BASE
312
+ #else
313
+ lcb_U16 rflags; /**< Flags for response structure */
314
+ #endif
315
+
316
+ /**Current result row. If #rflags has the ::LCB_RESP_F_FINAL bit set, then
317
+ * this field does not contain the actual row, but the remainder of the
318
+ * data not included with the resultset; e.g. the JSON surrounding
319
+ * the "results" field with any errors or metadata for the response.
320
+ */
321
+ const char *row;
322
+ /** Length of the row */
323
+ size_t nrow;
324
+ /** Raw HTTP response, if applicable */
325
+ const lcb_RESPHTTP *htresp;
326
+ };
327
+
328
+ /**
329
+ * @volatile
330
+ *
331
+ * Execute a N1QL query.
332
+ *
333
+ * This function will send the query to a query server in the cluster
334
+ * and will invoke the callback (lcb_CMDN1QL::callback) for each result returned.
335
+ *
336
+ * @param instance The instance
337
+ * @param cookie Pointer to application data
338
+ * @param cmd the command
339
+ * @return Scheduling success or failure.
340
+ */
341
+ LIBCOUCHBASE_API
342
+ lcb_error_t
343
+ lcb_n1ql_query(lcb_t instance, const void *cookie, const lcb_CMDN1QL *cmd);
344
+
345
+
346
+ /**
347
+ * Cancels an in-progress request. This will ensure that further callbacks
348
+ * for the given request are not delivered.
349
+ *
350
+ * @param instance the instance
351
+ * @param handle the handle for the request. This is obtained during the
352
+ * request as an 'out' parameter (see lcb_CMDN1QL::handle)
353
+ */
354
+ LIBCOUCHBASE_API
355
+ void
356
+ lcb_n1ql_cancel(lcb_t instance, lcb_N1QLHANDLE handle);
357
+ /**@}*/
358
+
359
+ /**@}*/
360
+
361
+ #ifdef __cplusplus
362
+ }
363
+ #endif
364
+ #endif