chenshijun
2019-07-27 b5560d3cae1164f016ca9339592eda6b9008fb9f
util/util.go
@@ -1,11 +1,18 @@
package util
import(
        "github.com/pierrec/lz4"
        "taskpubsub/logger"
       )
import (
   "basic.com/valib/deliver.git"
   "context"
   "errors"
   "github.com/pierrec/lz4"
   "taskpubsub/logger"
)
type SocketContext struct {
   Sock    deliver.Deliver
   Context context.Context
   Cancel  context.CancelFunc
}
//  1. oldstring element is not in new  : abandon(delete)
//  2. new element is not in oldstring  : add(add)
@@ -41,28 +48,60 @@
// UnCompress uncompress
func UnCompress(in []byte) ([]byte, error) {
    out := make([]byte, 10*len(in))
         n, err := lz4.UncompressBlock(in, out)
         if err != nil {
             logger.Error("uncompress error: ", err)
             return nil, err
         }
     out = out[:n] // uncompressed data
     return out, nil
   out := make([]byte, 10*len(in))
   n, err := lz4.UncompressBlock(in, out)
   if err != nil {
      logger.Error("uncompress error: ", err)
      return nil, err
   }
   out = out[:n] // uncompressed data
   return out, nil
}
// Compress compress
func Compress(in []byte) ([]byte, error) {
    out := make([]byte, len(in))
         ht := make([]int, 64<<10) // buffer for the compression table
         n, err := lz4.CompressBlock(in, out, ht)
         if err != nil {
             logger.Error("compress: ", err)
                 return nil, err
         }
     if n >= len(in) {
         logger.Error("image is not compressible")
     }
     out = out[:n] // compressed data
         return out, nil
   out := make([]byte, len(in))
   ht := make([]int, 64<<10) // buffer for the compression table
   n, err := lz4.CompressBlock(in, out, ht)
   if err != nil {
      logger.Error("compress: ", err)
      return nil, err
   }
   if n >= len(in) {
      logger.Error("image is not compressible")
   }
   out = out[:n] // compressed data
   return out, nil
}
// create server
func NewSocketListen(mode int, url string) (socket SocketContext, err error) {
   logger.Info("url is: ", url)
   ctx, cancel := context.WithCancel(context.Background())
   socket.Context = ctx
   socket.Cancel = cancel
   socket.Sock = deliver.NewServer(deliver.Mode(mode), url)
   if socket.Sock == nil {
      return socket, errors.New("create listen error")
   }
   return socket, nil
}
func NewSocketDial(mode int, url string) (socket SocketContext, err error) {
   logger.Info("url is: ", url)
   ctx, cancel := context.WithCancel(context.Background())
   socket.Context = ctx
   socket.Cancel = cancel
   socket.Sock = deliver.NewClient(deliver.Mode(mode), url)
   if socket.Sock == nil {
      return socket, errors.New("create listen error")
   }
   return socket, nil
}