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     187   252419 use strict;
  27         78  
  27         927  
4 27     27   172 use warnings;
  27         72  
  27         790  
5 27     27   650 use 5.010;
  27         107  
6 27     27   155 use Moo::Role;
  27         61  
  27         219  
7              
8             # ABSTRACT: Event interface for AnyEvent::FTP objects
9             our $VERSION = '0.17'; # VERSION
10              
11              
12             sub define_events
13             {
14 123     123 1 15990 my $class = shift;
15              
16 123         379 foreach my $name (@_)
17             {
18 319         936 my $method_name = join '::', $class, "on_$name";
19             my $method = sub {
20 425     425   31443 my($self, $cb) = @_;
21 425         775 push @{ $self->{event}->{$name} }, $cb;
  425         1850  
22 425         1139 $self;
23 319         1191 };
24 27     27   15285 no strict 'refs';
  27         99  
  27         4250  
25 319         1589 *$method_name = $method;
26             }
27             }
28              
29              
30             sub emit
31             {
32 2682     2682 1 12115 my($self, $name, @args) = @_;
33 2682         5051 for(@{ $self->{event}->{$name} })
  2682         10669  
34             {
35 1151         2316 eval { $_->(@args) };
  1151         4129  
36 1151 50       87375 warn $@ if $@;
37             }
38             }
39              
40             1;
41              
42             __END__