File Coverage

blib/lib/AnyEvent/FTP/Role/Event.pm
Criterion Covered Total %
statement 29 29 100.0
branch 1 2 50.0
condition n/a
subroutine 8 8 100.0
pod 2 2 100.0
total 40 41 97.5


line stmt bran cond sub pod time code
1             package AnyEvent::FTP::Role::Event;
2              
3 27     434   177879 use strict;
  27         54  
  27         666  
4 27     27   127 use warnings;
  27         48  
  27         587  
5 27     27   416 use 5.010;
  27         79  
6 27     27   128 use Moo::Role;
  27         52  
  27         157  
7              
8             # ABSTRACT: Event interface for AnyEvent::FTP objects
9             our $VERSION = '0.19'; # VERSION
10              
11              
12             sub define_events
13             {
14 123     123 1 11380 my $class = shift;
15              
16 123         282 foreach my $name (@_)
17             {
18 319         729 my $method_name = join '::', $class, "on_$name";
19             my $method = sub {
20 425     425   24754 my($self, $cb) = @_;
21 425         602 push @{ $self->{event}->{$name} }, $cb;
  425         1417  
22 425         794 $self;
23 319         1062 };
24 27     27   10697 no strict 'refs';
  27         60  
  27         3014  
25 319         1235 *$method_name = $method;
26             }
27             }
28              
29              
30             sub emit
31             {
32 2682     2682 1 9325 my($self, $name, @args) = @_;
33 2682         3205 for(@{ $self->{event}->{$name} })
  2682         7353  
34             {
35 1151         1490 eval { $_->(@args) };
  1151         2999  
36 1151 50       58790 warn $@ if $@;
37             }
38             }
39              
40             1;
41              
42             __END__