Couchbase-Client
view release on metacpan or search on metacpan
xs/callbacks.c view on Meta::CPAN
libcouchbase_error_t err,
const void *key, size_t nkey)
{
plcb_callback_multi_get(instance, cookie, err, key, nkey,
NULL, 0, 0, 0);
}
static void stat_callback(
libcouchbase_t instance, const void *cookie,
const char *server,
libcouchbase_error_t err,
const void *stat_key, size_t nkey,
const void *bytes, size_t nbytes)
{
PLCB_t *object;
SV *server_sv, *data_sv, *key_sv;
dSP;
object = (PLCB_t*)libcouchbase_get_cookie(instance);
if(stat_key == NULL && server == NULL) {
PLCB_sync_t sync;
sync.parent = object;
object->npending = 1;
signal_done(&sync);
return;
}
server_sv = newSVpvn(server, strlen(server));
if(nkey) {
key_sv = newSVpvn(stat_key, nkey);
} else {
key_sv = newSVpvn("", 0);
}
if(nbytes) {
data_sv = newSVpvn(bytes, nbytes);
} else {
data_sv = newSVpvn("", 0);
}
if(!object->stats_hv) {
die("We have nothing to write our stats to!");
}
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newRV_inc((SV*)object->stats_hv)));
XPUSHs(sv_2mortal(server_sv));
XPUSHs(sv_2mortal(key_sv));
XPUSHs(sv_2mortal(data_sv));
PUTBACK;
call_pv(PLCB_STATS_SUBNAME, G_DISCARD);
FREETMPS;
LEAVE;
}
void plcb_callbacks_set_multi(PLCB_t *object)
{
libcouchbase_t instance = object->instance;
libcouchbase_set_get_callback(instance, plcb_callback_multi_get);
libcouchbase_set_touch_callback(instance, keyop_multi_callback);
}
void plcb_callbacks_set_single(PLCB_t *object)
{
libcouchbase_t instance = object->instance;
libcouchbase_set_get_callback(instance, plcb_callback_get);
libcouchbase_set_touch_callback(instance, keyop_callback);
}
void plcb_callbacks_setup(PLCB_t *object)
{
libcouchbase_t instance = object->instance;
libcouchbase_set_get_callback(instance, plcb_callback_get);
libcouchbase_set_storage_callback(instance, plcb_callback_storage);
libcouchbase_set_error_callback(instance, plcb_callback_error);
#ifdef PLCB_HAVE_CONNFAIL
libcouchbase_set_connfail_callback(instance, plcb_callback_connfail);
#endif
libcouchbase_set_touch_callback(instance, keyop_callback);
libcouchbase_set_remove_callback(instance, keyop_callback);
libcouchbase_set_arithmetic_callback(instance, arithmetic_callback);
libcouchbase_set_stat_callback(instance, stat_callback);
libcouchbase_set_cookie(instance, object);
}
( run in 1.137 second using v1.01-cache-2.11-cpan-140bd7fdf52 )