From 495ffcdad0027be02d5fc82825e08f36b6a53b90 Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期二, 24 三月 2020 15:11:24 +0800
Subject: [PATCH] 整理代码缩小收发缓存大小节省内存

---
 common/helper.go |   96 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 96 insertions(+), 0 deletions(-)

diff --git a/common/helper.go b/common/helper.go
new file mode 100644
index 0000000..9734eb9
--- /dev/null
+++ b/common/helper.go
@@ -0,0 +1,96 @@
+package common
+
+import (
+    "context"
+    "encoding/json"
+    "fmt"
+    "io/ioutil"
+    "strconv"
+    "time"
+
+    "basic.com/pubsub/protomsg.git"
+    "github.com/gogo/protobuf/proto"
+)
+
+// GetIpcAddress get ipc
+func GetIpcAddress(shm bool, id string) string {
+    if shm {
+        return id
+    }
+    return `ipc:///tmp/` + id + `.ipc`
+}
+
+// SubConfig sub
+type SubConfig struct {
+    SoFile string            `json:"so_file_path"`
+    Env    string            `json:"runtime"`
+    Param  map[string]string `json:"param"`
+}
+
+// SdkConfig sdk
+type SdkConfig struct {
+    SoFile string            `json:"so_file_path"`
+    Env    string            `json:"runtime"`
+    Param  map[string]string `json:"param"`
+    Sub    *SubConfig        `json:"sub"`
+}
+
+// ReadConfig conf
+func ReadConfig(file string) (SdkConfig, error) {
+    data, err := ioutil.ReadFile(file)
+    if err != nil {
+        return SdkConfig{}, fmt.Errorf("READ SDK CONFIG FILE %s ERROR", file)
+    }
+
+    //璇诲彇鐨勬暟鎹负json鏍煎紡锛岄渶瑕佽繘琛岃В鐮�
+    var v SdkConfig
+    err = json.Unmarshal(data, &v)
+
+    return v, err
+}
+
+// Atoi atoi
+func Atoi(s string) int {
+    i, _ := strconv.Atoi(s)
+    return i
+}
+
+// UnserilizeProto un
+func UnserilizeProto(ctx context.Context, data <-chan []byte, out chan<- protomsg.SdkMessage, fn func(...interface{})) {
+    for {
+        select {
+        case <-ctx.Done():
+            return
+        case d := <-data:
+            if len(d) < 100 {
+                continue
+            }
+            msg := protomsg.SdkMessage{}
+            if err := proto.Unmarshal(d, &msg); err != nil {
+                fn("UnserilizeProto Unmarshal msg 澶勭悊寮傚父 Error:", err)
+                continue
+            }
+
+            out <- msg
+
+        default:
+            time.Sleep(10 * time.Millisecond)
+        }
+    }
+}
+
+// UnpackImage unpack
+func UnpackImage(msg protomsg.SdkMessage, fnName string, fn func(...interface{})) *protomsg.Image {
+    // 鍙嶅簭鍒楀寲鏁版嵁寰楀埌sdk鍏ュ弬
+    i := &protomsg.Image{}
+    err := proto.Unmarshal(msg.Data, i)
+    if err != nil {
+        fn(fnName, " protobuf Unmarshal decode CameraImage error: ", err.Error())
+        return nil
+    }
+    if i.Data == nil {
+        fn(fnName, " protomsg.Image data null")
+        return nil
+    }
+    return i
+}

--
Gitblit v1.8.0