compression.go 830 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. CompressNever: "never",
  9. CompressMetadata: "metadata",
  10. CompressAlways: "always",
  11. }
  12. var compressionUnmarshal = map[string]Compression{
  13. // Legacy
  14. "false": CompressNever,
  15. "true": CompressMetadata,
  16. // Current
  17. "never": CompressNever,
  18. "metadata": CompressMetadata,
  19. "always": CompressAlways,
  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. }