Example #1
0
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);
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
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;
}