Cache-Memcached-Fast
view release on metacpan or search on metacpan
{ NULL, result_store, NULL, NULL };
const char *key;
STRLEN key_len;
cas_type cas = 0;
const void *buf;
STRLEN buf_len;
flags_type flags = 0;
exptime_type exptime = 0;
int arg = 1;
SV *sv;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
key = SvPV_stable_storage(aTHX_ ST(arg), &key_len);
++arg;
if (ix == CMD_CAS)
{
cas = SvUV(ST(arg));
++arg;
add_multi = CMD_ADD
replace_multi = CMD_REPLACE
append_multi = CMD_APPEND
prepend_multi = CMD_PREPEND
cas_multi = CMD_CAS
PROTOTYPE: $@
PREINIT:
int i, noreply;
struct result_object object =
{ NULL, result_store, NULL, NULL };
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
for (i = 1; i < items; ++i)
{
SV *sv;
AV *av;
const char *key;
STRLEN key_len;
Cache_Memcached_Fast * memd
ALIAS:
gets = CMD_GETS
PROTOTYPE: $@
PREINIT:
struct xs_value_result value_res;
struct result_object object =
{ alloc_value, svalue_store, free_value, &value_res };
const char *key;
STRLEN key_len;
PPCODE:
value_res.memd = memd;
value_res.vals = NULL;
client_reset(memd->c, &object, 0);
key = SvPV(ST(1), key_len);
client_prepare_get(memd->c, ix, 0, key, key_len);
client_execute(memd->c, 2);
if (value_res.vals)
{
mPUSHs(value_res.vals);
XSRETURN(1);
Cache_Memcached_Fast * memd
ALIAS:
gets_multi = CMD_GETS
PROTOTYPE: $@
PREINIT:
struct xs_value_result value_res;
struct result_object object =
{ alloc_value, mvalue_store, free_value, &value_res };
int i, key_count;
HV *hv;
PPCODE:
key_count = items - 1;
value_res.memd = memd;
value_res.vals = (SV *) newAV();
sv_2mortal(value_res.vals);
av_extend((AV *) value_res.vals, key_count - 1);
client_reset(memd->c, &object, 0);
for (i = 0; i < key_count; ++i)
{
const char *key;
STRLEN key_len;
PROTOTYPE: $@
PREINIT:
struct xs_value_result value_res;
struct result_object object =
{ alloc_value, svalue_store, free_value, &value_res };
const char *key;
STRLEN key_len;
const char *exptime = "0";
STRLEN exptime_len = 1;
SV *sv;
PPCODE:
value_res.memd = memd;
value_res.vals = NULL;
client_reset(memd->c, &object, 0);
sv = ST(1);
SvGETMAGIC(sv);
if (SvOK(sv))
exptime = SvPV(sv, exptime_len);
key = SvPV(ST(2), key_len);
client_prepare_gat(memd->c, ix, 0, key, key_len, exptime, exptime_len);
client_execute(memd->c, 4);
PROTOTYPE: $@
PREINIT:
struct xs_value_result value_res;
struct result_object object =
{ alloc_value, mvalue_store, free_value, &value_res };
int i, key_count;
HV *hv;
SV *sv;
const char *exptime = "0";
STRLEN exptime_len = 1;
PPCODE:
key_count = items - 2;
value_res.memd = memd;
value_res.vals = (SV *) newAV();
sv_2mortal(value_res.vals);
if (key_count > 1)
av_extend((AV *) value_res.vals, key_count - 1);
client_reset(memd->c, &object, 0);
sv = ST(1);
SvGETMAGIC(sv);
if (SvOK(sv))
ALIAS:
decr = CMD_DECR
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ alloc_value, embedded_store, NULL, NULL };
int noreply;
const char *key;
STRLEN key_len;
arith_type arg = 1;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
key = SvPV_stable_storage(aTHX_ ST(1), &key_len);
if (items > 2)
{
/* increment doesn't have to be defined. */
SV *sv = ST(2);
SvGETMAGIC(sv);
void
incr_multi(memd, ...)
Cache_Memcached_Fast * memd
ALIAS:
decr_multi = CMD_DECR
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ alloc_value, embedded_store, NULL, NULL };
int i, noreply;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
for (i = 1; i < items; ++i)
{
SV *sv;
AV *av;
const char *key;
STRLEN key_len;
Cache_Memcached_Fast * memd
ALIAS:
remove = CMD_REMOVE
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ NULL, result_store, NULL, NULL };
int noreply;
const char *key;
STRLEN key_len;
PPCODE:
PERL_UNUSED_ARG(ix);
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
key = SvPV_stable_storage(aTHX_ ST(1), &key_len);
if (items > 2)
{
/* Compatibility with old (key, delay) syntax. */
void
delete_multi(memd, ...)
Cache_Memcached_Fast * memd
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ NULL, result_store, NULL, NULL };
int i, noreply;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
for (i = 1; i < items; ++i)
{
SV *sv;
const char *key;
STRLEN key_len;
Cache_Memcached_Fast * memd
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ NULL, result_store, NULL, NULL };
int noreply;
const char *key;
STRLEN key_len;
exptime_type exptime = 0;
SV *sv;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
key = SvPV_stable_storage(aTHX_ ST(1), &key_len);
if (items > 2)
{
/* exptime doesn't have to be defined. */
sv = ST(2);
SvGETMAGIC(sv);
void
touch_multi(memd, ...)
Cache_Memcached_Fast * memd
PROTOTYPE: $@
PREINIT:
struct result_object object =
{ NULL, result_store, NULL, NULL };
int i, noreply;
PPCODE:
object.arg = newAV();
sv_2mortal((SV *) object.arg);
noreply = (GIMME_V == G_VOID);
client_reset(memd->c, &object, noreply);
for (i = 1; i < items; ++i)
{
SV *sv;
AV *av;
const char *key;
STRLEN key_len;
( run in 1.439 second using v1.01-cache-2.11-cpan-71847e10f99 )