| line |
true |
false |
branch |
|
122
|
33 |
31 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
124
|
1 |
63 |
if (!h) croak("Data::PubSub::Shared::Int->new: %s", errbuf); |
|
141
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_memfd: %s", errbuf); |
|
157
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_from_fd: %s", errbuf); |
|
169
|
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); |
|
171
|
0 |
1 |
RETVAL = h->backing_fd; |
|
179
|
65 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
65 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
65 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
189
|
465 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
465 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
465 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
191
|
465 |
0 |
RETVAL = pubsub_int_publish(h, (int64_t)value); |
|
199
|
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); |
|
202
|
1 |
4 |
if (count == 0) { RETVAL = 0; } |
|
204
|
0 |
4 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
206
|
208 |
4 |
for (uint32_t i = 0; i < count; i++) |
|
218
|
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); |
|
227
|
19 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
19 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
19 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
230
|
0 |
19 |
if (!sub) croak("subscribe: out of memory"); |
|
243
|
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); |
|
246
|
0 |
26 |
if (!sub) croak("subscribe_all: out of memory"); |
|
259
|
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); |
|
261
|
0 |
1 |
RETVAL = h->capacity; |
|
269
|
12 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int", self); |
|
271
|
0 |
12 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
279
|
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); |
|
281
|
1 |
1 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
289
|
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); |
|
311
|
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); |
|
319
|
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); |
|
321
|
0 |
4 |
if (pubsub_sync(h) != 0) |
|
329
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
331
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
334
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int->unlink($path)"); |
|
337
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
338
|
0 |
1 |
if (unlink(path) != 0) |
|
345
|
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); |
|
348
|
0 |
9 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
357
|
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); |
|
365
|
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); |
|
367
|
0 |
1 |
RETVAL = h->notify_fd; |
|
375
|
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); |
|
383
|
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); |
|
393
|
45 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
45 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
45 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
396
|
45 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
403
|
31 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
31 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
31 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
407
|
28 |
3 |
if (r == 1) |
|
419
|
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); |
|
422
|
10 |
2 |
for (UV i = 0; i < count; i++) { |
|
424
|
0 |
10 |
if (r != 1) break; |
|
425
|
0 |
10 |
mXPUSHi((IV)value); |
|
432
|
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); |
|
436
|
9 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
438
|
8 |
1 |
if (r == 1) |
|
449
|
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); |
|
453
|
1 |
7 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
454
|
1027 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
1020 |
7 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
455
|
0 |
1020 |
mXPUSHi((IV)value); |
|
462
|
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); |
|
466
|
1 |
2 |
if (count == 0) XSRETURN(0); |
|
467
|
2 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
468
|
1 |
1 |
if (!pubsub_int_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
469
|
0 |
1 |
mXPUSHi((IV)value); |
|
470
|
4 |
1 |
for (UV i = 1; i < count; i++) { |
|
471
|
0 |
4 |
if (!pubsub_int_poll(sub, &value)) break; |
|
472
|
0 |
4 |
mXPUSHi((IV)value); |
|
479
|
16 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
16 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
|
0 |
16 |
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self); |
|
489
|
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); |
|
491
|
0 |
2 |
RETVAL = (UV)sub->overflow_count; |
|
499
|
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); |
|
501
|
0 |
2 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
509
|
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); |
|
512
|
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); |
|
520
|
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); |
|
522
|
2 |
4 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
523
|
0 |
6 |
RETVAL = (UV)sub->cursor; |
|
531
|
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); |
|
539
|
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); |
|
542
|
0 |
2 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
549
|
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); |
|
553
|
105 |
3 |
while (pubsub_int_poll(sub, &value)) { |
|
555
|
0 |
105 |
PUSHMARK(SP); |
|
556
|
0 |
105 |
mXPUSHi((IV)value); |
|
568
|
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); |
|
573
|
1 |
2 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
574
|
7 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
5 |
2 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
575
|
0 |
5 |
mXPUSHi((IV)value); |
|
582
|
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); |
|
590
|
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); |
|
592
|
0 |
3 |
RETVAL = sub->notify_fd; |
|
607
|
14 |
33 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
608
|
15 |
32 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
610
|
1 |
46 |
if (!h) croak("Data::PubSub::Shared::Str->new: %s", errbuf); |
|
627
|
0 |
1 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
629
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_memfd: %s", errbuf); |
|
645
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_from_fd: %s", errbuf); |
|
657
|
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); |
|
659
|
0 |
1 |
RETVAL = h->backing_fd; |
|
667
|
48 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
48 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
48 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
677
|
182 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
182 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
182 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
682
|
2 |
180 |
if (utf8) |
|
687
|
2 |
180 |
if (r == -1) croak("publish: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
696
|
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); |
|
700
|
4 |
1 |
if (count > 0) { |
|
702
|
13 |
3 |
for (uint32_t i = 0; i < count; i++) { |
|
707
|
0 |
13 |
if (utf8) |
|
712
|
1 |
12 |
if (r == -1) { |
|
729
|
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); |
|
734
|
0 |
1 |
if (utf8) |
|
739
|
0 |
1 |
if (r == -1) croak("publish_notify: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
746
|
9 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
9 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
9 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
749
|
0 |
9 |
if (!sub) croak("subscribe: out of memory"); |
|
762
|
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); |
|
765
|
0 |
24 |
if (!sub) croak("subscribe_all: out of memory"); |
|
778
|
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); |
|
780
|
0 |
1 |
RETVAL = h->capacity; |
|
788
|
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); |
|
790
|
0 |
2 |
RETVAL = h->msg_size; |
|
798
|
6 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
6 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
|
0 |
6 |
EXTRACT_HANDLE("Data::PubSub::Shared::Str", self); |
|
800
|
0 |
6 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
808
|
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); |
|
810
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
818
|
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); |
|
842
|
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); |
|
850
|
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); |
|
852
|
0 |
2 |
if (pubsub_sync(h) != 0) |
|
860
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
862
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
865
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Str->unlink($path)"); |
|
868
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
869
|
0 |
1 |
if (unlink(path) != 0) |
|
876
|
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); |
|
879
|
0 |
4 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
888
|
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); |
|
896
|
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); |
|
898
|
0 |
0 |
RETVAL = h->notify_fd; |
|
906
|
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); |
|
914
|
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); |
|
924
|
33 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
33 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
33 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
927
|
33 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
934
|
33 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
33 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
33 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
940
|
31 |
2 |
if (r == 1) { |
|
942
|
1 |
30 |
if (utf8) SvUTF8_on(RETVAL); |
|
954
|
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); |
|
959
|
4 |
0 |
for (UV i = 0; i < count; i++) { |
|
961
|
1 |
3 |
if (r != 1) break; |
|
963
|
0 |
3 |
if (utf8) SvUTF8_on(sv); |
|
964
|
0 |
3 |
mXPUSHs(sv); |
|
971
|
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); |
|
977
|
54 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
979
|
53 |
1 |
if (r == 1) { |
|
981
|
0 |
53 |
if (utf8) SvUTF8_on(RETVAL); |
|
992
|
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); |
|
998
|
0 |
4 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
999
|
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) { |
|
1001
|
0 |
16 |
if (utf8) SvUTF8_on(sv); |
|
1002
|
0 |
16 |
mXPUSHs(sv); |
|
1010
|
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); |
|
1016
|
1 |
1 |
if (count == 0) XSRETURN(0); |
|
1017
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1018
|
0 |
1 |
if (pubsub_str_poll_wait(sub, &str, &len, &utf8, timeout) != 1) XSRETURN(0); |
|
1021
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1022
|
0 |
1 |
mXPUSHs(sv); |
|
1024
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1025
|
0 |
2 |
if (pubsub_str_poll(sub, &str, &len, &utf8) != 1) break; |
|
1027
|
0 |
2 |
if (utf8) SvUTF8_on(sv); |
|
1028
|
0 |
2 |
mXPUSHs(sv); |
|
1035
|
6 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
6 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
|
0 |
6 |
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self); |
|
1045
|
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); |
|
1047
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1055
|
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); |
|
1057
|
0 |
1 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1065
|
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); |
|
1068
|
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); |
|
1076
|
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); |
|
1078
|
2 |
2 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1079
|
0 |
4 |
RETVAL = (UV)sub->cursor; |
|
1087
|
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); |
|
1095
|
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); |
|
1098
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1105
|
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); |
|
1111
|
4 |
2 |
while (pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
1114
|
1 |
3 |
if (utf8) SvUTF8_on(sv); |
|
1115
|
0 |
4 |
PUSHMARK(SP); |
|
1116
|
0 |
4 |
mXPUSHs(sv); |
|
1128
|
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); |
|
1135
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1136
|
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) { |
|
1138
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1139
|
0 |
1 |
mXPUSHs(sv); |
|
1147
|
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); |
|
1155
|
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); |
|
1157
|
0 |
1 |
RETVAL = sub->notify_fd; |
|
1171
|
2 |
9 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1173
|
1 |
10 |
if (!h) croak("Data::PubSub::Shared::Int32->new: %s", errbuf); |
|
1190
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_memfd: %s", errbuf); |
|
1206
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_from_fd: %s", errbuf); |
|
1218
|
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); |
|
1220
|
0 |
1 |
RETVAL = h->backing_fd; |
|
1228
|
12 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
12 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1238
|
49 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
49 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
49 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1240
|
49 |
0 |
RETVAL = pubsub_int32_publish(h, (int32_t)value); |
|
1248
|
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); |
|
1251
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1253
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1255
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1267
|
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); |
|
1276
|
3 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
3 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
|
0 |
3 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int32", self); |
|
1279
|
0 |
3 |
if (!sub) croak("subscribe: out of memory"); |
|
1292
|
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); |
|
1295
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1308
|
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); |
|
1310
|
0 |
1 |
RETVAL = h->capacity; |
|
1318
|
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); |
|
1320
|
0 |
4 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1328
|
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); |
|
1330
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1338
|
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); |
|
1360
|
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); |
|
1368
|
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); |
|
1370
|
0 |
1 |
if (pubsub_sync(h) != 0) |
|
1378
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1380
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1383
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int32->unlink($path)"); |
|
1386
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1387
|
0 |
0 |
if (unlink(path) != 0) |
|
1394
|
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); |
|
1397
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1406
|
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); |
|
1414
|
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); |
|
1416
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1424
|
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); |
|
1432
|
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); |
|
1442
|
10 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
10 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
10 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1445
|
10 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1452
|
8 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1456
|
7 |
1 |
if (r == 1) |
|
1468
|
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); |
|
1471
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1473
|
1 |
6 |
if (r != 1) break; |
|
1474
|
0 |
6 |
mXPUSHi((IV)value); |
|
1481
|
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); |
|
1485
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1487
|
0 |
1 |
if (r == 1) |
|
1498
|
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); |
|
1502
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1503
|
9 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1504
|
0 |
8 |
mXPUSHi((IV)value); |
|
1511
|
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); |
|
1515
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
1516
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1517
|
0 |
1 |
if (!pubsub_int32_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
1518
|
0 |
1 |
mXPUSHi((IV)value); |
|
1519
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1520
|
0 |
2 |
if (!pubsub_int32_poll(sub, &value)) break; |
|
1521
|
0 |
2 |
mXPUSHi((IV)value); |
|
1528
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self); |
|
1538
|
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); |
|
1540
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1548
|
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); |
|
1550
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1558
|
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); |
|
1561
|
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); |
|
1569
|
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); |
|
1571
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1572
|
0 |
1 |
RETVAL = (UV)sub->cursor; |
|
1580
|
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); |
|
1588
|
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); |
|
1591
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1598
|
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); |
|
1602
|
5 |
1 |
while (pubsub_int32_poll(sub, &value)) { |
|
1604
|
0 |
5 |
PUSHMARK(SP); |
|
1605
|
0 |
5 |
mXPUSHi((IV)value); |
|
1617
|
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); |
|
1622
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1623
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1624
|
0 |
0 |
mXPUSHi((IV)value); |
|
1631
|
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); |
|
1639
|
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); |
|
1641
|
0 |
0 |
RETVAL = sub->notify_fd; |
|
1655
|
1 |
9 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1657
|
1 |
9 |
if (!h) croak("Data::PubSub::Shared::Int16->new: %s", errbuf); |
|
1674
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_memfd: %s", errbuf); |
|
1690
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_from_fd: %s", errbuf); |
|
1702
|
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); |
|
1704
|
1 |
0 |
RETVAL = h->backing_fd; |
|
1712
|
11 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
11 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
11 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1722
|
48 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
48 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
48 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1724
|
48 |
0 |
RETVAL = pubsub_int16_publish(h, (int16_t)value); |
|
1732
|
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); |
|
1735
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1737
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1739
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1751
|
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); |
|
1760
|
3 |
0 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
3 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
|
0 |
3 |
EXTRACT_HANDLE("Data::PubSub::Shared::Int16", self); |
|
1763
|
0 |
3 |
if (!sub) croak("subscribe: out of memory"); |
|
1776
|
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); |
|
1779
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1792
|
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); |
|
1794
|
1 |
0 |
RETVAL = h->capacity; |
|
1802
|
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); |
|
1804
|
4 |
0 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1812
|
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); |
|
1814
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1822
|
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); |
|
1844
|
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); |
|
1852
|
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); |
|
1854
|
0 |
0 |
if (pubsub_sync(h) != 0) |
|
1862
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1864
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1867
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int16->unlink($path)"); |
|
1870
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1871
|
0 |
0 |
if (unlink(path) != 0) |
|
1878
|
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); |
|
1881
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1890
|
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); |
|
1898
|
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); |
|
1900
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1908
|
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); |
|
1916
|
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); |
|
1926
|
10 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
10 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
10 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1929
|
10 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1936
|
8 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
8 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
1940
|
7 |
1 |
if (r == 1) |
|
1952
|
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); |
|
1955
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1957
|
1 |
6 |
if (r != 1) break; |
|
1958
|
0 |
6 |
mXPUSHi((IV)value); |
|
1965
|
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); |
|
1969
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1971
|
0 |
1 |
if (r == 1) |
|
1982
|
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); |
|
1986
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1987
|
9 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
1988
|
0 |
8 |
mXPUSHi((IV)value); |
|
1995
|
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); |
|
1999
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
2000
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
2001
|
0 |
1 |
if (!pubsub_int16_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
2002
|
0 |
1 |
mXPUSHi((IV)value); |
|
2003
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
2004
|
0 |
2 |
if (!pubsub_int16_poll(sub, &value)) break; |
|
2005
|
0 |
2 |
mXPUSHi((IV)value); |
|
2012
|
2 |
0 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
|
0 |
2 |
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self); |
|
2022
|
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); |
|
2024
|
1 |
0 |
RETVAL = (UV)sub->overflow_count; |
|
2032
|
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); |
|
2034
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
2042
|
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); |
|
2045
|
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); |
|
2053
|
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); |
|
2055
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
2056
|
1 |
0 |
RETVAL = (UV)sub->cursor; |
|
2064
|
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); |
|
2072
|
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); |
|
2075
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
2082
|
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); |
|
2086
|
5 |
1 |
while (pubsub_int16_poll(sub, &value)) { |
|
2088
|
0 |
5 |
PUSHMARK(SP); |
|
2089
|
0 |
5 |
mXPUSHi((IV)value); |
|
2101
|
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); |
|
2106
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
2107
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
2108
|
0 |
0 |
mXPUSHi((IV)value); |
|
2115
|
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); |
|
2123
|
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); |
|
2125
|
0 |
0 |
RETVAL = sub->notify_fd; |