1package IO::Compress::Adapter::Deflate ; 2 3use strict; 4use warnings; 5use bytes; 6 7use IO::Compress::Base::Common 2.024 qw(:Status); 8 9use Compress::Raw::Zlib 2.024 qw(Z_OK Z_FINISH MAX_WBITS) ; 10our ($VERSION); 11 12$VERSION = '2.024'; 13 14sub mkCompObject 15{ 16 my $crc32 = shift ; 17 my $adler32 = shift ; 18 my $level = shift ; 19 my $strategy = shift ; 20 21 my ($def, $status) = new Compress::Raw::Zlib::Deflate 22 -AppendOutput => 1, 23 -CRC32 => $crc32, 24 -ADLER32 => $adler32, 25 -Level => $level, 26 -Strategy => $strategy, 27 -WindowBits => - MAX_WBITS; 28 29 return (undef, "Cannot create Deflate object: $status", $status) 30 if $status != Z_OK; 31 32 return bless {'Def' => $def, 33 'Error' => '', 34 } ; 35} 36 37sub compr 38{ 39 my $self = shift ; 40 41 my $def = $self->{Def}; 42 43 my $status = $def->deflate($_[0], $_[1]) ; 44 $self->{ErrorNo} = $status; 45 46 if ($status != Z_OK) 47 { 48 $self->{Error} = "Deflate Error: $status"; 49 return STATUS_ERROR; 50 } 51 52 return STATUS_OK; 53} 54 55sub flush 56{ 57 my $self = shift ; 58 59 my $def = $self->{Def}; 60 61 my $opt = $_[1] || Z_FINISH; 62 my $status = $def->flush($_[0], $opt); 63 $self->{ErrorNo} = $status; 64 65 if ($status != Z_OK) 66 { 67 $self->{Error} = "Deflate Error: $status"; 68 return STATUS_ERROR; 69 } 70 71 return STATUS_OK; 72 73} 74 75sub close 76{ 77 my $self = shift ; 78 79 my $def = $self->{Def}; 80 81 $def->flush($_[0], Z_FINISH) 82 if defined $def ; 83} 84 85sub reset 86{ 87 my $self = shift ; 88 89 my $def = $self->{Def}; 90 91 my $status = $def->deflateReset() ; 92 $self->{ErrorNo} = $status; 93 if ($status != Z_OK) 94 { 95 $self->{Error} = "Deflate Error: $status"; 96 return STATUS_ERROR; 97 } 98 99 return STATUS_OK; 100} 101 102sub deflateParams 103{ 104 my $self = shift ; 105 106 my $def = $self->{Def}; 107 108 my $status = $def->deflateParams(@_); 109 $self->{ErrorNo} = $status; 110 if ($status != Z_OK) 111 { 112 $self->{Error} = "deflateParams Error: $status"; 113 return STATUS_ERROR; 114 } 115 116 return STATUS_OK; 117} 118 119 120 121#sub total_out 122#{ 123# my $self = shift ; 124# $self->{Def}->total_out(); 125#} 126# 127#sub total_in 128#{ 129# my $self = shift ; 130# $self->{Def}->total_in(); 131#} 132 133sub compressedBytes 134{ 135 my $self = shift ; 136 137 $self->{Def}->compressedBytes(); 138} 139 140sub uncompressedBytes 141{ 142 my $self = shift ; 143 $self->{Def}->uncompressedBytes(); 144} 145 146 147 148 149sub crc32 150{ 151 my $self = shift ; 152 $self->{Def}->crc32(); 153} 154 155sub adler32 156{ 157 my $self = shift ; 158 $self->{Def}->adler32(); 159} 160 161 1621; 163 164__END__ 165 166