NAME

Zing::Channel - Shared Communication

ABSTRACT

Multi-process Communication Mechanism

SYNOPSIS

use Zing::Channel;

my $chan = Zing::Channel->new(name => 'share');

# $chan->recv;

DESCRIPTION

This package provides represents a mechanism of interprocess communication and synchronization via message passing.

INHERITS

This package inherits behaviors from:

Zing::PubSub

LIBRARIES

This package uses type constraints from:

Zing::Types

ATTRIBUTES

This package has the following attributes:

name

name(Str)

This attribute is read-only, accepts (Str) values, and is optional.

METHODS

This package implements the following methods:

recv

recv() : Maybe[HashRef]

The recv method receives a single new message from the channel.

recv example #1
my $chan = Zing::Channel->new(name => 'recv-01');

$chan->recv;
recv example #2
my $chan = Zing::Channel->new(name => 'recv-02');

$chan->send({ status => 'works' });

$chan->recv;

renew

renew() : Int

The renew method returns truthy if it resets the internal cursor, otherwise falsy.

renew example #1
my $chan = Zing::Channel->new(name => 'renew-01');

$chan->send({ status => 'works' }) for 1..5;

$chan->renew;
renew example #2
my $chan = Zing::Channel->new(name => 'renew-02');

$chan->send({ status => 'works' }) for 1..5;
$chan->recv;
$chan->drop;

$chan->renew;

reset

reset() : Int

The reset method always reset the internal cursor and return truthy.

reset example #1
my $chan = Zing::Channel->new(name => 'reset-01');

$chan->send({ status => 'works' }) for 1..5;
$chan->recv;
$chan->recv;

$chan->reset;

send

send(HashRef $value) : Int

The send method sends a new message to the channel and return the message count.

send example #1
my $chan = Zing::Channel->new(name => 'send-01');

$chan->send({ status => 'works' });

size

size() : Int

The size method returns the message count of the channel.

size example #1
my $chan = Zing::Channel->new(name => 'size-01');

$chan->send({ status => 'works' }) for 1..5;

$chan->size;

term

term() : Str

The term method returns the name of the channel.

term example #1
my $chan = Zing::Channel->new(name => 'term-01');

$chan->term;

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues