Example #1
0
static void
HttpResult_dealloc(pycbc_HttpResult *self)
{
    if (self->u.htreq) {
        if (self->parent) {
            if (self->htype == PYCBC_HTTP_HVIEW) {
                lcb_view_cancel(self->parent->instance, self->u.vh);
            } else {
                lcb_cancel_http_request(self->parent->instance, self->u.htreq);
            }
        }
        self->u.htreq = NULL;
    }
    Py_XDECREF(self->http_data);
    Py_XDECREF(self->headers);
    Py_XDECREF(self->parent);
    pycbc_Result_dealloc((pycbc_Result*)self);
}
void
PLCB__viewhandle_stop(SV *pp)
{
    AV *req = (AV *)SvRV(pp);
    PLCB_t *parent = parent_from_req(req);
    SV **tmp, *vhsv;

    tmp = av_fetch(req, PLCB_VHIDX_VHANDLE, 0);
    if (!tmp) {
        return;
    }

    vhsv = *tmp;
    if (SvIOK(vhsv)) {
        lcb_VIEWHANDLE vh = NUM2PTR(lcb_VIEWHANDLE, SvUV(vhsv));
        lcb_view_cancel(parent->instance, vh);
        av_store(req, PLCB_VHIDX_VHANDLE, SvREFCNT_inc(&PL_sv_undef));
        av_store(req, PLCB_VHIDX_ISDONE, SvREFCNT_inc(&PL_sv_yes));
        SvREFCNT_dec((SV *)req);
    }
}