home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / Zlib.pm < prev    next >
Encoding:
Perl POD Document  |  2001-04-24  |  2.1 KB  |  88 lines

  1. # $Id: Zlib.pm,v 1.2 2001/04/18 06:26:10 btrott Exp $
  2.  
  3. package Net::SSH::Perl::Comp::Zlib;
  4.  
  5. use strict;
  6. use Carp qw( croak );
  7. require Compress::Zlib;
  8.  
  9. use Net::SSH::Perl::Comp;
  10. use base qw( Net::SSH::Perl::Comp );
  11.  
  12. sub init {
  13.     my $comp = shift;
  14.     my($level) = @_;
  15.     my($err);
  16.  
  17.     ($comp->{d}, $err) = Compress::Zlib::deflateInit({ Level => $level });
  18.     croak "Can't create outgoing compression stream"
  19.         unless $err == Compress::Zlib::Z_OK();
  20.  
  21.     ($comp->{i}, $err) = Compress::Zlib::inflateInit();
  22.     croak "Can't create incoming compression stream"
  23.         unless $err == Compress::Zlib::Z_OK();
  24. }
  25.  
  26. sub compress {
  27.     my $comp = shift;
  28.     my($data) = @_;
  29.     my $d = $comp->{d};
  30.     my($compressed, $err);
  31.     {
  32.         my($output, $out);
  33.         ($output, $err) = $d->deflate($data);
  34.         last unless $err == Compress::Zlib::Z_OK();
  35.         ($out, $err) = $d->flush(Compress::Zlib::Z_PARTIAL_FLUSH());
  36.         last unless $err == Compress::Zlib::Z_OK();
  37.  
  38.         $compressed = $output . $out;
  39.     }
  40.     croak "Error while compressing: $err" unless defined $compressed;
  41.     $compressed;    
  42. }
  43.  
  44. sub uncompress {
  45.     my $comp = shift;
  46.     my($data) = @_;
  47.     my $i = $comp->{i};
  48.     my($inflated, $err);
  49.     {
  50.         my($out);
  51.         ($out, $err) = $i->inflate($data);
  52.         last unless $err == Compress::Zlib::Z_OK();
  53.  
  54.         $inflated = $out;
  55.     }
  56.     croak "Error while inflating: $err"
  57.         unless defined $inflated;
  58.     $inflated;    
  59. }
  60.  
  61. 1;
  62. __END__
  63.  
  64. =head1 NAME
  65.  
  66. Net::SSH::Perl::Comp::Zlib - Wrapper for SSH Zlib Compression
  67.  
  68. =head1 SYNOPSIS
  69.  
  70.     use Net::SSH::Perl::Comp;
  71.     my $comp = Net::SSH::Perl::Comp->new('Zlib');
  72.     print $comp->compress($data);
  73.  
  74. =head1 DESCRIPTION
  75.  
  76. I<Net::SSH::Perl::Comp::Zlib> subclasses I<Net::SSH::Perl::Comp> to
  77. provide Zlib compression support for I<Net::SSH::Perl>. To do so it
  78. wraps around I<Compress::Zlib>, an XS hook into the I<zlib> library.
  79.  
  80. Read through the I<Net::SSH::Perl::Comp> docs for usage information.
  81.  
  82. =head1 AUTHOR & COPYRIGHTS
  83.  
  84. Please see the Net::SSH::Perl manpage for author, copyright, and
  85. license information.
  86.  
  87. =cut
  88.