/* * call-seq: * lmc.random_pair() -> [key, value] or nil * * Retrieves random pair from hashtable. */ static VALUE LocalMemCache__random_pair(VALUE obj) { char *k, *v; size_t n_k, n_v; VALUE r = Qnil; if (__local_memcache_random_pair(get_LocalMemCache(obj), &k, &n_k, &v, &n_v)) { r = rb_ary_new(); rb_ary_push(r, lmc_ruby_string2(k, n_k)); rb_ary_push(r, lmc_ruby_string2(v, n_v)); } lmc_unlock_shm_region("local_memcache_random_pair", get_LocalMemCache(obj)); return r; }
/* * call-seq: * lmc.get(key) -> string value or nil * lmc[key] -> string value or nil * * Retrieve string value from hashtable. */ static VALUE LocalMemCache__get(VALUE obj, VALUE key) { size_t l; lmc_rb_str_d_t k; rstring_acquire(key, &k); const char* r = __local_memcache_get(get_LocalMemCache(obj), k.cstr, k.len, &l); VALUE rr = lmc_ruby_string2(r, l); lmc_unlock_shm_region("local_memcache_get", get_LocalMemCache(obj)); return rr; }
/* * call-seq: * lmc.get_by_no_lock(key) -> string value or nil * * Retrieve string value from hashtable without obtain a semaphore. */ static mrb_value Cache__get_by_no_lock(mrb_state *mrb, mrb_value self) { local_memcache_t *lmc = get_Cache(mrb, self); size_t l; char *key; mrb_int n_key; mrb_get_args(mrb, "s", &key, &n_key); const char *r = __local_memcache_get_by_no_lock(lmc, key, n_key, &l); mrb_value rr = lmc_ruby_string2(mrb, r, l); return rr; }
/* * call-seq: * lmc.get(key) -> string value or nil * lmc[key] -> string value or nil * * Retrieve string value from hashtable. */ static mrb_value Cache__get(mrb_state *mrb, mrb_value self) { local_memcache_t *lmc = get_Cache(mrb, self); size_t l; mrb_cache_iovec_t k; char *key; mrb_int n_key; mrb_get_args(mrb, "s", &key, &n_key); const char *r = __local_memcache_get(lmc, key, n_key, &l); mrb_value rr = lmc_ruby_string2(mrb, r, l); lmc_unlock_shm_region("local_memcache_get", lmc); return rr; }
/* :nodoc: */ static mrb_value lmc_ruby_string(mrb_state *mrb, const char *s) { return lmc_ruby_string2(mrb, s + sizeof(size_t), *(size_t *)s); }
/* :nodoc: */ static VALUE lmc_ruby_string(const char *s) { return lmc_ruby_string2(s + sizeof(size_t), *(size_t *) s); }