From d85f3edab0d8c495cecd7a81f31a9ead1eb001ac Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期三, 15 一月 2020 09:23:17 +0800 Subject: [PATCH] copy from bgr-2-analysis --- common/helper.go | 95 +++++++++++------------------------------------ 1 files changed, 22 insertions(+), 73 deletions(-) diff --git a/common/helper.go b/common/helper.go index 0e016c3..78298be 100644 --- a/common/helper.go +++ b/common/helper.go @@ -1,20 +1,22 @@ package common import ( - "context" "encoding/json" "fmt" "io/ioutil" "strconv" - "time" - "basic.com/libgowrapper/sdkstruct.git" "basic.com/pubsub/protomsg.git" "basic.com/valib/deliver.git" "github.com/gogo/protobuf/proto" ) const mode = deliver.PushPull + +// MsgRS msg recv and snd +type MsgRS struct { + Msg protomsg.SdkMessage +} // GetIpcAddress get ipc func GetIpcAddress(shm bool, id string) string { @@ -59,109 +61,56 @@ 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(err, " msg 澶勭悊寮傚父") - continue - } - - out <- msg - - default: - time.Sleep(10 * time.Millisecond) - } - } -} - -// Msg2MsgSDK msg->msgsdk -func Msg2MsgSDK(msg protomsg.SdkMessage) *sdkstruct.MsgSDK { - - d, err := proto.Marshal(&msg) - if err != nil { - return nil - } - - index, count := int(msg.Tasklab.Index), len(msg.Tasklab.Sdkinfos) - if index >= count { - return &sdkstruct.MsgSDK{ - MsgData: d, - SdkCount: count, - SdkIndex: index, - SdkDataLen: 0, - } - } - - return &sdkstruct.MsgSDK{ - MsgData: d, - SdkCount: count, - SdkIndex: index, - SdkDataLen: len(d), - } -} - // EjectResult eject -func EjectResult(res []byte, msg protomsg.SdkMessage, out chan<- sdkstruct.MsgSDK) { +func EjectResult(res []byte, msg MsgRS, out chan<- MsgRS) { if res == nil { - s := Msg2MsgSDK(msg) - if s == nil { - return - } - out <- *s + out <- msg + return + } + index := int(msg.Msg.Tasklab.Index) + + if index >= len(msg.Msg.Tasklab.Sdkinfos) { return } - msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)].Sdkdata = res + msg.Msg.Tasklab.Sdkinfos[index].Sdkdata = res - s := Msg2MsgSDK(msg) - if s == nil { - return - } - out <- *s + out <- msg } ///////////////////////////////////////////////////////////// // ValidRemoteMessage valid or not -func ValidRemoteMessage(msg protomsg.SdkMessage, fnName string, fn func(...interface{})) bool { - if msg.Tasklab == nil { +func ValidRemoteMessage(msg MsgRS, fnName string, fn func(...interface{})) bool { + if msg.Msg.Tasklab == nil { fn(fnName, " recieve msg nil") return false } - sdkLen := len(msg.Tasklab.Sdkinfos) + sdkLen := len(msg.Msg.Tasklab.Sdkinfos) if sdkLen == 0 { fn(fnName, " has no sdk info") return false } - curIndex := int(msg.Tasklab.Index) + curIndex := int(msg.Msg.Tasklab.Index) if curIndex < 0 || curIndex >= sdkLen { fn(fnName, " tasklab index ", curIndex, " error") return false } - if msg.Tasklab.Sdkinfos[curIndex].Sdktype != fnName { - fn(fnName, " is different from ", msg.Tasklab.Sdkinfos[curIndex].Sdktype) + if msg.Msg.Tasklab.Sdkinfos[curIndex].Sdktype != fnName { + fn(fnName, " is different from ", msg.Msg.Tasklab.Sdkinfos[curIndex].Sdktype) return false } return true } // UnpackImage unpack -func UnpackImage(msg protomsg.SdkMessage, fnName string, fn func(...interface{})) *protomsg.Image { +func UnpackImage(msg MsgRS, fnName string, fn func(...interface{})) *protomsg.Image { // 鍙嶅簭鍒楀寲鏁版嵁寰楀埌sdk鍏ュ弬 i := &protomsg.Image{} - err := proto.Unmarshal(msg.Data, i) + err := proto.Unmarshal(msg.Msg.Data, i) if err != nil { fn(fnName, " protobuf decode CameraImage error: ", err.Error()) return nil -- Gitblit v1.8.0