AnyEvent-Emitter

 view release on metacpan or  search on metacpan

lib/AnyEvent/Emitter.pm  view on Meta::CPAN

package AnyEvent::Emitter;
use strict;
use Scalar::Util qw(blessed weaken);

our $VERSION = 0.02;

use constant DEBUG => $ENV{EMITTER_DEBUG} || 0;

sub new {
    my $class = shift;
    my $reference = { events => {} };
    return bless( $reference, $class );
}

lib/AnyEvent/Emitter.pm  view on Meta::CPAN

  return $self;
}

sub has_subscribers { !!shift->{events}{shift()} }

sub on { push @{$_[0]{events}{$_[1]}}, $_[2] and return $_[2] }

sub once {
  my ($self, $name, $cb) = @_;

  weaken $self;
  my $wrapper;
  $wrapper = sub {
    $self->unsubscribe($name => $wrapper);
    $cb->(@_);
  };
  $self->on($name => $wrapper);
  weaken $wrapper;

  return $wrapper;
}

sub subscribers { shift->{events}{shift()} || [] }

sub unsubscribe {
  my ($self, $name, $cb) = @_;

  # One



( run in 1.484 second using v1.01-cache-2.11-cpan-65fba6d93b7 )