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              
3             # ABSTRACT: A dead-simple POE::Filter for MessagePack
4 2     2   21892 use strict;
  2         2  
  2         43  
5 2     2   5 use warnings;
  2         2  
  2         37  
6              
7 2     2   825 use Data::MessagePack;
  2         2197  
  2         44  
8 2     2   735 use Data::MessagePack::Stream;
  2         597  
  2         47  
9 2     2   802 use POE::Filter;
  2         631  
  2         46  
10              
11 2     2   6 use vars qw($VERSION @ISA);
  2         3  
  2         567  
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 6 my $type = shift;
20 1         5 my $mp = Data::MessagePack->new;
21 1         22 my $mp_stream = Data::MessagePack::Stream->new;
22              
23 1         2 my %opts = @_;
24              
25 1 50       3 $mp->prefer_integer if $opts{prefer_integer};
26 1 50       5 $mp->canonical if $opts{canonical};
27 1 50       9 $mp->utf8 if $opts{utf8};
28              
29 1         3 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 249 my ( $self, $stream ) = @_;
42 1         5 $self->[STREAM]->feed( join '', @$stream );
43             }
44              
45             sub get_one {
46 1     1 1 4 my $self = shift;
47 1         16 my $obj = $self->[STREAM]->next;
48 1 50       5 return $obj ? [ $self->[STREAM]->data ] : [];
49             }
50              
51             sub put {
52 1     1 1 339 my ( $self, $chunks ) = @_;
53 1         2 [ map { $self->[MP]->pack($_) } @$chunks ];
  1         15  
54             }
55              
56             1;
57              
58             __END__