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

📄 base.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
📖 第 1 页 / 共 2 页
字号:
                or return undef ;        }        return $count ;    }    croak "Should not be here";    return undef;}sub addInterStream{    my $self = shift ;    my $input = shift ;    my $inputIsFilename = shift ;    if (*$self->{Got}->value('MultiStream'))    {        $self->getFileInfo(*$self->{Got}, $input)            #if isaFilename($input) and $inputIsFilename ;            if isaFilename($input) ;        # TODO -- newStream needs to allow gzip/zip header to be modified        return $self->newStream();    }    elsif (*$self->{Got}->value('AutoFlush'))    {        #return $self->flush(Z_FULL_FLUSH);    }    return 1 ;}sub getFileInfo{}sub TIEHANDLE{    return $_[0] if ref($_[0]);    die "OOPS\n" ;}  sub UNTIE{    my $self = shift ;}sub DESTROY{    my $self = shift ;    $self->close() ;    # TODO - memory leak with 5.8.0 - this isn't called until     #        global destruction    #    %{ *$self } = () ;    undef $self ;}sub filterUncompressed{}sub syswrite{    my $self = shift ;    my $buffer ;    if (ref $_[0] ) {        $self->croakError( *$self->{ClassName} . "::write: not a scalar reference" )            unless ref $_[0] eq 'SCALAR' ;        $buffer = $_[0] ;    }    else {        $buffer = \$_[0] ;    }    $] >= 5.008 and ( utf8::downgrade($$buffer, 1)         or croak "Wide character in " .  *$self->{ClassName} . "::write:");    if (@_ > 1) {        my $slen = defined $$buffer ? length($$buffer) : 0;        my $len = $slen;        my $offset = 0;        $len = $_[1] if $_[1] < $len;        if (@_ > 2) {            $offset = $_[2] || 0;            $self->croakError(*$self->{ClassName} . "::write: offset outside string")                 if $offset > $slen;            if ($offset < 0) {                $offset += $slen;                $self->croakError( *$self->{ClassName} . "::write: offset outside string") if $offset < 0;            }            my $rem = $slen - $offset;            $len = $rem if $rem < $len;        }        $buffer = \substr($$buffer, $offset, $len) ;    }    return 0 if ! defined $$buffer || length $$buffer == 0 ;    if (*$self->{Encoding}) {        $$buffer = *$self->{Encoding}->encode($$buffer);    }    $self->filterUncompressed($buffer);    my $buffer_length = defined $$buffer ? length($$buffer) : 0 ;    *$self->{UnCompSize}->add($buffer_length) ;    my $outBuffer='';    my $status = *$self->{Compress}->compr($buffer, $outBuffer) ;    return $self->saveErrorString(undef, *$self->{Compress}{Error},                                          *$self->{Compress}{ErrorNo})        if $status == STATUS_ERROR;    *$self->{CompSize}->add(length $outBuffer) ;    $self->output($outBuffer)        or return undef;    return $buffer_length;}sub print{    my $self = shift;    #if (ref $self) {    #    $self = *$self{GLOB} ;    #}    if (defined $\) {        if (defined $,) {            defined $self->syswrite(join($,, @_) . $\);        } else {            defined $self->syswrite(join("", @_) . $\);        }    } else {        if (defined $,) {            defined $self->syswrite(join($,, @_));        } else {            defined $self->syswrite(join("", @_));        }    }}sub printf{    my $self = shift;    my $fmt = shift;    defined $self->syswrite(sprintf($fmt, @_));}sub flush{    my $self = shift ;    my $outBuffer='';    my $status = *$self->{Compress}->flush($outBuffer, @_) ;    return $self->saveErrorString(0, *$self->{Compress}{Error},                                     *$self->{Compress}{ErrorNo})        if $status == STATUS_ERROR;    if ( defined *$self->{FH} ) {        *$self->{FH}->clearerr();    }    *$self->{CompSize}->add(length $outBuffer) ;    $self->output($outBuffer)        or return 0;    if ( defined *$self->{FH} ) {        defined *$self->{FH}->flush()            or return $self->saveErrorString(0, $!, $!);     }    return 1;}sub newStream{    my $self = shift ;      $self->_writeTrailer()        or return 0 ;    my $got = $self->checkParams('newStream', *$self->{Got}, @_)        or return 0 ;        $self->ckParams($got)        or $self->croakError("newStream: $self->{Error}");    *$self->{Header} = $self->mkHeader($got) ;    $self->output(*$self->{Header} )        or return 0;        my $status = $self->reset() ;    return $self->saveErrorString(0, *$self->{Compress}{Error},                                   *$self->{Compress}{ErrorNo})        if $status == STATUS_ERROR;    *$self->{UnCompSize}->reset();    *$self->{CompSize}->reset();    return 1 ;}sub reset{    my $self = shift ;    return *$self->{Compress}->reset() ;}sub _writeTrailer{    my $self = shift ;    my $trailer = '';    my $status = *$self->{Compress}->close($trailer) ;    return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo})        if $status == STATUS_ERROR;    *$self->{CompSize}->add(length $trailer) ;    $trailer .= $self->mkTrailer();    defined $trailer      or return 0;    return $self->output($trailer);}sub _writeFinalTrailer{    my $self = shift ;    return $self->output($self->mkFinalTrailer());}sub close{    my $self = shift ;    return 1 if *$self->{Closed} || ! *$self->{Compress} ;    *$self->{Closed} = 1 ;    untie *$self         if $] >= 5.008 ;    $self->_writeTrailer()        or return 0 ;    $self->_writeFinalTrailer()        or return 0 ;    $self->output( "", 1 )        or return 0;    if (defined *$self->{FH}) {        #if (! *$self->{Handle} || *$self->{AutoClose}) {        if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) {            $! = 0 ;            *$self->{FH}->close()                or return $self->saveErrorString(0, $!, $!);         }        delete *$self->{FH} ;        # This delete can set $! in older Perls, so reset the errno        $! = 0 ;    }    return 1;}#sub total_in#sub total_out#sub msg##sub crc#{#    my $self = shift ;#    return *$self->{Compress}->crc32() ;#}##sub msg#{#    my $self = shift ;#    return *$self->{Compress}->msg() ;#}##sub dict_adler#{#    my $self = shift ;#    return *$self->{Compress}->dict_adler() ;#}##sub get_Level#{#    my $self = shift ;#    return *$self->{Compress}->get_Level() ;#}##sub get_Strategy#{#    my $self = shift ;#    return *$self->{Compress}->get_Strategy() ;#}sub tell{    my $self = shift ;    return *$self->{UnCompSize}->get32bit() ;}sub eof{    my $self = shift ;    return *$self->{Closed} ;}sub seek{    my $self     = shift ;    my $position = shift;    my $whence   = shift ;    my $here = $self->tell() ;    my $target = 0 ;    #use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END);    use IO::Handle ;    if ($whence == IO::Handle::SEEK_SET) {        $target = $position ;    }    elsif ($whence == IO::Handle::SEEK_CUR || $whence == IO::Handle::SEEK_END) {        $target = $here + $position ;    }    else {        $self->croakError(*$self->{ClassName} . "::seek: unknown value, $whence, for whence parameter");    }    # short circuit if seeking to current offset    return 1 if $target == $here ;        # Outlaw any attempt to seek backwards    $self->croakError(*$self->{ClassName} . "::seek: cannot seek backwards")        if $target < $here ;    # Walk the file to the new offset    my $offset = $target - $here ;    my $buffer ;    defined $self->syswrite("\x00" x $offset)        or return 0;    return 1 ;}sub binmode{    1;#    my $self     = shift ;#    return defined *$self->{FH} #            ? binmode *$self->{FH} #            : 1 ;}sub fileno{    my $self     = shift ;    return defined *$self->{FH}             ? *$self->{FH}->fileno()             : undef ;}sub opened{    my $self     = shift ;    return ! *$self->{Closed} ;}sub autoflush{    my $self     = shift ;    return defined *$self->{FH}             ? *$self->{FH}->autoflush(@_)             : undef ;}sub input_line_number{    return undef ;}sub _notAvailable{    my $name = shift ;    return sub { croak "$name Not Available: File opened only for output" ; } ;}*read     = _notAvailable('read');*READ     = _notAvailable('read');*readline = _notAvailable('readline');*READLINE = _notAvailable('readline');*getc     = _notAvailable('getc');*GETC     = _notAvailable('getc');*FILENO   = \&fileno;*PRINT    = \&print;*PRINTF   = \&printf;*WRITE    = \&syswrite;*write    = \&syswrite;*SEEK     = \&seek; *TELL     = \&tell;*EOF      = \&eof;*CLOSE    = \&close;*BINMODE  = \&binmode;#*sysread  = \&_notAvailable;#*syswrite = \&_write;1; __END__=head1 NAMEIO::Compress::Base - Base Class for IO::Compress modules =head1 SYNOPSIS    use IO::Compress::Base ;=head1 DESCRIPTIONThis module is not intended for direct use in application code. Its solepurpose if to to be sub-classed by IO::Compress modules.=head1 SEE ALSOL<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,L<Archive::Tar|Archive::Tar>,L<IO::Zlib|IO::Zlib>=head1 AUTHORThis module was written by Paul Marquess, F<pmqs@cpan.org>. =head1 MODIFICATION HISTORYSee the Changes file.=head1 COPYRIGHT AND LICENSECopyright (c) 2005-2007 Paul Marquess. All rights reserved.This program is free software; you can redistribute it and/ormodify it under the same terms as Perl itself.

⌨️ 快捷键说明

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