# You may distribute under the terms of either the GNU General Public License # or the Artistic License (the same terms as Perl itself) # # (C) Paul Evans, 2015-2021 -- leonerd@leonerd.org.uk package Event::Distributor::_Event 0.06; use v5.14; use warnings; use Future; =head1 NAME C - base class for L events =head1 DESCRIPTION This class is the base from which the following actual classes are derived: =over 2 =item * L =item * L =back Instances of this class shouldn't be directly created by end-user code, but it is documented here in order to list the shared methods available on all the subclasses. =cut sub new { my $class = shift; return bless { subscribers => [], }, $class; } =head1 METHODS =cut =head2 subscribe $event->subscribe( $code ) Adds a new C reference that subscribes to the event. This code is expected to return a L instance. =cut sub subscribe { my $self = shift; my ( $code ) = @_; push @{ $self->{subscribers} }, $code; } =head2 subscribers @codes = $event->subscribers Returns a list of C references previously subscribed. =cut sub subscribers { my $self = shift; return @{ $self->{subscribers} }; } =head1 EXPECTED METHODS Subclasses are expected to implement the following methods: =cut =head2 fire $f = $event->fire( @args ) Invoked by L to actually run the signal. This is expected to invoke any or all subscribers in whatever manner it implements, passing arguments as required, and collecting results in some way to provide as the eventual answer of the L it returns. =cut =head1 AUTHOR Paul Evans =cut 0x55AA