Data-PubSub-Shared
view release on metacpan or search on metacpan
OUTPUT:
RETVAL
void
poll_multi(self, count)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self);
int64_t value;
PPCODE:
for (UV i = 0; i < count; i++) {
int r = pubsub_int_poll(sub, &value);
if (r != 1) break;
mXPUSHi((IV)value);
}
SV *
poll_wait(self, ...)
SV *self
PREINIT:
OUTPUT:
RETVAL
void
drain(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self);
int64_t value;
uint32_t max_count;
PPCODE:
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int_poll(sub, &value))
mXPUSHi((IV)value);
void
poll_wait_multi(self, count, ...)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self);
double timeout = -1;
int64_t value;
PPCODE:
if (count == 0) XSRETURN(0);
if (items > 2) timeout = SvNV(ST(2));
if (!pubsub_int_poll_wait(sub, &value, timeout)) XSRETURN(0);
mXPUSHi((IV)value);
for (UV i = 1; i < count; i++) {
if (!pubsub_int_poll(sub, &value)) break;
mXPUSHi((IV)value);
}
UV
OUTPUT:
RETVAL
void
drain_notify(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int::Sub", self);
int64_t value;
uint32_t max_count;
PPCODE:
pubsub_sub_eventfd_consume(sub);
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int_poll(sub, &value))
mXPUSHi((IV)value);
void
eventfd_set(self, fd)
SV *self
int fd
PREINIT:
void
poll_multi(self, count)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self);
const char *str;
uint32_t len;
bool utf8;
PPCODE:
for (UV i = 0; i < count; i++) {
int r = pubsub_str_poll(sub, &str, &len, &utf8);
if (r != 1) break;
SV *sv = newSVpvn(str, len);
if (utf8) SvUTF8_on(sv);
mXPUSHs(sv);
}
SV *
poll_wait(self, ...)
void
drain(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self);
const char *str;
uint32_t len;
bool utf8;
uint32_t max_count;
PPCODE:
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) {
SV *sv = newSVpvn(str, len);
if (utf8) SvUTF8_on(sv);
mXPUSHs(sv);
}
void
poll_wait_multi(self, count, ...)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self);
double timeout = -1;
const char *str;
uint32_t len;
bool utf8;
PPCODE:
if (count == 0) XSRETURN(0);
if (items > 2) timeout = SvNV(ST(2));
if (pubsub_str_poll_wait(sub, &str, &len, &utf8, timeout) != 1) XSRETURN(0);
{
SV *sv = newSVpvn(str, len);
if (utf8) SvUTF8_on(sv);
mXPUSHs(sv);
}
for (UV i = 1; i < count; i++) {
if (pubsub_str_poll(sub, &str, &len, &utf8) != 1) break;
void
drain_notify(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Str::Sub", self);
const char *str;
uint32_t len;
bool utf8;
uint32_t max_count;
PPCODE:
pubsub_sub_eventfd_consume(sub);
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_str_poll(sub, &str, &len, &utf8) == 1) {
SV *sv = newSVpvn(str, len);
if (utf8) SvUTF8_on(sv);
mXPUSHs(sv);
}
void
eventfd_set(self, fd)
OUTPUT:
RETVAL
void
poll_multi(self, count)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self);
int32_t value;
PPCODE:
for (UV i = 0; i < count; i++) {
int r = pubsub_int32_poll(sub, &value);
if (r != 1) break;
mXPUSHi((IV)value);
}
SV *
poll_wait(self, ...)
SV *self
PREINIT:
OUTPUT:
RETVAL
void
drain(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self);
int32_t value;
uint32_t max_count;
PPCODE:
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int32_poll(sub, &value))
mXPUSHi((IV)value);
void
poll_wait_multi(self, count, ...)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self);
double timeout = -1;
int32_t value;
PPCODE:
if (count == 0) XSRETURN(0);
if (items > 2) timeout = SvNV(ST(2));
if (!pubsub_int32_poll_wait(sub, &value, timeout)) XSRETURN(0);
mXPUSHi((IV)value);
for (UV i = 1; i < count; i++) {
if (!pubsub_int32_poll(sub, &value)) break;
mXPUSHi((IV)value);
}
UV
OUTPUT:
RETVAL
void
drain_notify(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int32::Sub", self);
int32_t value;
uint32_t max_count;
PPCODE:
pubsub_sub_eventfd_consume(sub);
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int32_poll(sub, &value))
mXPUSHi((IV)value);
void
eventfd_set(self, fd)
SV *self
int fd
PREINIT:
OUTPUT:
RETVAL
void
poll_multi(self, count)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self);
int16_t value;
PPCODE:
for (UV i = 0; i < count; i++) {
int r = pubsub_int16_poll(sub, &value);
if (r != 1) break;
mXPUSHi((IV)value);
}
SV *
poll_wait(self, ...)
SV *self
PREINIT:
OUTPUT:
RETVAL
void
drain(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self);
int16_t value;
uint32_t max_count;
PPCODE:
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int16_poll(sub, &value))
mXPUSHi((IV)value);
void
poll_wait_multi(self, count, ...)
SV *self
UV count
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self);
double timeout = -1;
int16_t value;
PPCODE:
if (count == 0) XSRETURN(0);
if (items > 2) timeout = SvNV(ST(2));
if (!pubsub_int16_poll_wait(sub, &value, timeout)) XSRETURN(0);
mXPUSHi((IV)value);
for (UV i = 1; i < count; i++) {
if (!pubsub_int16_poll(sub, &value)) break;
mXPUSHi((IV)value);
}
UV
OUTPUT:
RETVAL
void
drain_notify(self, ...)
SV *self
PREINIT:
EXTRACT_SUB("Data::PubSub::Shared::Int16::Sub", self);
int16_t value;
uint32_t max_count;
PPCODE:
pubsub_sub_eventfd_consume(sub);
max_count = (items > 1) ? (uint32_t)SvUV(ST(1)) : UINT32_MAX;
while (max_count-- > 0 && pubsub_int16_poll(sub, &value))
mXPUSHi((IV)value);
void
eventfd_set(self, fd)
SV *self
int fd
PREINIT:
( run in 1.145 second using v1.01-cache-2.11-cpan-5511b514fd6 )