Asterisk-CoroManager
view release on metacpan or search on metacpan
lib/Asterisk/CoroManager.pm view on Meta::CPAN
my( $class, $args ) = @_;
my $astman;
$astman = bless {
host => $args->{host} || 'localhost',
port => $args->{port} || 5038,
user => $args->{user},
secret => $args->{secret},
watcher => undef,
finished => undef, # Will hold AnyEvent->condvar
action_cb => {}, # Action response callbacks
event_cb => {}, # event callbacks
event_dcb => undef, # event default callback
uevent_cb => {}, # userevent callbacks
uevent_dcb => undef, # userevent default callback
ami_version => undef,
read_buffer => [],
}, __PACKAGE__;
$astman->add_event_callback('UserEvent',
sub{ $astman->handle_uevent(@_) }
);
return $astman;
lib/Asterisk/CoroManager.pm view on Meta::CPAN
handle_event is called if an incoming packet is an event. Falls back
to default event handler.
=cut
sub handle_event {
my( $astman, $pack ) = @_;
my $event = $pack->{Event};
if ( my $callbacks =
$astman->{event_cb}{$event} ||
$astman->{event_dcb}
) {
$astman->debug("Handling event: $event");
foreach my $cb (@$callbacks) {
&{$cb}($pack);
}
}
else {
$astman->trace("Unhandled event: $event");
}
return;
}
lib/Asterisk/CoroManager.pm view on Meta::CPAN
handle_uevent is called if an incoming packet is a user event. Falls
back to default user event handler and ultimately to default event
handler.
=cut
sub handle_uevent {
my( $astman, $pack ) = @_;
my $uevent = $pack->{UserEvent};
if ( my $callbacks =
$astman->{uevent_cb}{$uevent} ||
$astman->{uevent_dcb} ||
$astman->{event_dcb}
) {
$astman->debug("Handling uevent: $uevent");
foreach my $cb (@$callbacks) {
&{$cb}($pack);
}
}
else {
$astman->trace("Unhandled uevent: $uevent");
}
return;
}
( run in 1.040 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )