Source File
compressed.go
Belonging Package
golang.org/x/crypto/openpgp/packet
package packet
import (
)
type Compressed struct {
Body io.Reader
}
const (
NoCompression = flate.NoCompression
BestSpeed = flate.BestSpeed
BestCompression = flate.BestCompression
DefaultCompression = flate.DefaultCompression
)
Level int
}
func ( *Compressed) ( io.Reader) error {
var [1]byte
, := readFull(, [:])
if != nil {
return
}
switch [0] {
case 1:
.Body = flate.NewReader()
case 2:
.Body, = zlib.NewReader()
case 3:
.Body = bzip2.NewReader()
default:
= errors.UnsupportedError("unknown compression algorithm: " + strconv.Itoa(int([0])))
}
return
}
type compressedWriteCloser struct {
sh io.Closer // Stream Header
c io.WriteCloser // Compressor
}
func ( compressedWriteCloser) ( []byte) (int, error) {
return .c.Write()
}
func ( compressedWriteCloser) () ( error) {
= .c.Close()
if != nil {
return
}
return .sh.Close()
}
func ( io.WriteCloser, CompressionAlgo, *CompressionConfig) ( io.WriteCloser, error) {
, := serializeStreamHeader(, packetTypeCompressed)
if != nil {
return
}
_, = .Write([]byte{uint8()})
if != nil {
return
}
:= DefaultCompression
if != nil {
= .Level
}
var io.WriteCloser
switch {
case CompressionZIP:
, = flate.NewWriter(, )
case CompressionZLIB:
, = zlib.NewWriterLevel(, )
default:
:= strconv.Itoa(int())
= errors.UnsupportedError("Unsupported compression algorithm: " + )
}
if != nil {
return
}
= compressedWriteCloser{, }
return
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |