Branch Coverage

xs/is.xs
Criterion Covered Total %
branch 84 692 12.1


line true false branch
7 6 1 char errbuf[SHM_ERR_BUFLEN]; const char* path = SvOK(path_sv) ? SvPV_nolen(path_sv) : NULL; ShmHandle* map = shm_is_create(path, (uint32_t)max_entries, (uint32_t)lru_max, (uint32_t)ttl_default, (uint32_t)lru_skip, errbuf);
8 0 7 if (!map) croak("HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
17 0 0 if (!map) croak("HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
27 0 0 const char* name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
29 0 0 if (!map) croak("Data::HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("Data::HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
39 0 0 if (!map) croak("Data::HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("Data::HashMap::Shared::IS: %s", errbuf[0] ? errbuf : "unknown error");
47 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
48 0 0 RETVAL = h->backing_fd;
56 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
57 0 0 if (shm_msync(h) != 0) croak("Data::HashMap::Shared::IS sync: %s", strerror(errno));
62 0 7 if (!SvROK(self_sv)) return;
64 0 7 if (!h) return;
71 12 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 12 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 12 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
72 0 12 EXTRACT_STR_VAL(value);
73 12 0 RETVAL = shm_is_put(h, key, _vstr, (uint32_t)_vlen, _vutf8);
80 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
81 0 0 if ((items - 1) % 2 != 0) croak("set_multi requires even number of arguments (key, value pairs)");
83 0 0 if (h->shard_handles) {
84 0 0 for (int i = 1; i < items; i += 2) {
93 0 0 for (int i = 1; i < items; i += 2) {
96 0 0 if (_vl > SHM_MAX_STR_LEN) { shm_seqlock_write_end(&hdr->seq); shm_rwlock_wrunlock(hdr); croak("value too long"); }
102 0 0 RETVAL = count;
109 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
111 0 0 if (h->shard_handles) {
112 0 0 for (int i = 1; i < items; i++)
118 0 0 for (int i = 1; i < items; i++)
120 0 0 if (count) shm_is_maybe_shrink(h);
124 0 0 RETVAL = count;
131 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
133 0 0 if (nkeys == 0) XSRETURN_EMPTY;
134 0 0 EXTEND(SP, nkeys);
0 0 EXTEND(SP, nkeys);
135 0 0 if (h->shard_handles) {
136 0 0 for (int i = 0; i < nkeys; i++) {
139 0 0 if (shm_is_get(h, key, &out_s, &out_l, &out_u)) {
141 0 0 if (out_u) SvUTF8_on(sv);
150 0 0 uint32_t now = h->expires_at ? shm_now() : 0;
157 0 0 for (int i = 0; i < nkeys; i++) {
163 0 0 for (int i = 0; i < nkeys; i++) {
170 0 0 for (uint32_t j = 0; j <= mask; j++) {
173 0 0 if (st == SHM_EMPTY) break;
174 0 0 if (st != tag) continue;
175 0 0 if (nodes[idx].key == key) {
176 0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
180 0 0 if (found) {
184 0 0 if (SHM_UNPACK_UTF8(nodes[vidx].val_len)) SvUTF8_on(sv);
188 0 0 if (i + 1 < nkeys) {
199 3 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
202 0 3 if (!shm_is_get_with_ttl(h, key, &out_s, &out_l, &out_u, &out_ttl)) XSRETURN_EMPTY;
203 0 3 EXTEND(SP, 2);
205 0 3 if (out_u) SvUTF8_on(vsv);
207 0 3 if (out_ttl < 0) PUSHs(&PL_sv_undef);
213 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
234 2 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
235 2 0 RETVAL = shm_is_persist(h, key);
242 1 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
243 1 0 RETVAL = shm_is_set_ttl(h, key, (uint32_t)ttl_sec);
250 1 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
251 0 1 EXTRACT_STR_VAL(value);
252 0 1 REQUIRE_TTL(h);
0 1 REQUIRE_TTL(h);
253 1 0 RETVAL = shm_is_put_ttl(h, key, _vstr, (uint32_t)_vlen, _vutf8, (uint32_t)ttl_sec);
260 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
261 0 0 RETVAL = (UV)shm_is_max_size(h);
268 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
269 0 0 RETVAL = (UV)shm_is_ttl(h);
276 13 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 13 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 13 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
278 0 13 if (!shm_is_get(h, key, &val, &val_len, &val_utf8)) XSRETURN_UNDEF;
280 2 11 if (val_utf8) SvUTF8_on(RETVAL);
287 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
288 0 0 RETVAL = shm_is_remove(h, key);
295 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
296 0 0 RETVAL = shm_is_exists(h, key);
303 2 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
304 0 2 RETVAL = (UV)shm_is_size(h);
311 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
312 0 0 RETVAL = (UV)shm_is_max_entries(h);
319 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
320 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
321 0 0 for (uint32_t si = 0; si < ns; si++) {
322 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
325 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
327 0 0 EXTEND(SP, hdr->size);
328 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
329 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now))
330 0 0 mXPUSHi(nodes[i].key);
337 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
338 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
339 0 0 for (uint32_t si = 0; si < ns; si++) {
340 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
343 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
345 0 0 EXTEND(SP, hdr->size);
346 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
347 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
351 0 0 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(sv);
352 0 0 mXPUSHs(sv);
360 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
361 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
362 0 0 for (uint32_t si = 0; si < ns; si++) {
363 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
366 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
368 0 0 EXTEND(SP, hdr->size * 2);
369 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
370 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
371 0 0 mXPUSHi(nodes[i].key);
375 0 0 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(sv);
376 0 0 mXPUSHs(sv);
385 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
388 0 0 if (shm_is_each(h, &out_key, &out_val, &out_vlen, &out_vutf8)) {
389 0 0 EXTEND(SP, 2);
390 0 0 mXPUSHi(out_key);
392 0 0 if (out_vutf8) SvUTF8_on(sv);
393 0 0 mXPUSHs(sv);
402 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
409 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
415 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
417 0 0 uint32_t ns = h->shard_handles ? h->num_shards : 1;
418 0 0 for (uint32_t si = 0; si < ns; si++) {
419 0 0 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
422 0 0 uint32_t now = sh->expires_at ? shm_now() : 0;
424 0 0 for (uint32_t i = 0; i < hdr->table_cap; i++) {
425 0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
429 0 0 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(val);
432 0 0 if (!hv_store(hv, kbuf, klen, val, 0)) SvREFCNT_dec(val);
444 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
446 0 0 EXTRACT_STR_VAL(default_sv);
448 0 0 if (!rc) XSRETURN_UNDEF;
450 0 0 if (out_utf8) SvUTF8_on(RETVAL);
457 1 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
459 0 1 if (remaining < 0) XSRETURN_UNDEF;
467 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
468 0 0 RETVAL = (UV)shm_is_capacity(h);
475 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
476 0 0 RETVAL = (UV)shm_is_tombstones(h);
483 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
485 0 0 if (!c) croak("Failed to allocate cursor");
493 1 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
495 0 1 if (!shm_is_take(h, key, &out_str, &out_len, &out_utf8)) XSRETURN_UNDEF;
497 0 1 if (out_utf8) SvUTF8_on(RETVAL);
504 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
507 0 0 if (!shm_is_pop(h, &out_key, &out_val, &out_vlen, &out_vutf8)) XSRETURN_EMPTY;
508 0 0 EXTEND(SP, 2);
511 0 0 if (out_vutf8) SvUTF8_on(vsv);
517 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
520 0 0 if (!shm_is_shift(h, &out_key, &out_val, &out_vlen, &out_vutf8)) XSRETURN_EMPTY;
521 0 0 EXTEND(SP, 2);
524 0 0 if (out_vutf8) SvUTF8_on(vsv);
530 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
531 0 0 if (limit == 0) XSRETURN_EMPTY;
533 0 0 Newxz(entries, limit, shm_is_drain_entry);
539 0 0 EXTEND(SP, n * 2);
540 0 0 for (uint32_t i = 0; i < n; i++) {
543 0 0 if (entries[i].val_utf8) SvUTF8_on(vsv);
546 0 0 if (buf) free(buf);
552 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
553 0 0 RETVAL = (UV)shm_is_flush_expired(h);
560 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
563 0 0 EXTEND(SP, 2);
570 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
578 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
579 0 0 RETVAL = shm_is_touch(h, key);
586 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
587 0 0 RETVAL = shm_is_reserve(h, (uint32_t)target);
594 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
602 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
610 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
611 0 0 RETVAL = (UV)shm_is_stat_recoveries(h);
618 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
626 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
634 2 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
635 0 2 EXTRACT_STR_VAL(val_sv);
636 1 1 RETVAL = shm_is_add(h, key, _vstr, (uint32_t)_vlen, _vutf8);
643 2 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
644 0 2 EXTRACT_STR_VAL(val_sv);
645 0 2 REQUIRE_TTL(h);
0 2 REQUIRE_TTL(h);
646 1 1 RETVAL = shm_is_add_ttl(h, key, _vstr, (uint32_t)_vlen, _vutf8, (uint32_t)ttl_sec);
653 1 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
654 0 1 EXTRACT_STR_VAL(val_sv);
655 1 0 RETVAL = shm_is_update(h, key, _vstr, (uint32_t)_vlen, _vutf8);
662 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
663 0 0 EXTRACT_STR_VAL(val_sv);
664 0 0 REQUIRE_TTL(h);
0 0 REQUIRE_TTL(h);
665 0 0 RETVAL = shm_is_update_ttl(h, key, _vstr, (uint32_t)_vlen, _vutf8, (uint32_t)ttl_sec);
672 2 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
673 0 2 EXTRACT_STR_VAL(val_sv);
676 1 1 if (rc != 1) XSRETURN_UNDEF;
678 0 1 if (out_u) SvUTF8_on(RETVAL);
685 6 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 6 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 6 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
686 0 6 EXTRACT_STR_EXPECTED_DESIRED(expected_sv, desired_sv);
0 6 EXTRACT_STR_EXPECTED_DESIRED(expected_sv, desired_sv);
687 4 2 RETVAL = shm_is_cas(h, key, _estr, (uint32_t)_elen, _dstr, (uint32_t)_dlen, _dutf8);
694 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
695 0 0 EXTRACT_STR_EXPECTED(expected_sv);
697 0 0 if (!shm_is_cas_take(h, key, _estr, (uint32_t)_elen, &out_s, &out_l, &out_u)) XSRETURN_UNDEF;
699 0 0 if (out_u) SvUTF8_on(RETVAL);
706 0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::IS", self_sv);
707 0 0 RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef;
715 0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
717 0 0 if (!h) croak("Attempted to use a destroyed Data::HashMap::Shared::IS object");
720 0 0 if (items < 2) croak("Usage: Data::HashMap::Shared::IS->unlink($path)");
723 0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
724 0 0 shm_unlink_sharded(INT2PTR(ShmHandle*, SvIV(SvRV(self_or_class)))) :
735 0 0 if (!SvROK(self_sv)) return;
737 0 0 if (!c) return;
740 0 0 if (h) shm_is_flush_deferred(h);
746 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
749 0 0 if (shm_is_cursor_next(c, &out_key, &out_val, &out_vlen, &out_vutf8)) {
750 0 0 EXTEND(SP, 2);
751 0 0 mXPUSHi(out_key);
753 0 0 if (out_vutf8) SvUTF8_on(sv);
754 0 0 mXPUSHs(sv);
762 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
768 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::IS::Cursor", self_sv);
769 0 0 RETVAL = shm_is_cursor_seek(c, key);