compression.go 854 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (C) 2015 The Protocol Authors.
  2. package protocol
  3. import "fmt"
  4. const (
  5. compressionThreshold = 128 // don't bother compressing messages smaller than this many bytes
  6. )
  7. var compressionMarshal = map[Compression]string{
  8. CompressionNever: "never",
  9. CompressionMetadata: "metadata",
  10. CompressionAlways: "always",
  11. }
  12. var compressionUnmarshal = map[string]Compression{
  13. // Legacy
  14. "false": CompressionNever,
  15. "true": CompressionMetadata,
  16. // Current
  17. "never": CompressionNever,
  18. "metadata": CompressionMetadata,
  19. "always": CompressionAlways,
  20. }
  21. func (c Compression) GoString() string {
  22. return fmt.Sprintf("%q", c.String())
  23. }
  24. func (c Compression) MarshalText() ([]byte, error) {
  25. return []byte(compressionMarshal[c]), nil
  26. }
  27. func (c *Compression) UnmarshalText(bs []byte) error {
  28. *c = compressionUnmarshal[string(bs)]
  29. return nil
  30. }