static PyObject * handle_float_tmo(lcb_t instance, int cmd, int mode, PyObject *val, lcb_error_t *err) { lcb_uint32_t cval; if (val != NULL) { if (PyFloat_Check(val)) { double dv = PyFloat_AsDouble(val); if (dv < 0) { PYCBC_EXC_WRAP(PYCBC_EXC_ARGUMENTS, 0, "Timeout cannot be < 0"); return NULL; } cval = dv * 1000000; } else { cval = pycbc_IntAsL(val); if (cval == (lcb_uint32_t)-1 && PyErr_Occurred()) { PYCBC_EXCTHROW_ARGS(); return NULL; } } } if ( (*err = lcb_cntl(instance, mode, cmd, &cval)) != LCB_SUCCESS) { return NULL; } return pycbc_IntFromUL(cval); }
static PyObject * Bucket_get_configured_replica_count(pycbc_Bucket *self, void *unused) { PyObject *iret = pycbc_IntFromUL(lcb_get_num_replicas(self->instance)); (void)unused; return iret; }
int pycbc_tc_decode_value(pycbc_Bucket *conn, const void *value, size_t nvalue, lcb_uint32_t flags, PyObject **pobj) { PyObject *result = NULL; PyObject *pint = NULL; PyObject *pbuf = NULL; int rv; if (conn->data_passthrough == 0 && conn->tc == NULL) { return decode_common(pobj, value, nvalue, flags); } if (conn->data_passthrough) { *pobj = PyBytes_FromStringAndSize(value, nvalue); if (*pobj) { return 0; } return -1; } pbuf = PyBytes_FromStringAndSize(value, nvalue); if (!pbuf) { pbuf = PyBytes_FromString(""); } pint = pycbc_IntFromUL(flags); if (!pint) { PYCBC_EXC_WRAP(PYCBC_EXC_INTERNAL, 0, "Couldn't create flags object"); rv = -1; goto GT_DONE; } rv = do_call_tc(conn, pbuf, pint, &result, DECODE_VALUE); GT_DONE: Py_XDECREF(pint); Py_XDECREF(pbuf); if (rv < 0) { return -1; } *pobj = result; return 0; }
static void timings_callback(lcb_t instance, const void *cookie, lcb_timeunit_t timeunit, lcb_uint32_t min, lcb_uint32_t max, lcb_uint32_t total, lcb_uint32_t maxtotal) { PyObject *arr = (PyObject *)cookie; PyObject *dict; double divisor = 1.0; double d_min, d_max; if (timeunit == LCB_TIMEUNIT_NSEC) { divisor = 1000000; } else if (timeunit == LCB_TIMEUNIT_USEC) { divisor = 1000; } else if (timeunit == LCB_TIMEUNIT_MSEC) { divisor = 1; } else if (timeunit == LCB_TIMEUNIT_SEC) { divisor = 0.001; } d_min = (double)min / divisor; d_max = (double)max / divisor; dict = PyDict_New(); PyList_Append(arr, dict); PyDict_SetItemString(dict, "min", PyFloat_FromDouble(d_min)); PyDict_SetItemString(dict, "max", PyFloat_FromDouble(d_max)); PyDict_SetItemString(dict, "count", pycbc_IntFromUL(total)); (void)maxtotal; (void)instance; }
static PyObject * Connection_get_configured_replica_count(pycbc_Connection *self, void *unused) { PyObject *iret = pycbc_IntFromUL(lcb_get_num_replicas(self->instance)); return iret; }