⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inflate.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
字号:
package IO::Uncompress::Adapter::Inflate;use strict;use warnings;use bytes;use IO::Compress::Base::Common  2.008 qw(:Status);use Compress::Raw::Zlib  2.008 qw(Z_OK Z_DATA_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);our ($VERSION);$VERSION = '2.008';sub mkUncompObject{    my $crc32   = shift || 1;    my $adler32 = shift || 1;    my $scan    = shift || 0;    my $inflate ;    my $status ;    if ($scan)    {        ($inflate, $status) = new Compress::Raw::Zlib::InflateScan                                    CRC32        => $crc32,                                    ADLER32      => $adler32,                                    WindowBits   => - MAX_WBITS ;    }    else    {        ($inflate, $status) = new Compress::Raw::Zlib::Inflate                                    AppendOutput => 1,                                    CRC32        => $crc32,                                    ADLER32      => $adler32,                                    WindowBits   => - MAX_WBITS ;    }    return (undef, "Could not create Inflation object: $status", $status)         if $status != Z_OK ;    return bless {'Inf'        => $inflate,                  'CompSize'   => 0,                  'UnCompSize' => 0,                  'Error'      => '',                 } ;         }sub uncompr{    my $self = shift ;    my $from = shift ;    my $to   = shift ;    my $eof  = shift ;    my $inf   = $self->{Inf};    my $status = $inf->inflate($from, $to, $eof);    $self->{ErrorNo} = $status;    if ($status != Z_STREAM_END && $eof)    {        $self->{Error} = "unexpected end of file";        return STATUS_ERROR;    }    if ($status != Z_OK && $status != Z_STREAM_END )    {        $self->{Error} = "Inflation Error: $status";        return STATUS_ERROR;    }        return STATUS_OK        if $status == Z_OK ;    return STATUS_ENDSTREAM if $status == Z_STREAM_END ;    return STATUS_ERROR ;}sub reset{    my $self = shift ;    $self->{Inf}->inflateReset();    return STATUS_OK ;}#sub count#{#    my $self = shift ;#    $self->{Inf}->inflateCount();#}sub crc32{    my $self = shift ;    $self->{Inf}->crc32();}sub compressedBytes{    my $self = shift ;    $self->{Inf}->compressedBytes();}sub uncompressedBytes{    my $self = shift ;    $self->{Inf}->uncompressedBytes();}sub adler32{    my $self = shift ;    $self->{Inf}->adler32();}sub sync{    my $self = shift ;    ( $self->{Inf}->inflateSync(@_) == Z_OK)             ? STATUS_OK             : STATUS_ERROR ;}sub getLastBlockOffset{    my $self = shift ;    $self->{Inf}->getLastBlockOffset();}sub getEndOffset{    my $self = shift ;    $self->{Inf}->getEndOffset();}sub resetLastBlockByte{    my $self = shift ;    $self->{Inf}->resetLastBlockByte(@_);}sub createDeflateStream{    my $self = shift ;    my $deflate = $self->{Inf}->createDeflateStream(@_);    return bless {'Def'        => $deflate,                  'CompSize'   => 0,                  'UnCompSize' => 0,                  'Error'      => '',                 }, 'IO::Compress::Adapter::Deflate';}1;__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -