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 )