Acme-Sort-Sleep
view release on metacpan or search on metacpan
local/lib/perl5/IO/Async/Signal.pm view on Meta::CPAN
sub _init
{
my $self = shift;
my ( $params ) = @_;
my $name = delete $params->{name} or croak "Expected 'name'";
$name =~ s/^SIG//; # Trim a leading "SIG"
$self->{name} = $name;
$self->SUPER::_init( $params );
}
sub configure
{
my $self = shift;
my %params = @_;
if( exists $params{on_receipt} ) {
$self->{on_receipt} = delete $params{on_receipt};
undef $self->{cb}; # Will be lazily constructed when needed
if( my $loop = $self->loop ) {
$self->_remove_from_loop( $loop );
$self->_add_to_loop( $loop );
}
}
unless( $self->can_event( 'on_receipt' ) ) {
croak 'Expected either a on_receipt callback or an ->on_receipt method';
}
$self->SUPER::configure( %params );
}
sub _add_to_loop
{
my $self = shift;
my ( $loop ) = @_;
$self->{cb} ||= $self->make_event_cb( 'on_receipt' );
$self->{id} = $loop->attach_signal( $self->{name}, $self->{cb} );
}
sub _remove_from_loop
{
my $self = shift;
my ( $loop ) = @_;
$loop->detach_signal( $self->{name}, $self->{id} );
undef $self->{id};
}
sub notifier_name
{
my $self = shift;
if( length( my $name = $self->SUPER::notifier_name ) ) {
return $name;
}
return $self->{name};
}
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=cut
0x55AA;
( run in 1.263 second using v1.01-cache-2.11-cpan-39bf76dae61 )