| line |
true |
false |
branch |
|
116
|
33 |
33 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
118
|
1 |
65 |
if (!h) croak("Data::PubSub::Shared::Int->new: %s", errbuf); |
|
135
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_memfd: %s", errbuf); |
|
151
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_from_fd: %s", errbuf); |
|
163
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
165
|
0 |
1 |
RETVAL = h->backing_fd; |
|
173
|
67 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
67 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
67 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
183
|
468 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
468 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
468 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
185
|
468 |
0 |
RETVAL = pubsub_int_publish(h, (int64_t)value); |
|
193
|
5 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
196
|
1 |
4 |
if (count == 0) { RETVAL = 0; } |
|
198
|
0 |
4 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
200
|
208 |
4 |
for (uint32_t i = 0; i < count; i++) |
|
212
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
221
|
21 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
21 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
21 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
224
|
0 |
21 |
if (!sub) croak("subscribe: out of memory"); |
|
237
|
26 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
26 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
26 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
240
|
0 |
26 |
if (!sub) croak("subscribe_all: out of memory"); |
|
253
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
255
|
0 |
1 |
RETVAL = h->capacity; |
|
263
|
13 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
13 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
13 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
265
|
0 |
13 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
273
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
275
|
1 |
1 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
283
|
5 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
305
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
313
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
315
|
0 |
4 |
if (pubsub_sync(h) != 0) |
|
323
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
325
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
328
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int->unlink($path)"); |
|
331
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
332
|
0 |
1 |
if (unlink(path) != 0) |
|
339
|
9 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
9 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
9 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
342
|
0 |
9 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
351
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
359
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
361
|
0 |
1 |
RETVAL = h->notify_fd; |
|
369
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
377
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
387
|
47 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
47 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
47 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
390
|
47 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
397
|
35 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
35 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
35 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
401
|
31 |
4 |
if (r == 1) |
|
413
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
416
|
10 |
2 |
for (UV i = 0; i < count; i++) { |
|
418
|
0 |
10 |
if (r != 1) break; |
|
419
|
0 |
10 |
mXPUSHi((IV)value); |
|
426
|
9 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
430
|
9 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
432
|
8 |
1 |
if (r == 1) |
|
443
|
8 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
447
|
1 |
7 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
448
|
1027 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
1020 |
7 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
449
|
0 |
1020 |
mXPUSHi((IV)value); |
|
456
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
460
|
1 |
2 |
if (count == 0) XSRETURN(0); |
|
461
|
2 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
462
|
1 |
1 |
if (!pubsub_int_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
463
|
0 |
1 |
mXPUSHi((IV)value); |
|
464
|
4 |
1 |
for (UV i = 1; i < count; i++) { |
|
465
|
0 |
4 |
if (!pubsub_int_poll(sub, &value)) break; |
|
466
|
0 |
4 |
mXPUSHi((IV)value); |
|
473
|
18 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
18 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
18 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
483
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
485
|
0 |
2 |
RETVAL = (UV)sub->overflow_count; |
|
493
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
495
|
0 |
2 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
503
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
506
|
1 |
1 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
1 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
514
|
6 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
6 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
6 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
516
|
2 |
4 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
517
|
0 |
6 |
RETVAL = (UV)sub->cursor; |
|
525
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
533
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
536
|
0 |
2 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
543
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
547
|
105 |
3 |
while (pubsub_int_poll(sub, &value)) { |
|
549
|
0 |
105 |
PUSHMARK(SP); |
|
550
|
0 |
105 |
mXPUSHi((IV)value); |
|
562
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
567
|
1 |
2 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
568
|
7 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
5 |
2 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
569
|
0 |
5 |
mXPUSHi((IV)value); |
|
576
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
584
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
586
|
0 |
3 |
RETVAL = sub->notify_fd; |
|
601
|
14 |
35 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
602
|
15 |
34 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
604
|
1 |
48 |
if (!h) croak("Data::PubSub::Shared::Str->new: %s", errbuf); |
|
621
|
0 |
1 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
623
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_memfd: %s", errbuf); |
|
639
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_from_fd: %s", errbuf); |
|
651
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
653
|
0 |
1 |
RETVAL = h->backing_fd; |
|
661
|
50 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
50 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
50 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
671
|
185 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
185 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
185 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
676
|
3 |
182 |
if (utf8) |
|
681
|
2 |
183 |
if (r == -1) croak("publish: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
690
|
5 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
5 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
694
|
4 |
1 |
if (count > 0) { |
|
696
|
13 |
3 |
for (uint32_t i = 0; i < count; i++) { |
|
701
|
0 |
13 |
if (utf8) |
|
706
|
1 |
12 |
if (r == -1) { |
|
723
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
728
|
0 |
1 |
if (utf8) |
|
733
|
0 |
1 |
if (r == -1) croak("publish_notify: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
740
|
11 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
11 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
11 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
743
|
0 |
11 |
if (!sub) croak("subscribe: out of memory"); |
|
756
|
24 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
24 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
24 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
759
|
0 |
24 |
if (!sub) croak("subscribe_all: out of memory"); |
|
772
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
774
|
0 |
1 |
RETVAL = h->capacity; |
|
782
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
784
|
0 |
2 |
RETVAL = h->msg_size; |
|
792
|
7 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
794
|
0 |
7 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
802
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
804
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
812
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
836
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
844
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
846
|
0 |
2 |
if (pubsub_sync(h) != 0) |
|
854
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
856
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
859
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Str->unlink($path)"); |
|
862
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
863
|
0 |
1 |
if (unlink(path) != 0) |
|
870
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
873
|
0 |
4 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
882
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
890
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
892
|
0 |
0 |
RETVAL = h->notify_fd; |
|
900
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
908
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
918
|
35 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
35 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
35 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
921
|
35 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
928
|
37 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
37 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
37 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
934
|
34 |
3 |
if (r == 1) { |
|
936
|
2 |
32 |
if (utf8) SvUTF8_on(RETVAL); |
|
948
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
953
|
4 |
0 |
for (UV i = 0; i < count; i++) { |
|
955
|
1 |
3 |
if (r != 1) break; |
|
957
|
0 |
3 |
if (utf8) SvUTF8_on(sv); |
|
958
|
0 |
3 |
mXPUSHs(sv); |
|
965
|
54 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
54 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
54 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
971
|
54 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
973
|
53 |
1 |
if (r == 1) { |
|
975
|
0 |
53 |
if (utf8) SvUTF8_on(RETVAL); |
|
986
|
4 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
4 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
4 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
992
|
0 |
4 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
993
|
20 |
0 |
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
|
16 |
4 |
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
995
|
0 |
16 |
if (utf8) SvUTF8_on(sv); |
|
996
|
0 |
16 |
mXPUSHs(sv); |
|
1004
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1010
|
1 |
1 |
if (count == 0) XSRETURN(0); |
|
1011
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1012
|
0 |
1 |
if (pubsub_str_poll_wait(sub, &str, &len, &utf8, timeout) != 1) XSRETURN(0); |
|
1015
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1016
|
0 |
1 |
mXPUSHs(sv); |
|
1018
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1019
|
0 |
2 |
if (pubsub_str_poll(sub, &str, &len, &utf8) != 1) break; |
|
1021
|
0 |
2 |
if (utf8) SvUTF8_on(sv); |
|
1022
|
0 |
2 |
mXPUSHs(sv); |
|
1029
|
8 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1039
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1041
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1049
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1051
|
0 |
1 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1059
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1062
|
1 |
1 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
1 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
1070
|
4 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
4 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
4 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1072
|
2 |
2 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1073
|
0 |
4 |
RETVAL = (UV)sub->cursor; |
|
1081
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1089
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1092
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1099
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1105
|
4 |
2 |
while (pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
1108
|
1 |
3 |
if (utf8) SvUTF8_on(sv); |
|
1109
|
0 |
4 |
PUSHMARK(SP); |
|
1110
|
0 |
4 |
mXPUSHs(sv); |
|
1122
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1129
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1130
|
2 |
0 |
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
|
1 |
1 |
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
1132
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1133
|
0 |
1 |
mXPUSHs(sv); |
|
1141
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1149
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1151
|
0 |
1 |
RETVAL = sub->notify_fd; |
|
1165
|
2 |
10 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1167
|
1 |
11 |
if (!h) croak("Data::PubSub::Shared::Int32->new: %s", errbuf); |
|
1184
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_memfd: %s", errbuf); |
|
1200
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_from_fd: %s", errbuf); |
|
1212
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1214
|
0 |
1 |
RETVAL = h->backing_fd; |
|
1222
|
13 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
13 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
13 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1232
|
50 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
50 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
50 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1234
|
50 |
0 |
RETVAL = pubsub_int32_publish(h, (int32_t)value); |
|
1242
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1245
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1247
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1249
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1261
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1270
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1273
|
0 |
4 |
if (!sub) croak("subscribe: out of memory"); |
|
1286
|
7 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1289
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1302
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1304
|
0 |
1 |
RETVAL = h->capacity; |
|
1312
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1314
|
0 |
4 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1322
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1324
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1332
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1354
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1362
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1364
|
0 |
1 |
if (pubsub_sync(h) != 0) |
|
1372
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1374
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1377
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int32->unlink($path)"); |
|
1380
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1381
|
0 |
0 |
if (unlink(path) != 0) |
|
1388
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1391
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1400
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1408
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1410
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1418
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1426
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1436
|
11 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
11 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
11 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1439
|
11 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1446
|
9 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1450
|
8 |
1 |
if (r == 1) |
|
1462
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1465
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1467
|
1 |
6 |
if (r != 1) break; |
|
1468
|
0 |
6 |
mXPUSHi((IV)value); |
|
1475
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1479
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1481
|
0 |
1 |
if (r == 1) |
|
1492
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1496
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1497
|
9 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1498
|
0 |
8 |
mXPUSHi((IV)value); |
|
1505
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1509
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
1510
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1511
|
0 |
1 |
if (!pubsub_int32_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
1512
|
0 |
1 |
mXPUSHi((IV)value); |
|
1513
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1514
|
0 |
2 |
if (!pubsub_int32_poll(sub, &value)) break; |
|
1515
|
0 |
2 |
mXPUSHi((IV)value); |
|
1522
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1532
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1534
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1542
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1544
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1552
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1555
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
1563
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1565
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1566
|
0 |
1 |
RETVAL = (UV)sub->cursor; |
|
1574
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1582
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1585
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1592
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1596
|
5 |
1 |
while (pubsub_int32_poll(sub, &value)) { |
|
1598
|
0 |
5 |
PUSHMARK(SP); |
|
1599
|
0 |
5 |
mXPUSHi((IV)value); |
|
1611
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1616
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1617
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1618
|
0 |
0 |
mXPUSHi((IV)value); |
|
1625
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1633
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1635
|
0 |
0 |
RETVAL = sub->notify_fd; |
|
1649
|
1 |
10 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1651
|
1 |
10 |
if (!h) croak("Data::PubSub::Shared::Int16->new: %s", errbuf); |
|
1668
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_memfd: %s", errbuf); |
|
1684
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_from_fd: %s", errbuf); |
|
1696
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1698
|
1 |
0 |
RETVAL = h->backing_fd; |
|
1706
|
12 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1716
|
49 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
49 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
49 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1718
|
49 |
0 |
RETVAL = pubsub_int16_publish(h, (int16_t)value); |
|
1726
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1729
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1731
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1733
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1745
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1754
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1757
|
0 |
4 |
if (!sub) croak("subscribe: out of memory"); |
|
1770
|
7 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
7 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1773
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1786
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1788
|
1 |
0 |
RETVAL = h->capacity; |
|
1796
|
4 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
4 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1798
|
4 |
0 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1806
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1808
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1816
|
2 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
2 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1838
|
1 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
1 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1846
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1848
|
0 |
0 |
if (pubsub_sync(h) != 0) |
|
1856
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1858
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1861
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int16->unlink($path)"); |
|
1864
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1865
|
0 |
0 |
if (unlink(path) != 0) |
|
1872
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1875
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1884
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1892
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1894
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1902
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1910
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1920
|
11 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
11 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
11 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1923
|
11 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1930
|
9 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
9 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1934
|
8 |
1 |
if (r == 1) |
|
1946
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1949
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1951
|
1 |
6 |
if (r != 1) break; |
|
1952
|
0 |
6 |
mXPUSHi((IV)value); |
|
1959
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1963
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1965
|
0 |
1 |
if (r == 1) |
|
1976
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1980
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1981
|
9 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
1982
|
0 |
8 |
mXPUSHi((IV)value); |
|
1989
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1993
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
1994
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1995
|
0 |
1 |
if (!pubsub_int16_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
1996
|
0 |
1 |
mXPUSHi((IV)value); |
|
1997
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1998
|
0 |
2 |
if (!pubsub_int16_poll(sub, &value)) break; |
|
1999
|
0 |
2 |
mXPUSHi((IV)value); |
|
2006
|
3 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
3 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2016
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2018
|
1 |
0 |
RETVAL = (UV)sub->overflow_count; |
|
2026
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2028
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
2036
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2039
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
|
1 |
0 |
RETVAL = (sub->cursor < wp && wp - sub->cursor > sub->capacity); |
|
2047
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2049
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
2050
|
1 |
0 |
RETVAL = (UV)sub->cursor; |
|
2058
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2066
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2069
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
2076
|
1 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
1 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2080
|
5 |
1 |
while (pubsub_int16_poll(sub, &value)) { |
|
2082
|
0 |
5 |
PUSHMARK(SP); |
|
2083
|
0 |
5 |
mXPUSHi((IV)value); |
|
2095
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2100
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
2101
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
2102
|
0 |
0 |
mXPUSHi((IV)value); |
|
2109
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2117
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2119
|
0 |
0 |
RETVAL = sub->notify_fd; |