Beispiel #1
0
/* ==================== 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;
}
Beispiel #3
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;
}
Beispiel #4
0
/*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);
}
Beispiel #5
0
  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;
  }