File Coverage

blib/lib/IO/Compress/Adapter/Zstd.pm
Criterion Covered Total %
statement 44 64 68.7
branch 3 8 37.5
condition 1 3 33.3
subroutine 10 13 76.9
pod 0 7 0.0
total 58 95 61.0


line stmt bran cond sub pod time code
1             package IO::Compress::Adapter::Zstd ;
2              
3 11     11   75 use strict;
  11         41  
  11         362  
4 11     11   64 use warnings;
  11         21  
  11         251  
5 11     11   55 use bytes;
  11         23  
  11         59  
6              
7 11     11   372 use IO::Compress::Base::Common 2.204 qw(:Status);
  11         183  
  11         1424  
8 11     11   3740 use Compress::Stream::Zstd qw(ZSTD_MAX_CLEVEL);
  11         6551  
  11         690  
9 11     11   4840 use Compress::Stream::Zstd::Compressor qw(ZSTD_CSTREAM_IN_SIZE);
  11         2275  
  11         5623  
10              
11             our ($VERSION);
12             $VERSION = '2.204';
13              
14             sub mkCompObject
15             {
16 225     225 0 22944 my $level = shift ;
17              
18             # TODO - parameterise level
19 225         4020 my $compressor = Compress::Stream::Zstd::Compressor->new($level);
20              
21 225         1603 return bless {
22             'Def' => $compressor,
23             'Buffer' => '',
24             'Error' => '',
25             'ErrorNo' => 0,
26             'CompBytes' => 0,
27             'UnCompBytes'=> 0,
28             } ;
29             }
30              
31             sub compr
32             {
33 231     231 0 56392 my $self = shift ;
34 231         379 my $buffer = shift ;
35              
36 231         415 my $def = $self->{Def};
37              
38 231         401 eval { $_[0] .= $def->compress($$buffer) ; };
  231         25697  
39              
40 231 50 33     1864 if ($@ || $def->isError())
41             {
42 0         0 $self->{Error} = $def->getErrorName();
43 0         0 $self->{ErrorNo} = $def->status() ;
44 0         0 return STATUS_ERROR ;
45             }
46              
47 231         571 $self->{Error} = '';
48 231         432 $self->{ErrorNo} = 0;
49              
50 231         596 return STATUS_OK;
51             }
52              
53             sub flush
54             {
55 4     4 0 930 my $self = shift ;
56              
57 4         9 my $def = $self->{Def};
58              
59 4         9 eval { $_[0] .= $def->flush() } ;
  4         62  
60              
61 4 50       15 if ($@)
62             {
63 0         0 $self->{ErrorNo} = $def->status() ;
64 0         0 return STATUS_ERROR ;
65             }
66              
67 4         10 $self->{ErrorNo} = 0;
68              
69 4         9 return STATUS_OK;
70             }
71              
72             sub close
73             {
74 224     224 0 31845 my $self = shift ;
75              
76 224         409 my $def = $self->{Def};
77              
78 224         382 eval { $_[0] .= $def->end() } ;
  224         10767  
79              
80 224 50       863 if ($@)
81             {
82 0         0 $self->{ErrorNo} = $def->status() ;
83 0         0 return STATUS_ERROR ;
84             }
85 224         450 $self->{ErrorNo} = 0;
86              
87 224         536 return STATUS_OK;
88             }
89              
90              
91              
92             sub reset
93             {
94 0     0 0   my $self = shift ;
95              
96 0           my $def = $self->{Def};
97              
98 0           eval { $_[0] = $def->init() } ;
  0            
99              
100 0 0         if ($@)
101             {
102 0           $self->{ErrorNo} = $def->status() ;
103 0           return STATUS_ERROR ;
104             }
105              
106 0           $self->{ErrorNo} = 0;
107              
108 0           return STATUS_OK;
109             }
110              
111             sub compressedBytes
112             {
113 0     0 0   my $self = shift ;
114 0           $self->{CompBytes};
115             }
116              
117             sub uncompressedBytes
118             {
119 0     0 0   my $self = shift ;
120 0           $self->{UnCompBytes};
121             }
122              
123             1;
124              
125             __END__