Example #1
0
void redis_initialized(void *userdata, rw_status_t status)
{
  int i;
  char shard_num[100] = "When";
  /* ok, redis client connection to databases are up */
  fprintf(stderr, "[%s]Riftdb is up\n", getTime());
  RW_ASSERT(status == RW_STATUS_SUCCESS);
  myUserData.tab_handle = rwdts_kv_light_register_table(myUserData.handle, 0);
  for (i = 0; i< 19; i++) {
    if (i > 13) {
      strcpy(shard_num, "What");
    }
    rwdts_kv_light_table_insert(myUserData.tab_handle, (i+1), shard_num, key_entry[i],
                                strlen(key_entry[i]), tab_entry[i], strlen(tab_entry[i]),
                                rwdts_kv_light_set_callback, (void*)myUserData.tab_handle);
  }
}
void redis_initialized(void *userdata)
{
  int i;
  int shard_num = 250;
  /* ok, redis client connection to databases are up */
  fprintf(stderr, "[%s]Riftdb is up\n", getTime());

  myUserData.tab_handle = rwdts_kv_light_register_table(myUserData.handle, 0);
  for (i = 0; i< 19; i++) {
    if (i > 13) {
      shard_num = 260;
    }
    rwdts_kv_light_table_insert(myUserData.tab_handle, (i+1), shard_num, key_entry[i],
                                strlen(key_entry[i]), tab_entry[i], strlen(tab_entry[i]),
                                rwdts_kv_light_set_callback, (void*)myUserData.tab_handle);
  }
}
Example #3
0
rw_status_t
rwdts_kv_update_db_update(rwdts_member_data_object_t *mobj, RWDtsQueryAction action)
{
  rwdts_api_t *apih;
  rwdts_member_registration_t *reg;
  ProtobufCMessage *msg;
  uint8_t *payload;
  size_t  payload_len;
  uint32_t db_number;
  rw_status_t status;
  rwdts_kv_table_handle_t *kv_tab_handle = NULL;
  rwdts_shard_info_detail_t *shard_key1;
  uint8_t *local_ks_binpath = NULL;
  size_t local_ks_binpath_len;
  rw_keyspec_path_t *local_keyspec = NULL;
  /* Build the shard-key to get the shard-id and DB number */
  char str[15] = "banana";

  reg = mobj->reg;
  RW_ASSERT_TYPE(reg, rwdts_member_registration_t);
  RW_ASSERT(action != RWDTS_QUERY_INVALID);
  apih = reg->apih;
  RW_ASSERT(apih);
  msg = mobj->msg;

  shard_key1 = RW_MALLOC0_TYPE(sizeof(rwdts_shard_info_detail_t), rwdts_shard_info_detail_t);
  shard_key1->shard_key_detail.u.byte_key.k.key = (void *)RW_MALLOC(sizeof(str));
  memcpy((char *)shard_key1->shard_key_detail.u.byte_key.k.key, &str[0], strlen(str));
  shard_key1->shard_key_detail.u.byte_key.k.key_len = strlen(str);

  /* Get the shard-id and DB number */
  rwdts_shard_db_num_info_t *shard_db_num_info = RW_MALLOC0(sizeof(rwdts_shard_db_num_info_t));

  status = rw_keyspec_path_create_dup(reg->keyspec, &apih->ksi , &local_keyspec);
  RW_ASSERT(status == RW_STATUS_SUCCESS);

  status = rw_keyspec_path_get_binpath(local_keyspec, &apih->ksi ,
                                       (const uint8_t **)&local_ks_binpath,
                                       &local_ks_binpath_len);
  RW_ASSERT(status == RW_STATUS_SUCCESS);
  rwdts_member_get_shard_db_info_keyspec(apih, local_keyspec,
                                         shard_key1,
                                         shard_db_num_info);
  if (shard_db_num_info->shard_db_num_cnt > 0) {
    db_number = shard_db_num_info->shard_db_num[0].db_number;
    //shard_id = shard_db_num_info->shard_db_num[0].shard_chunk_id;
    /* Search for KV table handle */
    status = RW_SKLIST_LOOKUP_BY_KEY(&(apih->kv_table_handle_list), &db_number,
                                     (void *)&kv_tab_handle);
    if (!kv_tab_handle) {
      kv_tab_handle = rwdts_kv_light_register_table(apih->handle, db_number);
      RW_ASSERT(kv_tab_handle);
      status = RW_SKLIST_INSERT(&(apih->kv_table_handle_list), kv_tab_handle);
      RW_ASSERT(status == RW_STATUS_SUCCESS);
    }
    mobj->kv_tab_handle = kv_tab_handle;
    RWDTS_CREATE_SHARD(reg->reg_id, apih->client_path, apih->router_path);
    /* Perform KV xact operation */
    if (apih->db_up && ((action == RWDTS_QUERY_CREATE) ||
        (RWDTS_QUERY_UPDATE == action))) {
      RW_ASSERT(msg);
      payload = protobuf_c_message_serialize(NULL, msg, &payload_len);
      rwdts_kv_light_table_insert(kv_tab_handle, 0, shard,
                                  (void *)mobj->key,
                                  mobj->key_len,
                                  payload,
                                  payload_len,
                                  (void *)rwdts_kv_light_insert_obj_cb,
                                  (void *)mobj);
    } else if (apih->db_up && (action == RWDTS_QUERY_DELETE)) {
      rwdts_kv_light_table_xact_delete(kv_tab_handle, 0,
                                       (void *)mobj->key,
                                       mobj->key_len,
                                       (void *)rwdts_kv_light_delete_obj_cb,
                                       (void *)mobj);
    }
  }
  if (shard_db_num_info->shard_db_num_cnt) {
    free(shard_db_num_info->shard_db_num);
  }
  RW_FREE(shard_db_num_info);
  rw_keyspec_path_free(local_keyspec, NULL);
  RW_FREE(shard_key1->shard_key_detail.u.byte_key.k.key);
  RW_FREE_TYPE(shard_key1, rwdts_shard_info_detail_t);
  return RW_STATUS_SUCCESS;
}