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.