Devel-ebug-Wx
view release on metacpan or search on metacpan
lib/Devel/ebug/Wx/Plugin/Listener/Base.pm view on Meta::CPAN
package Devel::ebug::Wx::Plugin::Listener::Base;
use strict;
use base qw(Class::Accessor::Fast);
use Scalar::Util qw(weaken);
__PACKAGE__->mk_accessors( qw(_subscribed) );
sub add_subscription {
my( $self, $source, @args ) = @_;
$self->_subscribed( [] ) unless $self->_subscribed;
$source->add_subscriber( @args );
push @{$self->_subscribed}, [ $source, @args ];
foreach my $ref ( @{$self->_subscribed->[-1]} ) {
next unless ref $ref;
weaken( $ref );
}
}
sub delete_subscriptions {
my( $self ) = @_;
foreach my $sub ( @{$self->_subscribed || []} ) {
next unless $sub->[0] && $sub->[1]; # might have been destroyed
$sub->[0]->delete_subscriber( @$sub[1 .. $#$sub] );
}
( run in 0.423 second using v1.01-cache-2.11-cpan-a5abf4f5562 )