LIBCOUCHBASE_API lcb_error_t lcb_cbflush3(lcb_t instance, const void *cookie, const lcb_CMDBASE *cmd) { lcb_http_request_t htr; lcb_CMDHTTP htcmd = { 0 }; lcb_string urlpath; lcb_error_t rc; (void)cmd; lcb_string_init(&urlpath); lcb_string_appendz(&urlpath, "/pools/default/buckets/"); lcb_string_appendz(&urlpath, LCBT_SETTING(instance, bucket)); lcb_string_appendz(&urlpath, "/controller/doFlush"); htcmd.type = LCB_HTTP_TYPE_MANAGEMENT; htcmd.method = LCB_HTTP_METHOD_POST; htcmd.reqhandle = &htr; LCB_CMD_SET_KEY(&htcmd, urlpath.base, urlpath.nused); rc = lcb_http3(instance, cookie, &htcmd); lcb_string_release(&urlpath); if (rc != LCB_SUCCESS) { return rc; } lcb_htreq_setcb(htr, flush_cb); return LCB_SUCCESS; }
LIBCOUCHBASE_API lcb_error_t lcb_n1ql_query(lcb_t instance, const void *cookie, const lcb_CMDN1QL *cmd) { lcb_CMDHTTP htcmd = { 0 }; lcb_error_t err; N1QLREQ *req = NULL; if (cmd->query == NULL || cmd->nquery == 0 || cmd->callback == NULL || cmd->content_type == NULL) { return LCB_EINVAL; } htcmd.body = cmd->query; htcmd.nbody = cmd->nquery; htcmd.content_type = cmd->content_type; htcmd.method = LCB_HTTP_METHOD_POST; if (cmd->host) { htcmd.type = LCB_HTTP_TYPE_RAW; LCB_CMD_SET_KEY(&htcmd, QUERY_PATH, strlen(QUERY_PATH)); htcmd.host = cmd->host; htcmd.username = LCBT_SETTING(instance, bucket); htcmd.password = LCBT_SETTING(instance, password); } else { htcmd.type = LCB_HTTP_TYPE_N1QL; } htcmd.cmdflags = LCB_CMDHTTP_F_STREAM; req = calloc(1, sizeof(*req)); if (!req) { err = LCB_CLIENT_ENOMEM; goto GT_DESTROY; } req->callback = cmd->callback; req->cookie = cookie; req->instance = instance; req->parser = lcbjsp_create(LCBJSP_MODE_N1QL); if (!req->parser) { err = LCB_CLIENT_ENOMEM; goto GT_DESTROY; } req->parser->data = req; req->parser->callback = row_callback; htcmd.reqhandle = &req->htreq; err = lcb_http3(instance, req, &htcmd); if (err != LCB_SUCCESS) { goto GT_DESTROY; } lcb_htreq_setcb(req->htreq, chunk_callback); if (cmd->handle) { *cmd->handle = req; } return LCB_SUCCESS; GT_DESTROY: if (req) { req->callback = NULL; destroy_req(req); } return err; }