diff options
Diffstat (limited to 'lib/perl/lib/Thrift/MemoryBuffer.pm')
-rw-r--r-- | lib/perl/lib/Thrift/MemoryBuffer.pm | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/perl/lib/Thrift/MemoryBuffer.pm b/lib/perl/lib/Thrift/MemoryBuffer.pm index 32f144241..0b286878e 100644 --- a/lib/perl/lib/Thrift/MemoryBuffer.pm +++ b/lib/perl/lib/Thrift/MemoryBuffer.pm @@ -109,6 +109,26 @@ sub read return $ret; } +sub readAll +{ + my $self = shift; + my $len = shift; + + my $avail = ($self->{wPos} - $self->{rPos}); + if ($avail < $len) { + die new TTransportException("Attempt to readAll($len) found only $avail available"); + } + + my $data = ''; + my $got = 0; + + while (($got = length($data)) < $len) { + $data .= $self->read($len - $got); + } + + return $data; +} + sub write { my $self = shift; |