MooseX-Event
view release on metacpan or search on metacpan
4567891011121314151617181920212223MANIFEST
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
192021222324252627282930313233343536373839SHA1 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
787980818283848586878889909192939495969798
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
108109110111112113114115116117118119120121122123124125126127
}
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
228229230231232233234235236237238239240241242243244245246247Registers
$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
251252253254255256257258259260261262263264265266267268269270=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.289 second using v1.01-cache-2.11-cpan-2b0bae70ee8 )