/* ==================== udb_delete_request() ==================== */ int udb_delete_request(session_t *session) { udb_t *udb = udb(session); uint32_t head_size = 0; message_t *message = alloc_request_message(MSG_OP_DEL); head_size += sizeof(message_t); const char *key = udb->key; uint32_t keylen = udb->keylen; debug_log("client_args->key=%s, keylen=%d", key, keylen); /* -------- key -------- */ message = add_message_arg(message, key, keylen > 128 ? 128 : keylen); head_size += sizeof(uint32_t) + keylen; /* -------- key_md5 -------- */ md5_value_t md5Value; md5(&md5Value, (const uint8_t*)key, keylen); message = add_message_arg(message, &md5Value, sizeof(md5_value_t)); head_size += sizeof(uint32_t) + sizeof(md5_value_t); /* -------- ubuf -------- */ uint32_t msg_size = sizeof(message_t) + message->data_length; assert(msg_size == head_size); session->connection.total_bytes += msg_size; message->crc32_data = crc32(0, (const char *)message->data, message->data_length); int r = session_write_request(session, (char*)message, msg_size, udb_after_delete_request); zfree(message); return r; }
int main() { WCHAR *indexPath = L"D:\\cygwin\\home\\Daniel\\ibus-unicode-db\\data\\index"; WCHAR *dataPath = L"D:\\cygwin\\home\\Daniel\\ibus-unicode-db\\data\\UnicodeData.txt"; UnicodeDB udb(indexPath, dataPath); vector <char *> wordlist; set<UNICODE_T> list, fuzzy_list; wordlist.push_back("greek"); wordlist.push_back("capital"); udb.findCandidates(wordlist, list, fuzzy_list); for (auto i = list.begin(); i != list.end(); i++) { printf("Exact match: %s\n", (*i).data ); } for (auto i = list.begin(); i != list.end(); i++) { printf("Fuzzy match: %s\n", (*i).data ); } return 0; }
/* ==================== udb_handle_delete_response() ==================== */ int udb_handle_delete_response(session_t *session, message_t *response) { assert(response->msg_type == MSG_TYPE_RESPONSE); int ret = 0; udb_t *udb = udb(session); message_arg_t *arg = (message_arg_t*)response->data; if ( response->result == RESULT_SUCCESS ) { } else if ( response->result == RESULT_ERR_NOTFOUND ) { /* ---------- key ---------- */ message_arg_t *argKey = arg; warning_log("Not Deleted for NOTFOUND! key=%s", argKey->data); } else { error_log("Error response code! result=%d", response->result); ret = -1; } if ( udb->after_delete_finished != NULL ){ udb->after_delete_finished(udb, response); } udb->finished_works++; return ret; }
/*static void udb_after_delete_request(uv_write_t *read_req, int status) */ static void udb_after_delete_request(session_t *session, int status) { /*session_t *session = (session_t*)read_req->data;*/ udb_t *udb = udb(session); assert(udb != NULL); /*zfree(read_req);*/ session_waiting_message(session); }
bool dead_peer::is_alive() const { static std::string test_query = "seeksalivetest"; static std::string test_key = "c7955c712c49bb7602ff85d3b64bc363ac17033b"; if (_rsc == "bsn") { int expansion = 1; db_record *dbr = NULL; try { // not using store. dbr = rank_estimator::find_bqc(_host,_port,_path,test_query,expansion,false); } catch (sp_exception &e) { if (dbr) delete dbr; return false; } if (dbr) delete dbr; return true; } else if (_rsc == "sn") { bool in_store = false; db_record *dbr = NULL; try { user_db udb(false,"",_host,_port,_path,_rsc); // not using the store. dbr = rank_estimator::find_dbr(&udb,test_key,"query-capture",in_store,false); } catch (sp_exception &e) { if (dbr) delete dbr; return false; } if (dbr) delete dbr; return true; } else return false; }