| line |
true |
false |
branch |
|
121
|
33 |
33 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
123
|
1 |
65 |
if (!h) croak("Data::PubSub::Shared::Int->new: %s", errbuf); |
|
137
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_memfd: %s", errbuf); |
|
150
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int->new_from_fd: %s", errbuf); |
|
159
|
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); |
|
161
|
0 |
1 |
RETVAL = h->backing_fd; |
|
169
|
0 |
67 |
if (!SvROK(self)) return; |
|
171
|
0 |
67 |
if (!h) return; |
|
180
|
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); |
|
182
|
468 |
0 |
RETVAL = pubsub_int_publish(h, (int64_t)value); |
|
190
|
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); |
|
193
|
1 |
4 |
if (count == 0) { RETVAL = 0; } |
|
195
|
0 |
4 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
197
|
208 |
4 |
for (uint32_t i = 0; i < count; i++) |
|
209
|
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); |
|
218
|
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); |
|
221
|
0 |
21 |
if (!sub) croak("subscribe: out of memory"); |
|
231
|
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); |
|
234
|
0 |
26 |
if (!sub) croak("subscribe_all: out of memory"); |
|
244
|
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); |
|
246
|
0 |
1 |
RETVAL = h->capacity; |
|
254
|
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); |
|
256
|
0 |
13 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
264
|
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); |
|
266
|
1 |
1 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
274
|
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); |
|
296
|
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); |
|
304
|
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); |
|
306
|
0 |
4 |
if (pubsub_sync(h) != 0) |
|
314
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
316
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
319
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int->unlink($path)"); |
|
322
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
323
|
0 |
1 |
if (unlink(path) != 0) |
|
330
|
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); |
|
333
|
0 |
9 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
342
|
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); |
|
350
|
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); |
|
352
|
0 |
1 |
RETVAL = h->notify_fd; |
|
360
|
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); |
|
363
|
4 |
0 |
RETVAL = (v >= 0) ? newSViv((IV)v) : &PL_sv_undef; |
|
371
|
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); |
|
381
|
0 |
47 |
if (!SvROK(self)) return; |
|
383
|
0 |
47 |
if (!sub) return; |
|
385
|
47 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
392
|
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); |
|
396
|
31 |
4 |
if (r == 1) |
|
408
|
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); |
|
411
|
10 |
2 |
for (UV i = 0; i < count; i++) { |
|
413
|
0 |
10 |
if (r != 1) break; |
|
414
|
0 |
10 |
mXPUSHi((IV)value); |
|
421
|
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); |
|
425
|
9 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
427
|
8 |
1 |
if (r == 1) |
|
438
|
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); |
|
442
|
1 |
7 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
443
|
1027 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
1020 |
7 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
444
|
0 |
1020 |
mXPUSHi((IV)value); |
|
451
|
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); |
|
455
|
1 |
2 |
if (count == 0) XSRETURN(0); |
|
456
|
2 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
457
|
1 |
1 |
if (!pubsub_int_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
458
|
0 |
1 |
mXPUSHi((IV)value); |
|
459
|
4 |
1 |
for (UV i = 1; i < count; i++) { |
|
460
|
0 |
4 |
if (!pubsub_int_poll(sub, &value)) break; |
|
461
|
0 |
4 |
mXPUSHi((IV)value); |
|
468
|
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); |
|
478
|
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); |
|
480
|
0 |
2 |
RETVAL = (UV)sub->overflow_count; |
|
488
|
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); |
|
490
|
0 |
2 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
498
|
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
|
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); |
|
509
|
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); |
|
511
|
2 |
4 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
512
|
0 |
6 |
RETVAL = (UV)sub->cursor; |
|
520
|
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); |
|
528
|
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); |
|
531
|
0 |
2 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
538
|
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); |
|
542
|
105 |
3 |
while (pubsub_int_poll(sub, &value)) { |
|
545
|
0 |
105 |
PUSHMARK(SP); |
|
546
|
0 |
105 |
mXPUSHi((IV)value); |
|
549
|
105 |
0 |
FREETMPS; LEAVE; |
|
559
|
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); |
|
564
|
1 |
2 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
565
|
7 |
1 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
|
5 |
2 |
while (max_count-- > 0 && pubsub_int_poll(sub, &value)) |
|
566
|
0 |
5 |
mXPUSHi((IV)value); |
|
573
|
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); |
|
581
|
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); |
|
583
|
0 |
3 |
RETVAL = sub->notify_fd; |
|
598
|
14 |
35 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
599
|
15 |
34 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
601
|
1 |
48 |
if (!h) croak("Data::PubSub::Shared::Str->new: %s", errbuf); |
|
615
|
0 |
1 |
msg_size = (items > 3) ? (uint32_t)SvUV(ST(3)) : 0; |
|
617
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_memfd: %s", errbuf); |
|
630
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Str->new_from_fd: %s", errbuf); |
|
639
|
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); |
|
641
|
0 |
1 |
RETVAL = h->backing_fd; |
|
649
|
0 |
50 |
if (!SvROK(self)) return; |
|
651
|
0 |
50 |
if (!h) return; |
|
660
|
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); |
|
665
|
3 |
182 |
if (utf8) |
|
670
|
2 |
183 |
if (r == -1) croak("publish: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
679
|
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); |
|
683
|
4 |
1 |
if (count > 0) { |
|
685
|
13 |
3 |
for (uint32_t i = 0; i < count; i++) { |
|
690
|
0 |
13 |
if (utf8) |
|
695
|
1 |
12 |
if (r == -1) { |
|
712
|
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); |
|
717
|
0 |
1 |
if (utf8) |
|
722
|
0 |
1 |
if (r == -1) croak("publish_notify: message too long (%u > %u)", (unsigned)len, h->msg_size); |
|
729
|
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); |
|
732
|
0 |
11 |
if (!sub) croak("subscribe: out of memory"); |
|
742
|
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); |
|
745
|
0 |
24 |
if (!sub) croak("subscribe_all: out of memory"); |
|
755
|
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); |
|
757
|
0 |
1 |
RETVAL = h->capacity; |
|
765
|
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); |
|
767
|
0 |
2 |
RETVAL = h->msg_size; |
|
775
|
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); |
|
777
|
0 |
7 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
785
|
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); |
|
787
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
795
|
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); |
|
819
|
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); |
|
827
|
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); |
|
829
|
0 |
2 |
if (pubsub_sync(h) != 0) |
|
837
|
1 |
0 |
if (sv_isobject(self_or_class)) { |
|
839
|
0 |
1 |
if (!h) croak("Attempted to use a destroyed object"); |
|
842
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Str->unlink($path)"); |
|
845
|
0 |
1 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
846
|
0 |
1 |
if (unlink(path) != 0) |
|
853
|
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); |
|
856
|
0 |
4 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
865
|
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); |
|
873
|
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); |
|
875
|
0 |
0 |
RETVAL = h->notify_fd; |
|
883
|
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); |
|
886
|
2 |
0 |
RETVAL = (v >= 0) ? newSViv((IV)v) : &PL_sv_undef; |
|
894
|
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); |
|
904
|
0 |
35 |
if (!SvROK(self)) return; |
|
906
|
0 |
35 |
if (!sub) return; |
|
908
|
35 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
915
|
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); |
|
921
|
34 |
3 |
if (r == 1) { |
|
923
|
2 |
32 |
if (utf8) SvUTF8_on(RETVAL); |
|
935
|
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); |
|
940
|
4 |
0 |
for (UV i = 0; i < count; i++) { |
|
942
|
1 |
3 |
if (r != 1) break; |
|
944
|
0 |
3 |
if (utf8) SvUTF8_on(sv); |
|
945
|
0 |
3 |
mXPUSHs(sv); |
|
952
|
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); |
|
958
|
54 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
960
|
53 |
1 |
if (r == 1) { |
|
962
|
0 |
53 |
if (utf8) SvUTF8_on(RETVAL); |
|
973
|
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); |
|
979
|
0 |
4 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
980
|
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) { |
|
982
|
0 |
16 |
if (utf8) SvUTF8_on(sv); |
|
983
|
0 |
16 |
mXPUSHs(sv); |
|
991
|
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); |
|
997
|
1 |
1 |
if (count == 0) XSRETURN(0); |
|
998
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
999
|
0 |
1 |
if (pubsub_str_poll_wait(sub, &str, &len, &utf8, timeout) != 1) XSRETURN(0); |
|
1002
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1003
|
0 |
1 |
mXPUSHs(sv); |
|
1005
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1006
|
0 |
2 |
if (pubsub_str_poll(sub, &str, &len, &utf8) != 1) break; |
|
1008
|
0 |
2 |
if (utf8) SvUTF8_on(sv); |
|
1009
|
0 |
2 |
mXPUSHs(sv); |
|
1016
|
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); |
|
1026
|
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); |
|
1028
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1036
|
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); |
|
1038
|
0 |
1 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1046
|
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); |
|
1049
|
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); |
|
1057
|
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); |
|
1059
|
2 |
2 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1060
|
0 |
4 |
RETVAL = (UV)sub->cursor; |
|
1068
|
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); |
|
1076
|
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); |
|
1079
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1086
|
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); |
|
1092
|
4 |
2 |
while (pubsub_str_poll(sub, &str, &len, &utf8) == 1) { |
|
1096
|
1 |
3 |
if (utf8) SvUTF8_on(sv); |
|
1097
|
0 |
4 |
PUSHMARK(SP); |
|
1098
|
0 |
4 |
mXPUSHs(sv); |
|
1101
|
4 |
0 |
FREETMPS; LEAVE; |
|
1111
|
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); |
|
1118
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1119
|
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) { |
|
1121
|
0 |
1 |
if (utf8) SvUTF8_on(sv); |
|
1122
|
0 |
1 |
mXPUSHs(sv); |
|
1130
|
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); |
|
1138
|
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); |
|
1140
|
0 |
1 |
RETVAL = sub->notify_fd; |
|
1154
|
2 |
10 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1156
|
1 |
11 |
if (!h) croak("Data::PubSub::Shared::Int32->new: %s", errbuf); |
|
1170
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_memfd: %s", errbuf); |
|
1183
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int32->new_from_fd: %s", errbuf); |
|
1192
|
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); |
|
1194
|
0 |
1 |
RETVAL = h->backing_fd; |
|
1202
|
0 |
13 |
if (!SvROK(self)) return; |
|
1204
|
0 |
13 |
if (!h) return; |
|
1213
|
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); |
|
1215
|
50 |
0 |
RETVAL = pubsub_int32_publish(h, (int32_t)value); |
|
1223
|
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); |
|
1226
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1228
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1230
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1242
|
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); |
|
1251
|
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); |
|
1254
|
0 |
4 |
if (!sub) croak("subscribe: out of memory"); |
|
1264
|
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); |
|
1267
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1277
|
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); |
|
1279
|
0 |
1 |
RETVAL = h->capacity; |
|
1287
|
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); |
|
1289
|
0 |
4 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1297
|
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); |
|
1299
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1307
|
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); |
|
1329
|
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); |
|
1337
|
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); |
|
1339
|
0 |
1 |
if (pubsub_sync(h) != 0) |
|
1347
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1349
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1352
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int32->unlink($path)"); |
|
1355
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1356
|
0 |
0 |
if (unlink(path) != 0) |
|
1363
|
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); |
|
1366
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1375
|
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); |
|
1383
|
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); |
|
1385
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1393
|
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); |
|
1396
|
0 |
0 |
RETVAL = (v >= 0) ? newSViv((IV)v) : &PL_sv_undef; |
|
1404
|
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 |
11 |
if (!SvROK(self)) return; |
|
1416
|
0 |
11 |
if (!sub) return; |
|
1418
|
11 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1425
|
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); |
|
1429
|
8 |
1 |
if (r == 1) |
|
1441
|
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); |
|
1444
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1446
|
1 |
6 |
if (r != 1) break; |
|
1447
|
0 |
6 |
mXPUSHi((IV)value); |
|
1454
|
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); |
|
1458
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1460
|
0 |
1 |
if (r == 1) |
|
1471
|
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); |
|
1475
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1476
|
9 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1477
|
0 |
8 |
mXPUSHi((IV)value); |
|
1484
|
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); |
|
1488
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
1489
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1490
|
0 |
1 |
if (!pubsub_int32_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
1491
|
0 |
1 |
mXPUSHi((IV)value); |
|
1492
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1493
|
0 |
2 |
if (!pubsub_int32_poll(sub, &value)) break; |
|
1494
|
0 |
2 |
mXPUSHi((IV)value); |
|
1501
|
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); |
|
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); |
|
1513
|
0 |
1 |
RETVAL = (UV)sub->overflow_count; |
|
1521
|
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); |
|
1523
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
1531
|
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
|
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); |
|
1542
|
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); |
|
1544
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
1545
|
0 |
1 |
RETVAL = (UV)sub->cursor; |
|
1553
|
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 |
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); |
|
1564
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
1571
|
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); |
|
1575
|
5 |
1 |
while (pubsub_int32_poll(sub, &value)) { |
|
1578
|
0 |
5 |
PUSHMARK(SP); |
|
1579
|
0 |
5 |
mXPUSHi((IV)value); |
|
1582
|
5 |
0 |
FREETMPS; LEAVE; |
|
1592
|
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); |
|
1597
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1598
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int32_poll(sub, &value)) |
|
1599
|
0 |
0 |
mXPUSHi((IV)value); |
|
1606
|
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); |
|
1614
|
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 |
RETVAL = sub->notify_fd; |
|
1630
|
1 |
10 |
const char *p = SvOK(path) ? SvPV_nolen(path) : NULL; |
|
1632
|
1 |
10 |
if (!h) croak("Data::PubSub::Shared::Int16->new: %s", errbuf); |
|
1646
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_memfd: %s", errbuf); |
|
1659
|
0 |
1 |
if (!h) croak("Data::PubSub::Shared::Int16->new_from_fd: %s", errbuf); |
|
1668
|
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); |
|
1670
|
1 |
0 |
RETVAL = h->backing_fd; |
|
1678
|
0 |
12 |
if (!SvROK(self)) return; |
|
1680
|
0 |
12 |
if (!h) return; |
|
1689
|
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); |
|
1691
|
49 |
0 |
RETVAL = pubsub_int16_publish(h, (int16_t)value); |
|
1699
|
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); |
|
1702
|
0 |
1 |
if (count == 0) { RETVAL = 0; } |
|
1704
|
0 |
1 |
if (count > 8192) croak("publish_multi: too many values (%u > 8192)", count); |
|
1706
|
3 |
1 |
for (uint32_t i = 0; i < count; i++) |
|
1718
|
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); |
|
1727
|
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); |
|
1730
|
0 |
4 |
if (!sub) croak("subscribe: out of memory"); |
|
1740
|
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); |
|
1743
|
0 |
7 |
if (!sub) croak("subscribe_all: out of memory"); |
|
1753
|
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); |
|
1755
|
1 |
0 |
RETVAL = h->capacity; |
|
1763
|
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); |
|
1765
|
4 |
0 |
RETVAL = (UV)__atomic_load_n(&h->hdr->write_pos, __ATOMIC_RELAXED); |
|
1773
|
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); |
|
1775
|
0 |
0 |
RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef; |
|
1783
|
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); |
|
1805
|
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); |
|
1813
|
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); |
|
1815
|
0 |
0 |
if (pubsub_sync(h) != 0) |
|
1823
|
0 |
0 |
if (sv_isobject(self_or_class)) { |
|
1825
|
0 |
0 |
if (!h) croak("Attempted to use a destroyed object"); |
|
1828
|
0 |
0 |
if (items < 2) croak("Usage: Data::PubSub::Shared::Int16->unlink($path)"); |
|
1831
|
0 |
0 |
if (!path) croak("cannot unlink anonymous or memfd pubsub"); |
|
1832
|
0 |
0 |
if (unlink(path) != 0) |
|
1839
|
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); |
|
1842
|
0 |
0 |
if (RETVAL < 0) croak("eventfd: %s", strerror(errno)); |
|
1851
|
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); |
|
1859
|
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); |
|
1861
|
0 |
0 |
RETVAL = h->notify_fd; |
|
1869
|
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); |
|
1872
|
0 |
0 |
RETVAL = (v >= 0) ? newSViv((IV)v) : &PL_sv_undef; |
|
1880
|
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); |
|
1890
|
0 |
11 |
if (!SvROK(self)) return; |
|
1892
|
0 |
11 |
if (!sub) return; |
|
1894
|
11 |
0 |
if (sub->userdata) SvREFCNT_dec((SV *)sub->userdata); |
|
1901
|
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); |
|
1905
|
8 |
1 |
if (r == 1) |
|
1917
|
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); |
|
1920
|
7 |
0 |
for (UV i = 0; i < count; i++) { |
|
1922
|
1 |
6 |
if (r != 1) break; |
|
1923
|
0 |
6 |
mXPUSHi((IV)value); |
|
1930
|
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); |
|
1934
|
1 |
0 |
if (items > 1) timeout = SvNV(ST(1)); |
|
1936
|
0 |
1 |
if (r == 1) |
|
1947
|
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); |
|
1951
|
0 |
1 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
1952
|
9 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
8 |
1 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
1953
|
0 |
8 |
mXPUSHi((IV)value); |
|
1960
|
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); |
|
1964
|
0 |
1 |
if (count == 0) XSRETURN(0); |
|
1965
|
1 |
0 |
if (items > 2) timeout = SvNV(ST(2)); |
|
1966
|
0 |
1 |
if (!pubsub_int16_poll_wait(sub, &value, timeout)) XSRETURN(0); |
|
1967
|
0 |
1 |
mXPUSHi((IV)value); |
|
1968
|
2 |
1 |
for (UV i = 1; i < count; i++) { |
|
1969
|
0 |
2 |
if (!pubsub_int16_poll(sub, &value)) break; |
|
1970
|
0 |
2 |
mXPUSHi((IV)value); |
|
1977
|
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); |
|
1987
|
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); |
|
1989
|
1 |
0 |
RETVAL = (UV)sub->overflow_count; |
|
1997
|
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); |
|
1999
|
0 |
0 |
RETVAL = (UV)__atomic_load_n(&sub->hdr->write_pos, __ATOMIC_RELAXED); |
|
2007
|
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); |
|
2010
|
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); |
|
2018
|
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); |
|
2020
|
0 |
1 |
if (items > 1) sub->cursor = (uint64_t)SvUV(ST(1)); |
|
2021
|
1 |
0 |
RETVAL = (UV)sub->cursor; |
|
2029
|
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); |
|
2037
|
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); |
|
2040
|
0 |
1 |
sub->cursor = (wp > sub->capacity) ? wp - sub->capacity : 0; |
|
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); |
|
2051
|
5 |
1 |
while (pubsub_int16_poll(sub, &value)) { |
|
2054
|
0 |
5 |
PUSHMARK(SP); |
|
2055
|
0 |
5 |
mXPUSHi((IV)value); |
|
2058
|
5 |
0 |
FREETMPS; LEAVE; |
|
2068
|
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); |
|
2073
|
0 |
0 |
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX; |
|
2074
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
|
0 |
0 |
while (max_count-- > 0 && pubsub_int16_poll(sub, &value)) |
|
2075
|
0 |
0 |
mXPUSHi((IV)value); |
|
2082
|
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); |
|
2090
|
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); |
|
2092
|
0 |
0 |
RETVAL = sub->notify_fd; |