File Coverage

blib/lib/POE/Filter/LZO.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package POE::Filter::LZO;
2              
3 2     2   54602 use strict;
  2         5  
  2         92  
4 2     2   11 use warnings;
  2         2  
  2         56  
5 2     2   13 use Carp;
  2         9  
  2         205  
6 2     2   933 use Compress::LZO qw(compress decompress);
  0            
  0            
7             use vars qw($VERSION);
8             use base qw(POE::Filter);
9              
10             $VERSION = '1.70';
11              
12             sub new {
13             my $type = shift;
14             croak "$type requires an even number of parameters" if @_ % 2;
15             my $buffer = { @_ };
16             $buffer->{ lc $_ } = delete $buffer->{ $_ } for keys %{ $buffer };
17             $buffer->{BUFFER} = [];
18             return bless($buffer, $type);
19             }
20              
21             sub level {
22             my $self = shift;
23             my $level = shift;
24             $self->{level} = $level if defined $level;
25             return $self->{level};
26             }
27              
28             sub get {
29             my ($self, $raw_lines) = @_;
30             my $events = [];
31              
32             foreach my $raw_line (@$raw_lines) {
33             if ( my $line = decompress( $raw_line ) ) {
34             push @$events, $line;
35             }
36             else {
37             warn "Couldn\'t decompress input\n";
38             }
39             }
40             return $events;
41             }
42              
43             sub get_one_start {
44             my ($self, $raw_lines) = @_;
45             push @{ $self->{BUFFER} }, $_ for @{ $raw_lines };
46             }
47              
48             sub get_one {
49             my $self = shift;
50             my $events = [];
51              
52             if ( my $raw_line = shift @{ $self->{BUFFER} } ) {
53             if ( my $line = decompress( $raw_line ) ) {
54             push @$events, $line;
55             }
56             else {
57             warn "Couldn\'t decompress input\n";
58             }
59             }
60             return $events;
61             }
62              
63             sub put {
64             my ($self, $events) = @_;
65             my $raw_lines = [];
66              
67             foreach my $event (@$events) {
68             if ( my $line = compress( $event, $self->{level} ) ) {
69             push @$raw_lines, $line;
70             }
71             else {
72             warn "Couldn\'t compress output\n";
73             }
74             }
75             return $raw_lines;
76             }
77              
78             sub clone {
79             my $self = shift;
80             my $nself = { };
81             $nself->{$_} = $self->{$_} for keys %{ $self };
82             $nself->{BUFFER} = [ ];
83             return bless $nself, ref $self;
84             }
85              
86             1;
87              
88             __END__