git-subtree-dir: lib/protocol git-subtree-mainline:5ecb8bdd8a
git-subtree-split:f91191218b
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
// Copyright (C) 2015 The Protocol Authors.
|
|
|
|
package protocol
|
|
|
|
import "fmt"
|
|
|
|
type Compression int
|
|
|
|
const (
|
|
CompressMetadata Compression = iota // zero value is the default, default should be "metadata"
|
|
CompressNever
|
|
CompressAlways
|
|
|
|
compressionThreshold = 128 // don't bother compressing messages smaller than this many bytes
|
|
)
|
|
|
|
var compressionMarshal = map[Compression]string{
|
|
CompressNever: "never",
|
|
CompressMetadata: "metadata",
|
|
CompressAlways: "always",
|
|
}
|
|
|
|
var compressionUnmarshal = map[string]Compression{
|
|
// Legacy
|
|
"false": CompressNever,
|
|
"true": CompressMetadata,
|
|
|
|
// Current
|
|
"never": CompressNever,
|
|
"metadata": CompressMetadata,
|
|
"always": CompressAlways,
|
|
}
|
|
|
|
func (c Compression) String() string {
|
|
s, ok := compressionMarshal[c]
|
|
if !ok {
|
|
return fmt.Sprintf("unknown:%d", c)
|
|
}
|
|
return s
|
|
}
|
|
|
|
func (c Compression) GoString() string {
|
|
return fmt.Sprintf("%q", c.String())
|
|
}
|
|
|
|
func (c Compression) MarshalText() ([]byte, error) {
|
|
return []byte(compressionMarshal[c]), nil
|
|
}
|
|
|
|
func (c *Compression) UnmarshalText(bs []byte) error {
|
|
*c = compressionUnmarshal[string(bs)]
|
|
return nil
|
|
}
|