NAME
Evo::Ee
VERSION
version 0.0405
DESCRIPTION
EventEmitter role for Evo classes
SYNOPSYS
REQUIREMENTS
This role requires method ee_events
to be implemented in a derived class. It should return a list of available event names. Each invocation of "on" and "ee_remove" will be compared with this list and in case it doesn't exist an exception will be thrown
# throws Not recognized event "coNNection"
$comp
->on(
coNNection
=>
sub
(
$self
,
$id
) {
say
"got $id"
});
This will prevent people who use your class from the most common mistake in EventEmitter pattern.
METHODS
on
Subscbibe
$comp
->on(
connection
=>
sub
(
$self
,
@args
) {
say
"$self got: "
.
join
';'
,
@args
});
The name of the event will be checked using ee_events
, which should be implemented by Evo class and return a list of available names
emit
Emit an event. The object will be passed to the event as the first argument, you can provide additional argument to the subscriber
$comp
->emit(
connection
=>
'arg1'
,
'arg2'
);
ee_add
ee_remove
Add and remove listener from the event by the name and subroutine.
my
$ref
=
$comp
->ee_add(
connection
=>
sub
{
"here"
});
$comp
->ee_remove(
$ref
);
The name of the event will be checked using ee_events
, which should be implemented by class and return a list of available names
Don't use in the event (or weaken ref if you need to use it)
ee_remove_current
$comp
->ee_add(
connection
=>
sub
(
$self
) {
$self
->ee_remove_current;
}
);
When called in the event, remove current event. Die outside an event
ee_listeners
my
@listeners
=
$comp
->ee_listeners(
'connection'
);
A list of listeners of the event. Right now a name wouldn't be checked, but this can be changed in the future
ee_check
$comp
=
$comp
->ee_check(
'connection'
);
Check the event. If it wasn't in the derivered list returned by ee_events
, an exception will be thrown.
AUTHOR
alexbyk.com
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by alexbyk.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.