mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-14 01:04:14 +00:00
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
|
||
|
}
|