MooseX-Event
view release on metacpan or search on metacpan
MANIFEST
META.yml
Makefile.PL
README
SIGNATURE
dist.ini
lib/MooseX/Event.pm
lib/MooseX/Event/Role.pm
lib/MooseX/Event/Role/ClassMethods.pm
t/basic.t
t/coro.t
t/pod-coverage.t
t/pod.t
t/release-minimum-version.t
t/release-no-tabs.t
t/release-portability.t
t/release-synopsis.t
t/release-unused-vars.t
t/with.t
weaver.ini
SHA1 7f7f48c804dbd34389e2a6e6622f50e9f21bbbc5 LICENSE
SHA1 c97dc388d13431645ef7aab68b84d04e355ed8f0 MANIFEST
SHA1 b3a4fc5bf951e097bd6c307a0dd3fdb0f04d2d08 META.yml
SHA1 ca22e6788b4b90b4719db1fc246fcc59029401e7 Makefile.PL
SHA1 323c7446e23aba6d000d598d5a17cb41786db40a README
SHA1 74846d0ed0c698be5e557c3882a6a6b1d1920558 dist.ini
SHA1 5f230b6936605c5c0b8d41f282bee9717606a77b lib/MooseX/Event.pm
SHA1 884ec2e5df044cd5f4b2b8fe974a54fac3134dc2 lib/MooseX/Event/Role.pm
SHA1 3d763875c5703c7c902d844e1ea454ca942dae17 lib/MooseX/Event/Role/ClassMethods.pm
SHA1 d54adfab7444e6ebe64c5ee2e8fbcb199bffd2c3 t/basic.t
SHA1 454757b650e8d1edb0df6adcb559082b5101da39 t/coro.t
SHA1 05a7773551a9ce09e04ffdddd74d4e12a08b6cbf t/pod-coverage.t
SHA1 b2131e5af08c2702a3742365d55f365e9cc0cf15 t/pod.t
SHA1 54ed25287b7e1c9ff328eaf126d438438c8a1d48 t/release-minimum-version.t
SHA1 455d1dd1867212a665ad5ea4126b572411de300c t/release-no-tabs.t
SHA1 3bb783b8a31b5eaff916bcb8bf7b348ee340ecb5 t/release-portability.t
SHA1 612226d447015079c046d65932f774304a4b9f20 t/release-synopsis.t
SHA1 d7221447937ab93002a123801def7be09748c106 t/release-unused-vars.t
SHA1 2140e2ee787453ccec724e1ebbd9f56ae0a9868c t/with.t
SHA1 941fe411748f0439fecc13f587748a3ee899abc8 weaver.ini
-----BEGIN PGP SIGNATURE-----
lib/MooseX/Event/Role.pm view on Meta::CPAN
my $ce = $self->current_event;
$self->current_event( $event );
foreach ( @{ $self->_listeners->{$event} } ) {
$_->($self,@args);
}
$self->current_event($ce);
return;
};
my $emit_coro = sub {
my $self = shift;
my( $event, @args ) = @_;
if ( ! $self->event_exists($event) ) {
die "Event $event does not exist";
}
return unless exists $self->_listeners->{$event};
foreach my $todo ( @{ $self->_listeners->{$event} } ) {
my $ce;
&Coro::async( sub {
lib/MooseX/Event/Role.pm view on Meta::CPAN
}
Coro::cede();
return;
};
sub emit {
no warnings 'redefine';
if ( defined *Coro::async{CODE} ) {
*emit = $emit_coro;
goto $emit_coro;
}
else {
*emit = $emit_stock;
goto $emit_stock;
}
}
}
lib/MooseX/Event/Role.pm view on Meta::CPAN
Registers $listener as a listener on $event. Event listeners registered via
once will emit only once.
Returns the listener coderef.
=head2 our method emit( Str $event, Array[Any] *@args )
Normally called within the class using the MooseX::Event role. This calls all
of the registered listeners on $event with @args.
If you're using coroutines then each listener will get its own thread and
emit will cede before returning.
=head2 our method remove_all_listeners( Str $event )
Removes all listeners for $event
=head2 our method remove_listener( Str $event, CodeRef $listener )
Removes $listener from $event
lib/MooseX/Event/Role.pm view on Meta::CPAN
=method my method emit_stock( Str $event, Array[Any] *@args )
The standard impelementation of the emit method-- calls the listeners
immediately and in the order they were defined.
=end internal
=begin internal
=method my method emit_coro( Str $event, Array[Any] *@args )
The L<Coro> implementation of the emit method-- calls each of the listeners
in its own thread and emits immediate execution by calling cede before
returning.
=end internal
=head1 SEE ALSO
( run in 0.268 second using v1.01-cache-2.11-cpan-496ff517765 )