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     433   246238 use strict;
  27         74  
  27         887  
4 27     27   156 use warnings;
  27         60  
  27         694  
5 27     27   502 use 5.010;
  27         98  
6 27     27   211 use Moo::Role;
  27         56  
  27         191  
7              
8             # ABSTRACT: Event interface for AnyEvent::FTP objects
9             our $VERSION = '0.18'; # VERSION
10              
11              
12             sub define_events
13             {
14 123     123 1 15741 my $class = shift;
15              
16 123         342 foreach my $name (@_)
17             {
18 319         910 my $method_name = join '::', $class, "on_$name";
19             my $method = sub {
20 425     425   33058 my($self, $cb) = @_;
21 425         777 push @{ $self->{event}->{$name} }, $cb;
  425         1948  
22 425         1140 $self;
23 319         1188 };
24 27     27   14199 no strict 'refs';
  27         72  
  27         4134  
25 319         1555 *$method_name = $method;
26             }
27             }
28              
29              
30             sub emit
31             {
32 2682     2682 1 13336 my($self, $name, @args) = @_;
33 2682         4039 for(@{ $self->{event}->{$name} })
  2682         10290  
34             {
35 1151         2228 eval { $_->(@args) };
  1151         4116  
36 1151 50       80056 warn $@ if $@;
37             }
38             }
39              
40             1;
41              
42             __END__