Devel::Events::Generator::ClassPublisher - Relay events from


Devel-Events-Generator-ClassPublisher documentation Contained in the Devel-Events-Generator-ClassPublisher distribution.

Index


Code Index:

NAME

Top

Devel::Events::Generator::ClassPublisher - Relay events from Class::Publisher

SYNOPSIS

Top

	use Devel::Events::Generator::ClassPublisher;

	my $gen = Devel::Events::Generator::ClassPublisher->new(
		handler => $handler,
	);

	$gen->subscribe( $publisher, $event );

DESCRIPTION

Top

This event generator can glue events from Class::Publisher into the Devel::Events framework.

This is useful if you wish to place certain events like Devel::Events::Objects's ones in a certain context by later analyzing the in memory log.

METHODS

Top

subscribe $publisher, [ $event ]
unsubscribe $publisher, [ $event ]

These convenience methods are provided if you prefer calling

	$gen->subscribe($publisher, $event);

over

	$publisher->add_subscriber($event, $gen);

If $event is omitted then all events are assumed.

update $publisher, $event, @args

Called by notify_subscribers in Class::Publisher. Will raise an event with the value:

	$event, publisher => $publisher, @args

A custom filter right after this generator to munge @args into a key value pair list is reccomended if your events are not structured that way to begin with.

SEE ALSO

Top

Devel::Events, Class::Publisher

AUTHOR

Top

Yuval Kogman <nothingmuch@woobling.org>

COPYRIGHT & LICENSE

Top


Devel-Events-Generator-ClassPublisher documentation Contained in the Devel-Events-Generator-ClassPublisher distribution.

#!/usr/bin/perl

package Devel::Events::Generator::ClassPublisher;
use Moose;

with qw/Devel::Events::Generator/;

use Class::Publisher;

our $VERSION = "0.01";

sub subscribe {
	my ( $self, $publisher, $event ) = @_;

	$event = '*' unless defined $event;

	$publisher->add_subscriber( $event, $self );
}

sub unsubscribe {
	my ( $self, $publisher, $event ) = @_;

	$publisher->delete_subscriber($event, $self);
}

sub update {
	my ( $self, $publisher, $type, @data ) = @_;
	$self->send_event( $type, publisher => $publisher, @data );
}

__PACKAGE__;

__END__