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     397   711279 use strict;
  27         161  
  27         1072  
4 27     27   290 use warnings;
  27         105  
  27         1354  
5 27     27   480 use 5.010;
  27         102  
6 27     27   138 use Moo::Role;
  27         52  
  27         198  
7              
8             # ABSTRACT: Event interface for AnyEvent::FTP objects
9             our $VERSION = '0.20'; # VERSION
10              
11              
12             sub define_events
13             {
14 123     123 1 19095 my $class = shift;
15              
16 123         378 foreach my $name (@_)
17             {
18 319         920 my $method_name = join '::', $class, "on_$name";
19             my $method = sub {
20 425     425   41059 my($self, $cb) = @_;
21 425         881 push @{ $self->{event}->{$name} }, $cb;
  425         2066  
22 425         1059 $self;
23 319         1222 };
24 27     27   17309 no strict 'refs';
  27         73  
  27         4735  
25 319         1754 *$method_name = $method;
26             }
27             }
28              
29              
30             sub emit
31             {
32 2682     2682 1 13762 my($self, $name, @args) = @_;
33 2682         4067 for(@{ $self->{event}->{$name} })
  2682         16961  
34             {
35 1151         2025 eval { $_->(@args) };
  1151         4201  
36 1151 50       92219 warn $@ if $@;
37             }
38             }
39              
40             1;
41              
42             __END__