From f8beddf554ab00dafa95fbd3cecd2c05e5f0e72f Mon Sep 17 00:00:00 2001
From: 龙赣华 <slongertian@gmail.com>
Date: 星期二, 14 五月 2019 13:54:22 +0800
Subject: [PATCH] change json to photobuf

---
 sdk/sdk.go |   78 ++++++++++++++++++--------------------
 1 files changed, 37 insertions(+), 41 deletions(-)

diff --git a/sdk/sdk.go b/sdk/sdk.go
index fd91af0..b97d132 100644
--- a/sdk/sdk.go
+++ b/sdk/sdk.go
@@ -2,17 +2,20 @@
 
 import (
 	"context"
-	"encoding/json"
 	"fmt"
+	"time"
+
 	"github.com/long/test/httpclient"
+	"github.com/long/test/protomsg"
 	"github.com/long/test/tasktag"
 	"github.com/long/test/util"
-	"time"
 
 	"nanomsg.org/go-mangos"
 	"nanomsg.org/go-mangos/protocol/pair"
 	"nanomsg.org/go-mangos/transport/ipc"
 	"nanomsg.org/go-mangos/transport/tcp"
+
+	"github.com/golang/protobuf/proto"
 )
 
 var SocketManage = make(map[string]SocketContext)
@@ -48,7 +51,7 @@
 }
 
 //鍗曠嫭澶勭悊   es 涓婚鐨勬儏鍐�
-func es(sdkmsgchan chan SdkMessage) {
+func es(sdkmsgchan chan *protomsg.SdkMessage) {
 	for data := range sdkmsgchan {
 		fmt.Println("this data is finish all sdk! ", data)
 	}
@@ -65,7 +68,7 @@
 
 	for key, op := range sdkChanDel {
 		if op == "add" {
-			SdkMap[key] = make(chan SdkMessage)
+			SdkMap[key] = make(chan *protomsg.SdkMessage)
 			fmt.Println("鍒涘缓涓婚 sdk: ", key)
 		} else {
 			close(SdkMap[key])
@@ -76,26 +79,25 @@
 }
 
 //涓婚
-var SdkMap = make(map[string]chan SdkMessage)
-
-// 鍙戦�佺粰绠楁硶杩涚▼鐨勭粨鏋�
-type SdkMessage struct {
-	Cid     string
-	Tasklab tasktag.TaskLabel
-	Data    []byte
-}
+var SdkMap = make(map[string]chan *protomsg.SdkMessage)
 
 //sdk鏁版嵁 鍔犲伐鍣�
-func SdkData(cid string, taskid string, data []byte) (sdkmsg SdkMessage) {
+func SdkData(cid string, taskid string, data []byte) *protomsg.SdkMessage {
+	var sdkmsg = &protomsg.SdkMessage{}
 	sdkmsg.Cid = cid
+	if _, ok := tasktag.TaskMapLab[taskid]; !ok {
+		sdkmsg.Tasklab = nil
+		return sdkmsg
+	}
+
 	sdkmsg.Tasklab = tasktag.TaskMapLab[taskid]
 	sdkmsg.Data = data
-	return
+	return sdkmsg
 }
 
 //sdk鏁版嵁鍒嗗彂鍣�
-func SdkSendTopic(sdkmsg SdkMessage) (sdksend string) {
-	if sdkmsg.Tasklab.Index < len(sdkmsg.Tasklab.Sdkids) {
+func SdkSendTopic(sdkmsg *protomsg.SdkMessage) (sdksend string) {
+	if int(sdkmsg.Tasklab.Index) < len(sdkmsg.Tasklab.Sdkids) {
 		sdksend = sdkmsg.Tasklab.Sdkids[sdkmsg.Tasklab.Index]
 	} else {
 		sdksend = "es"
@@ -115,11 +117,11 @@
 // 鍒涘缓涓婚
 func SdkCreateTopic(sdklist []string) (err error) {
 	for _, sdkid := range sdklist {
-		SdkMap[sdkid] = make(chan SdkMessage)
+		SdkMap[sdkid] = make(chan *protomsg.SdkMessage)
 		fmt.Println("create sdk channel:  ", sdkid)
 	}
 
-	SdkMap["es"] = make(chan SdkMessage)
+	SdkMap["es"] = make(chan *protomsg.SdkMessage)
 	fmt.Println("create es channel:  ")
 
 	return nil
@@ -171,6 +173,8 @@
 
 func Recv(socket SocketContext) {
 	socket.Sock.SetOption(mangos.OptionRecvDeadline, 1*time.Second)
+
+	var repsdkmsg = &protomsg.SdkMessage{}
 	for {
 		select {
 		case <-socket.Context.Done():
@@ -181,45 +185,37 @@
 				//fmt.Printf("%s ", err)
 				continue
 			} else {
-
-				var repsdkmsg SdkMessage
-				var reps interface{}
-
-				err = json.Unmarshal(msg, &reps)
+				err = proto.Unmarshal(msg, repsdkmsg)
 				if err != nil {
+					fmt.Println("unmarshal error: ", err)
 					continue
 				}
-
-				switch v := reps.(type) {
-				case map[string]interface{}:
-					//璋冪敤璁$畻鍑芥暟锛� 鍒嗗彂缁欎笅涓�涓富棰�
-
-					json.Unmarshal(msg, &repsdkmsg)
-					nexttopic := SdkSendTopic(repsdkmsg)
-					SdkMap[nexttopic] <- repsdkmsg
-				case string:
-					fmt.Println("this string is: ", v)
-				}
+				//璋冪敤璁$畻鍑芥暟锛� 鍒嗗彂缁欎笅涓�涓富棰�
+				nexttopic := SdkSendTopic(repsdkmsg)
+				SdkMap[nexttopic] <- repsdkmsg
 			}
 		}
 	}
 }
 
-func send(sdkid string, socket SocketContext, in chan SdkMessage) {
-	var v SdkMessage
-	var b []byte
+func send(sdkid string, socket SocketContext, in chan *protomsg.SdkMessage) {
+	var v *protomsg.SdkMessage
 
 	for {
 		select {
 		case <-socket.Context.Done():
 			fmt.Println("socket is close")
 		case v = <-in:
-			b, _ = json.Marshal(v)
-			fmt.Printf("浠庣閬搒dkid=%s 鎺ュ彈鏁版嵁 %d\n", sdkid, len(v.Data))
-			if err := socket.Sock.Send(b); err != nil {
+			data, err := proto.Marshal(v)
+			if err != nil {
+				fmt.Println("proto marshal error ", err)
+			}
+			fmt.Printf("浠庣閬搒dkid=%s 鎺ュ彈鏁版嵁 %d\n", sdkid, len(data))
+
+			if err := socket.Sock.Send(data); err != nil {
 				fmt.Println("failed send")
 			}
-			fmt.Printf("sdkid = %s ,send success:%d \n", sdkid, len(v.Data))
+			fmt.Printf("sdkid = %s ,send success:%d \n", sdkid, len(data))
 		}
 	}
 }

--
Gitblit v1.8.0