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;
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.