The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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;
 use warnings;
 use IO::Async::Loop;
 use Net::Async::ControlChannel::Server;
 use Net::Async::ControlChannel::Client;
 use IO::Async::Timer::Periodic;
 
 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.