Event::Wrappable

Sugar to let you instrument event listeners at a distance
Download

Event::Wrappable Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Rebecca Turner
  • Publisher web site:
  • http://search.cpan.org/~winter/

Event::Wrappable Tags


Event::Wrappable Description

Event::Wrappable is a helper for creating globally wrapped events listeners. This is a way of augmenting all of the event listeners registered during a period of time. See AnyEvent::Collect and MooseX::Event for examples of its use.A lexically scoped variant might be desirable, however I'll have to explore the implications of that for my own use cases first.SYNOPSIS use Event::Wrappable; use AnyEvent; use AnyEvent::Collect; my @wrappers = ( sub { my( $event ) = @_; return sub { say "Calling event..."; $event->(); say "Done with event" }; }, ); my($w1,$w2); # Collect just waits till all the events registered in its block fire # before returning. collect { Event::Wrappable->wrap_events( sub { $w1 = AE::timer 0.1, 0, event { say "First timer triggered" }; }, @wrappers ); $w2 = AE::timer 0.2, 0, event { say "Second timer triggered" }; }; # Will print: # Calling event... # First timer triggered # Done with event # Second timer triggered # The below does the same thing, but using method handlers instead. use MooseX::Declare; class ExampleClass { method listener_a { say "First timer event handler"; } method listener_b { say "Second timer event handler"; } } collect { my $listeners = ExampleClass->new; Event::Wrappable->wrap_events( sub { $w1 = AE::timer 0.1, 0, event_method $listeners=>"listener_a"; }, @wrappers ); $w2 = AE::timer 0.2, 0, event_method $listeners=>"listener_b"; };Product's homepage


Event::Wrappable Related Software