File Coverage

blib/lib/POE/Filter/ThruPut.pm
Criterion Covered Total %
statement 27 33 81.8
branch 2 4 50.0
condition n/a
subroutine 9 11 81.8
pod 9 9 100.0
total 47 57 82.4


line stmt bran cond sub pod time code
1             package POE::Filter::ThruPut;
2             $POE::Filter::ThruPut::VERSION = '1.00';
3             #ABSTRACT: a POE filter that passes data through unchanged whilst counting bytes sent and received
4              
5 1     1   657 use strict;
  1         2  
  1         25  
6 1     1   396 use POE::Filter;
  1         412  
  1         318  
7             require bytes;
8              
9             our @ISA = qw(POE::Filter);
10              
11             sub new {
12 1     1 1 483 my $type = shift;
13 1         3 my $self = bless { buffer => '', in => 0, out => 0 }, $type;
14 1         2 $self;
15             }
16              
17             sub clone {
18 1     1 1 4 my $self = shift;
19 1         4 my $clone = bless { buffer => '', in => 0, out => 0 }, ref $self;
20             }
21              
22             sub get_one_start {
23 2     2 1 1578 my ($self, $stream) = @_;
24 2         7 my $dat = join '', @$stream;
25 2         14 $self->{in} += bytes::length $dat;
26 2         741 $self->{buffer} .= $dat;
27             }
28              
29             sub get_one {
30 4     4 1 20 my $self = shift;
31 4 100       10 return [ ] unless CORE::length($self->{buffer});
32 2         5 my $chunk = $self->{buffer};
33 2         2 $self->{buffer} = '';
34 2         5 return [ $chunk ];
35             }
36              
37             sub put {
38 2     2 1 5 my ($self, $chunks) = @_;
39 2         5 $self->{out} += bytes::length(join '', @$chunks);
40 2         9 [ @$chunks ];
41             }
42              
43             sub get_pending {
44 0     0 1 0 my $self = shift;
45 0 0       0 return undef if !CORE::length($self->{buffer});
46 0         0 $self->{in} += bytes::length($self->{buffer});
47 0         0 return [ $self->{buffer} ];
48             }
49              
50             sub send {
51 2     2 1 6 my $self = shift;
52 2         5 return $self->{out};
53             }
54              
55             sub recv {
56 2     2 1 13 my $self = shift;
57 2         8 return $self->{in};
58             }
59              
60             sub stats {
61 0     0 1   my $self = shift;
62 0           return [ $self->{out}, $self->{in} ];
63             }
64              
65             'Are you receiving?';
66              
67             __END__