NAME

DR::Tnt::Msgpack - msgpack encoder/decoder.

SYNOPSIS

use DR::Tnt::Msgpack;
use DR::Tnt::Msgpack::Types ':all';  # mp_*


my $blob = msgpack { a => 'b', c => 123, d => [ 3, 4, 5 ] };

my $object = msgunpack $blob;
my $object = msgunpack_utf8 $blob;


my ($object, $len) = msgunpack_safely $blob;
my ($object, $len) = msgunpack_safely_utf8 $blob;

if (defined $len) {
    substr $blob, 0, $len, '';
    ...
}

if (my $len = msgunpack_check $blob) {
    # $blob contains msgpack with len=$len
}

METHODS

msgpack

my $blob = msgpack $scalar;
my $blob = msgpack \%hash;
my $blob = msgpack \@array;

Pack any perl object to msgpack. Blessed objects have to have TO_MSGPACK methods.

msgunpack

Unpack msgpack'ed string to perl object. Throws exception if buffer is invalid. Booleans are extracted to DR::Tnt::Msgpack::Types::Bool, see also DR::Tnt::Msgpack::Types.

msgunpack_utf8

The same as "msgunpack". Decode utf8 for each string.

msgunpack_safely, msgunpack_safely_utf8

Unpack msgpack'ed string to perl object. Don't throw exception if buffer is invalid.

Return unpacked object and length of unpacked object. If length is undef, buffer is invalid.