Esempio n. 1
0
static mrb_value mrb_vedis_exec(mrb_state *mrb, mrb_value self)
{
    int ret;
    vedis *vstore = DATA_PTR(self);
    vedis_value *result;
    vedis_value *entry;
    mrb_value ary;
    const char *cmd = NULL;

    mrb_get_args(mrb, "z", &cmd);
    ret = vedis_exec(vstore, cmd, -1);
    if (ret != VEDIS_OK) {
        return mrb_nil_value();
    }
    ret = vedis_exec_result(vstore, &result);
    if (ret != VEDIS_OK) {
        return mrb_nil_value();
    } else {
        if (vedis_value_is_string(result)) {
            return mrb_str_new_cstr(mrb, vedis_value_to_string(result, 0));
        } else if (vedis_value_is_array(result)) {
            ary = mrb_ary_new(mrb);
            while ((entry = vedis_array_next_elem(result)) != 0) {
                mrb_ary_push(mrb, ary, mrb_str_new_cstr(mrb, vedis_value_to_string(entry, 0)));
            }
            return ary;
        }
    }
    return mrb_nil_value();
}
Esempio n. 2
0
void
ctteststrings(void)
{
  int rc;
  const char *str;
  vedis *store = NULL;
  vedis_value *res = NULL;

  rc = vedis_open(&store, NULL /* in memory */);
  assert(rc == VEDIS_OK);

  EXEC_CMD("GET misc");
  assert(vedis_value_is_null(res));

  EXEC_CMD("SET misc smthg");
  assert(vedis_value_is_bool(res));
  assert(vedis_value_to_bool(res));

  EXEC_CMD("GET misc");
  assert(vedis_value_is_string(res));
  assert(str = vedis_value_to_string(res, NULL));
  assert(!strcmp(str, "smthg"));

  vedis_close(store);
}