snappy.go 643 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package conn
  2. import (
  3. "io"
  4. "github.com/golang/snappy"
  5. )
  6. type SnappyConn struct {
  7. w *snappy.Writer
  8. r *snappy.Reader
  9. }
  10. func NewSnappyConn(conn io.ReadWriteCloser) *SnappyConn {
  11. c := new(SnappyConn)
  12. c.w = snappy.NewBufferedWriter(conn)
  13. c.r = snappy.NewReader(conn)
  14. return c
  15. }
  16. //snappy压缩写
  17. func (s *SnappyConn) Write(b []byte) (n int, err error) {
  18. if n, err = s.w.Write(b); err != nil {
  19. return
  20. }
  21. if err = s.w.Flush(); err != nil {
  22. return
  23. }
  24. return
  25. }
  26. //snappy压缩读
  27. func (s *SnappyConn) Read(b []byte) (n int, err error) {
  28. return s.r.Read(b)
  29. }
  30. func (s *SnappyConn) Close() error {
  31. s.w.Close()
  32. return s.w.Close()
  33. }