1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // 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
- }
|