From e87bc90683436ee856c1d14ecab1f16940a20471 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 05 十二月 2019 13:20:20 +0800
Subject: [PATCH] update

---
 util/util.go |  141 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 117 insertions(+), 24 deletions(-)

diff --git a/util/util.go b/util/util.go
index fbddcdb..e3b8197 100644
--- a/util/util.go
+++ b/util/util.go
@@ -1,11 +1,35 @@
 package util
 
-import(
-        "github.com/pierrec/lz4"
-        "fmt"
-       )
+import (
+	"context"
+	"errors"
 
+	"basic.com/valib/deliver.git"
 
+	"basic.com/valib/logger.git"
+)
+
+const (
+	// 鍏变韩鍐呭瓨鍙戦��/鎺ユ敹澶辫触shmMaxTryCount娆¢噸鏂板垱寤洪�氶亾灏濊瘯
+	ShmMaxTryCount = 7
+	// 涓嶈鍏变韩鍐呭瓨/mangos鍙戦��/鎺ユ敹澶辫触鏈�澶ф鏁�,璁や负褰撳墠閫氶亾涓嶅啀浣跨敤, 鍏抽棴
+	// 鏈夐棶棰�,鎽勫儚鏈洪暱鏃堕棿鏂綉鍚庨噸杩�,浣嗘槸閫氶亾鍏抽棴
+	tooLongFailed = 300
+
+	File_Img_Id_Pre   = "img_"
+	File_Video_Id_Pre = "video_"
+	File_Audio_Id_Pre = "audio_"
+)
+
+type SocketContext struct {
+	Sock    deliver.Deliver
+	Context context.Context
+	Cancel  context.CancelFunc
+
+	Mode   int
+	URL    string
+	UseSHM bool
+}
 
 //  1. oldstring element is not in new  : abandon(delete)
 //  2. new element is not in oldstring  : add(add)
@@ -41,28 +65,97 @@
 
 // UnCompress uncompress
 func UnCompress(in []byte) ([]byte, error) {
-    out := make([]byte, 10*len(in))
-         n, err := lz4.UncompressBlock(in, out)
-         if err != nil {
-             fmt.Println("uncompress error: ", err)
-             return nil, err
-         }
-     out = out[:n] // uncompressed data
-     return out, nil
+	return in, nil
+
+	// out := make([]byte, 3*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 {
-             fmt.Println("compress: ", err)
-                 return nil, err
-         }
-     if n >= len(in) {
-         fmt.Println("image is not compressible")
-     }
-     out = out[:n] // compressed data
-         return out, nil
+	return in, 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, shm bool) (socket SocketContext, err error) {
+	logger.Info("url is: ", url)
+	ctx, cancel := context.WithCancel(context.Background())
+
+	socket.Context = ctx
+	socket.Cancel = cancel
+
+	socket.Mode = mode
+	socket.URL = url
+	socket.UseSHM = shm
+
+	if shm {
+		var err error
+		socket.Sock, err = deliver.NewServerWithError(deliver.Mode(mode), url)
+		if err != nil {
+			logger.Info("TASK CREATE SERVER SHM ERROR: ", err)
+		}
+	} else {
+		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
+}
+
+func MaybeRestartSocket(socket SocketContext, tryCnt *int) SocketContext {
+	if socket.UseSHM {
+		if *tryCnt > ShmMaxTryCount {
+			logger.Info("SDK SEND SHM TRY :", ShmMaxTryCount, " RESTART IT")
+
+			socket.Sock.Close()
+			newSocket, err := NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
+			if err != nil {
+				return socket
+			}
+
+			*tryCnt = 0
+
+			return newSocket
+		}
+	}
+
+	return socket
 }

--
Gitblit v1.8.0