The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

Net::Async::ControlChannel - IO::Async support for ControlChannel protocol

VERSION

Version 0.005

DESCRIPTION

Provides an IO::Async implementation.

See documentation in:

EXAMPLES

#!/usr/bin/env perl
use strict;
my $loop = IO::Async::Loop->new;
my $server = Net::Async::ControlChannel::Server->new(
loop => $loop,
);
$server->subscribe_to_event(
message => sub {
my $ev = shift;
my ($k, $v, $from) = @_;
warn "Server: Had $k => $v from $from\n";
},
connect => sub {
my $ev = shift;
my ($remote) = @_;
warn "Server: Client connects from $remote\n"
},
disconnect => sub {
my $ev = shift;
my ($remote) = @_;
warn "Server: Client disconnect from $remote\n"
}
);
{
$loop->add(my $timer = IO::Async::Timer::Periodic->new(
interval => 1,
on_tick => sub {
$server->dispatch('timer.tick' => time)
}
));
$timer->start;
}
my $f = $server->start->then(sub {
my $server = shift;
my $port = $server->port;
my $client = Net::Async::ControlChannel::Client->new(
loop => $loop,
host => $server->host,
port => $server->port,
);
$client->subscribe_to_event(
message => sub {
my $ev = shift;
my ($k, $v, $from) = @_;
warn "Client: Had $k => $v\n";
$client->dispatch('client.reply' => "$k:$v");
}
);
$client->start->on_done(sub {
my $client = shift;
$client->dispatch('client.ready' => time);
});
});
$loop->run;
warn "finished\n";

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2012-2014. Licensed under the same terms as Perl itself.