From 7c6a958f00e327a8991f48093456de7cb84cf918 Mon Sep 17 00:00:00 2001 From: 554325746@qq.com <554325746@qq.com> Date: 星期三, 05 二月 2020 20:20:24 +0800 Subject: [PATCH] change log for proto marshal --- 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..2e4db0d --- /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 澶勭悊寮傚父:", 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