MooseX-Event

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

SIGNATURE  view on Meta::CPAN

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    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

108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
        }
        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

228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
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

251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
=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 )