AnyEvent-DBus
view release on metacpan or search on metacpan
sub watch_off {
delete $O{$_[1]->get_data};
}
sub io_toggle {
my ($con, $w) = @_;
my $id = $w->get_data;
my $f = $w->get_flags;
my $fd = $w->get_fileno;
my $on = $w->is_enabled;
$f & Net::DBus::Binding::Watch::READABLE ()
and
$O{$id}[0] = $on && AE::io $fd, 0, sub {
$w->handle (Net::DBus::Binding::Watch::READABLE ());
$con->dispatch;
};
$f & Net::DBus::Binding::Watch::WRITABLE ()
and
$O{$id}[1] = $on && AE::io $fd, 1, sub {
$w->handle (Net::DBus::Binding::Watch::WRITABLE ());
$con->dispatch;
};
}
sub io_on {
my ($con, $w) = @_;
my $id = ++$I;
$w->set_data ($id);
&io_toggle;
}
sub timeout_toggle {
my ($con, $w) = @_;
my $id = $w->get_data;
my $i = $w->get_interval * 0.001;
$O{$id} = $w->is_enabled && AE::timer $i, $i, sub {
$w->handle;
$con->dispatch;
};
}
sub timeout_on {
my ($con, $w) = @_;
my $id = ++$I;
$w->set_data ($id);
&timeout_toggle;
}
sub manage {
my (undef, $con) = @_;
$con->set_watch_callbacks (\&io_on, \&watch_off, \&io_toggle);
# if $con->can ("set_watch_callbacks");
$con->set_timeout_callbacks (\&timeout_on, \&watch_off, \&timeout_toggle);
# if $con->can ("set_timeout_callbacks");
$con->dispatch; # for good measure
}
=head1 SEE ALSO
L<AnyEvent>, L<Net::DBus>.
=head1 AUTHOR
Marc Lehmann <schmorp@schmorp.de>
http://home.schmorp.de/
=cut
1
( run in 1.416 second using v1.01-cache-2.11-cpan-140bd7fdf52 )