The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Beam::Emitter - Role for event emitting classes

SYNOPSIS

package My::Emitter;

use Moo;
with 'Beam::Emitter';

sub do_something {
    my ( $self ) = @_;

    # Give event listeners a chance to prevent something
    my $event = $self->emit( "before_something" );
    return if $event->is_default_stopped;

    # ... do something

    # Notify listeners we're done with something
    $self->emit( 'after_something' );
}

DESCRIPTION

This role is used by classes that want to emit Beam::Event objects to subscribers.

METHODS

subscribe ( event_name, subref )

on ( event_name, subref )

Subscribe to an event from this object. event_name is the name of the event. subref is a subroutine reference that takes a single argument, the Beam::Event that is being emitted.

un ( event_name [, subref ] )

unsubscribe ( event_name [, subref ] )

Unsubscribe from an event. event_name is the name of the event. subref is the single listener subref to be removed. If no subref is given, will remove all listeners for this event.

emit ( name, event_args )

Emit an event with the given name. event_args is a list of name => value pairs to give to the Beam::Event object.

Use the class key in event_args to specify a different Event class.