From 2d152f583afd602d501cc7fb05c54cc244943e70 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期三, 11 九月 2019 17:47:44 +0800
Subject: [PATCH] logger使用valib

---
 util/util.go |   74 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/util/util.go b/util/util.go
index d802f4c..1fea4b8 100644
--- a/util/util.go
+++ b/util/util.go
@@ -1,5 +1,19 @@
 package util
 
+import (
+	"basic.com/valib/deliver.git"
+	"context"
+	"errors"
+	"github.com/pierrec/lz4"
+	"basic.com/valib/logger.git"
+)
+
+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)
 func Difference(oldstring []string, newstring []string) map[string]string {
@@ -31,3 +45,63 @@
 	}
 	return diff
 }
+
+// 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
+}
+
+// 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
+}
+
+// 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
+}

--
Gitblit v1.8.0