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); }
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*/