Arcus-Client

 view release on metacpan or  search on metacpan

Base.xs  view on Meta::CPAN

    croak("failed to connect to the proxy: %d (%s)", ret, arcus_strerror(ret));
  }
}

MODULE = Arcus::Base		PACKAGE = Arcus::Base

void
new(class, self)
  char *class
  SV *self
  PPCODE:
  Arcus_API *arcus = NULL;
  if (SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) {
    EXTEND(SP, 1);
    Newx(arcus, 1, Arcus_API);
    arcus->global = memcached_create(NULL);
    if (arcus->global == NULL) {
      croak("Failed to create the global memcached object");
    }
    arcus->proxy = memcached_create(NULL);
    if (arcus->proxy == NULL) {

Base.xs  view on Meta::CPAN

  Arcus_API *arcus
  ALIAS:
  set_multi     = ARCUS_SET
  add_multi     = ARCUS_ADD
  replace_multi = ARCUS_REPLACE
  append_multi  = ARCUS_APPEND
  prepend_multi = ARCUS_PREPEND
  PREINIT:
  size_t finished = 0;
  size_t arg = 1;
  PPCODE:
  memcached_return_t ret;
  memcached_storage_request_st req[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  memcached_return_t results[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  int req_index[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  SV **result_buf;

  memcached_st *mc = memcached_pool_pop(arcus->pool, true, &ret);
  if (mc == NULL) {
    warn("Failed to create the memcached object : %d (%s)", ret, memcached_strerror(NULL, ret));
    goto do_return;

Base.xs  view on Meta::CPAN

  if (mc != NULL) {
    memcached_pool_push(arcus->pool, mc);
  }

void
cas_multi(arcus, ...)
  Arcus_API *arcus
  PREINIT:
  size_t finished = 0;
  size_t arg = 1;
  PPCODE:
  memcached_return_t ret;
  memcached_storage_request_st req[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  memcached_return_t results[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  int req_index[MAX_KEYS_FOR_MULTI_STORE_OPERATION];
  SV **result_buf;

  memcached_st *mc = memcached_pool_pop(arcus->pool, true, &ret);
  if (mc == NULL) {
    warn("Failed to create the memcached object : %d (%s)", ret, memcached_strerror(NULL, ret));
    goto do_return;

Base.xs  view on Meta::CPAN

OUTPUT:
RETVAL

void
get(arcus, key)
  Arcus_API *arcus
  SV *key
  ALIAS:
  get    = ARCUS_GET
  gets   = ARCUS_GETS
  PPCODE:
  memcached_return_t ret;
  size_t key_length = 0;
  char *key_ptr = NULL;
  size_t value_length;
  char *value;
  uint32_t flags;
  bool is_gets = false;
  bool do_free_value = true;

  dSP;



( run in 1.324 second using v1.01-cache-2.11-cpan-71847e10f99 )