Пример #1
0
void del_cb(struct evhttp_request *req, struct evbuffer *evb, void *ctx)
{
    char *uri, *json, *id;
    struct evkeyvalq args;
    struct json_object *jsobj;

    if (rdb == NULL) {
        evhttp_send_error(req, 503, "database not connected");
        return;
    }
    uri = evhttp_decode_uri(req->uri);
    evhttp_parse_query(uri, &args);
    free(uri);

    id = (char *)evhttp_find_header(&args, "id");
    if (id == NULL) {
        evhttp_send_error(req, 400, "id is required");
        evhttp_clear_headers(&args);
        return;
    }
    
    jsobj = json_object_new_object();
    if (tcrdbtblout(rdb, id, sizeof(id))) {
        json_object_object_add(jsobj, "status", json_object_new_string("ok"));
    } else {
        db_status = tcrdbecode(rdb);
        db_error_to_json(db_status, jsobj);
    }

    finalize_json(req, evb, &args, jsobj);
}
Пример #2
0
        if (!value) {
            return -1;
        }
        Py_BEGIN_ALLOW_THREADS
        result = tcrdbtblput(rdbbase->rdb, key, key_size, value);
        Py_END_ALLOW_THREADS
        if (!result) {
            tcmapdel(value);
            set_rdb_error(rdbbase->rdb, NULL);
            return -1;
        }
        tcmapdel(value);
    }
    else {
        Py_BEGIN_ALLOW_THREADS
        result = tcrdbtblout(rdbbase->rdb, key, key_size);
        Py_END_ALLOW_THREADS
        if (!result) {
            set_rdb_error(rdbbase->rdb, key);
            return -1;
        }
    }
    rdbbase->changed = true;
    return 0;
}


/* RTDBType.tp_as_mapping */
static PyMappingMethods RTDB_tp_as_mapping = {
    (lenfunc)RDBBase_Length,                  /*mp_length*/
    (binaryfunc)RTDB_GetItem,                 /*mp_subscript*/