Skip to content

Commit

Permalink
improved performance and memory usage of Mojo::EventEmitter
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Jan 9, 2013
1 parent 7d5b29c commit dbf5f1d
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 15 deletions.
1 change: 1 addition & 0 deletions Changes
Expand Up @@ -2,6 +2,7 @@
3.76 2013-01-09
- Added support for multiple uploads sharing the same name to
Mojo::UserAgent::Transactor.
- Improved performance and memory usage of Mojo::EventEmitter.
- Fixed support for multiple uploads in Mojolicious::Controller.

3.75 2013-01-08
Expand Down
15 changes: 2 additions & 13 deletions lib/Mojo/EventEmitter.pm
Expand Up @@ -5,19 +5,14 @@ use Scalar::Util qw(blessed weaken);

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

sub new {
my $self = shift->SUPER::new(@_);
$self->on(error => sub { warn $_[1] if @{$_[0]->subscribers('error')} < 2 });
return $self;
}

sub emit {
my ($self, $name) = (shift, shift);

if (my $s = $self->{events}{$name}) {
warn "-- Emit $name in @{[blessed($self)]} (@{[scalar(@$s)]})\n" if DEBUG;
$self->$_(@_) for @$s;
}
elsif ($name eq 'error') { warn $_[0] }
elsif (DEBUG) { warn "-- Emit $name in @{[blessed($self)]} (0)\n" }

return $self;
Expand All @@ -40,6 +35,7 @@ sub emit_safe {
}
}
}
elsif ($name eq 'error') { warn $_[0] }
elsif (DEBUG) { warn "-- Emit $name in @{[blessed($self)]} safely (0)\n" }

return $self;
Expand Down Expand Up @@ -138,13 +134,6 @@ Emitted safely for event errors.
L<Mojo::EventEmitter> inherits all methods from L<Mojo::Base> and
implements the following new ones.
=head2 new
my $e = Mojo::EventEmitter->new;
Construct a new L<Mojo::EventEmitter> object and subscribe to C<error> event
with default error handling.
=head2 emit
$e = $e->emit('foo');
Expand Down
5 changes: 3 additions & 2 deletions t/mojo/eventemitter.t
Expand Up @@ -20,9 +20,10 @@ my $error;
{
local *STDERR;
open STDERR, '>', \$error;
$e->emit(error => "just works!\n");
$e->emit(error => "just\n");
$e->emit_safe(error => "works\n");
}
is $error, "just works!\n", 'right error';
is $error, "just\nworks\n", 'right error';

# Error fallback
my ($echo, $err);
Expand Down

0 comments on commit dbf5f1d

Please sign in to comment.