File Coverage

blib/lib/POE/Filter/MessagePack.pm
Criterion Covered Total %
statement 35 39 89.7
branch 4 8 50.0
condition n/a
subroutine 10 11 90.9
pod 5 5 100.0
total 54 63 85.7


line stmt bran cond sub pod time code
1             package POE::Filter::MessagePack;
2             $POE::Filter::MessagePack::VERSION = '1.170412';
3             # ABSTRACT: A dead-simple POE::Filter for MessagePack
4 2     2   22430 use strict;
  2         3  
  2         49  
5 2     2   7 use warnings;
  2         2  
  2         46  
6              
7 2     2   864 use Data::MessagePack;
  2         2500  
  2         44  
8 2     2   804 use Data::MessagePack::Stream;
  2         580  
  2         48  
9 2     2   780 use POE::Filter;
  2         736  
  2         47  
10              
11 2     2   9 use vars qw($VERSION @ISA);
  2         2  
  2         551  
12             $VERSION = '1.001';
13             @ISA = qw(POE::Filter);
14              
15             sub MP () { 0 }
16             sub STREAM () { 1 }
17              
18             sub new {
19 1     1 1 15 my $type = shift;
20 1         8 my $mp = Data::MessagePack->new;
21 1         30 my $mp_stream = Data::MessagePack::Stream->new;
22              
23 1         3 my %opts = @_;
24              
25 1 50       4 $mp->prefer_integer if $opts{prefer_integer};
26 1 50       6 $mp->canonical if $opts{canonical};
27 1 50       12 $mp->utf8 if $opts{utf8};
28              
29 1         2 my $self = bless [ $mp, $mp_stream ], $type;
30 1         3 $self;
31             }
32              
33             sub get {
34 0     0 1 0 my ( $self, $chunks ) = @_;
35 0         0 my @ret;
36 0         0 push @ret, $self->[STREAM]->data while $self->[STREAM]->next;
37 0         0 return \@ret;
38             }
39              
40             sub get_one_start {
41 1     1 1 354 my ( $self, $stream ) = @_;
42 1         6 $self->[STREAM]->feed( join '', @$stream );
43             }
44              
45             sub get_one {
46 1     1 1 3 my $self = shift;
47 1         49 my $obj = $self->[STREAM]->next;
48 1 50       8 return $obj ? [ $self->[STREAM]->data ] : [];
49             }
50              
51             sub put {
52 1     1 1 410 my ( $self, $chunks ) = @_;
53 1         2 [ map { $self->[MP]->pack($_) } @$chunks ];
  1         17  
54             }
55              
56             1;
57              
58             __END__