File Coverage

blib/lib/AnyEvent/MessagePack.pm
Criterion Covered Total %
statement 17 17 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 23 23 100.0


line stmt bran cond sub pod time code
1             package AnyEvent::MessagePack;
2 5     5   78364 use strict;
  5         9  
  5         130  
3 5     5   15 use warnings;
  5         6  
  5         114  
4 5     5   98 use 5.010001;
  5         24  
5             our $VERSION = '0.20';
6              
7 5     5   3063 use AnyEvent::Handle;
  5         69525  
  5         168  
8              
9 5     5   2108 use Data::MessagePack 0.34;
  5         3870  
  5         127  
10 5     5   1816 use Data::MessagePack::Stream 0.05;
  5         1489  
  5         738  
11              
12             AnyEvent::Handle::register_write_type(msgpack => sub {
13             my ($self, $data) = @_;
14             Data::MessagePack->pack($data);
15             });
16              
17             AnyEvent::Handle::register_read_type(msgpack => sub {
18             my ($self, $cb) = @_;
19              
20             # FIXME This implementation eats all the data, so the stream may
21             # contain only MessagePack packets.
22              
23             my $unpacker = $self->{_msgpack} ||= Data::MessagePack::Stream::->new;
24              
25             sub {
26             my $buffer = delete $_[0]{rbuf};
27              
28             $unpacker->feed($buffer) if defined $buffer;
29              
30             if ($unpacker->next) {
31             $cb->( $_[0], $unpacker->data );
32             return 1;
33             }
34             return 0;
35             }
36             });
37              
38             1;
39             __END__