mirror of
				https://github.com/msgpack/msgpack-c.git
				synced 2025-11-03 19:40:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			717 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			717 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
use strict;
 | 
						|
use warnings;
 | 
						|
use Test::More;
 | 
						|
use Data::MessagePack;
 | 
						|
 | 
						|
my @data = ( [ 1, 2, 3 ], [ 4, 5, 6 ] );
 | 
						|
 | 
						|
# serialize
 | 
						|
my $buffer = '';
 | 
						|
for my $d (@data) {
 | 
						|
    $buffer .= Data::MessagePack->pack($d);
 | 
						|
}
 | 
						|
 | 
						|
# deserialize
 | 
						|
my $cb = sub {
 | 
						|
    my ($data) = @_;
 | 
						|
 | 
						|
    my $d = shift @data;
 | 
						|
    is_deeply $data, $d;
 | 
						|
};
 | 
						|
my $unpacker = Data::MessagePack::Unpacker->new();
 | 
						|
my $nread = 0;
 | 
						|
while (1) {
 | 
						|
    $nread = $unpacker->execute( $buffer, $nread );
 | 
						|
    if ( $unpacker->is_finished ) {
 | 
						|
        my $ret = $unpacker->data;
 | 
						|
        $cb->( $ret );
 | 
						|
        $unpacker->reset;
 | 
						|
 | 
						|
        $buffer = substr( $buffer, $nread );
 | 
						|
        $nread = 0;
 | 
						|
        next if length($buffer) != 0;
 | 
						|
    }
 | 
						|
    last;
 | 
						|
}
 | 
						|
is scalar(@data), 0;
 | 
						|
 | 
						|
done_testing;
 | 
						|
 |