Cache-FastMmap
view release on metacpan or search on metacpan
FastMmap.xs view on Meta::CPAN
SV * obj;
SV * key;
INIT:
int key_len;
void * key_ptr;
MU32 hash_page, hash_slot;
STRLEN pl_key_len;
FC_ENTRY
PPCODE:
/* Get key length, data pointer */
key_ptr = (void *)SvPV(key, pl_key_len);
key_len = (int)pl_key_len;
/* Hash key to get page and slot */
mmc_hash(cache, key_ptr, key_len, &hash_page, &hash_slot);
XPUSHs(sv_2mortal(newSViv((IV)hash_page)));
XPUSHs(sv_2mortal(newSViv((IV)hash_slot)));
FastMmap.xs view on Meta::CPAN
INIT:
int key_len, val_len, found;
void * key_ptr, * val_ptr;
MU32 expire_on = 0;
MU32 flags = 0;
STRLEN pl_key_len;
SV * val;
FC_ENTRY
PPCODE:
/* Get key length, data pointer */
key_ptr = (void *)SvPV(key, pl_key_len);
key_len = (int)pl_key_len;
/* Get value data pointer */
found = mmc_read(cache, (MU32)hash_slot, key_ptr, key_len, &val_ptr, &val_len, &expire_on, &flags);
/* If not found, use undef */
if (found == -1) {
FastMmap.xs view on Meta::CPAN
U32 hash_slot;
SV * key;
INIT:
MU32 out_flags;
int key_len, did_delete;
void * key_ptr;
STRLEN pl_key_len;
FC_ENTRY
PPCODE:
/* Get key length, data pointer */
key_ptr = (void *)SvPV(key, pl_key_len);
key_len = (int)pl_key_len;
/* Write value to cache */
did_delete = mmc_delete(cache, (MU32)hash_slot, key_ptr, key_len, &out_flags);
XPUSHs(sv_2mortal(newSViv((IV)did_delete)));
XPUSHs(sv_2mortal(newSViv((IV)out_flags)));
void
fc_get_page_details(obj)
SV * obj;
INIT:
MU32 nreads = 0, nreadhits = 0;
FC_ENTRY
PPCODE:
mmc_get_page_details(cache, &nreads, &nreadhits);
XPUSHs(sv_2mortal(newSViv((IV)nreads)));
XPUSHs(sv_2mortal(newSViv((IV)nreadhits)));
NO_OUTPUT void
fc_reset_page_details(obj)
SV * obj;
INIT:
FastMmap.xs view on Meta::CPAN
INIT:
MU32 new_num_slots = 0, ** to_expunge = 0;
int num_expunge, item;
void * key_ptr, * val_ptr;
int key_len, val_len;
MU32 last_access, expire_on, flags;
FC_ENTRY
PPCODE:
num_expunge = mmc_calc_expunge(cache, mode, len, &new_num_slots, &to_expunge);
if (to_expunge) {
/* Want list of expunged keys/values? */
if (wb) {
for (item = 0; item < num_expunge; item++) {
mmc_get_details(cache, to_expunge[item],
&key_ptr, &key_len, &val_ptr, &val_len,
FastMmap.xs view on Meta::CPAN
int mode;
INIT:
mmap_cache_it * it;
MU32 * entry_ptr;
void * key_ptr, * val_ptr;
int key_len, val_len;
MU32 last_access, expire_on, flags;
FC_ENTRY
PPCODE:
it = mmc_iterate_new(cache);
/* Iterate over all items */
while ((entry_ptr = mmc_iterate_next(it))) {
SV * key;
mmc_get_details(cache, entry_ptr,
&key_ptr, &key_len, &val_ptr, &val_len,
&last_access, &expire_on, &flags);
( run in 0.611 second using v1.01-cache-2.11-cpan-71847e10f99 )