From 0786441ed1828c411a16d6648baee753a02a3ddb Mon Sep 17 00:00:00 2001 From: zhangmeng <zhangmeng@aiotlink.com> Date: 星期二, 25 二月 2020 11:24:16 +0800 Subject: [PATCH] expand tabs to 4 spaces --- goreid.go | 62 ++-- run.go | 258 ++++++++-------- csrc/reid.cpp | 4 rpc/recv.go | 182 ++++++------ common/helper.go | 118 +++--- common/reboot.go | 82 ++-- rpc/send.go | 158 +++++----- 7 files changed, 432 insertions(+), 432 deletions(-) diff --git a/common/helper.go b/common/helper.go index 200e847..9734eb9 100644 --- a/common/helper.go +++ b/common/helper.go @@ -1,96 +1,96 @@ package common import ( - "context" - "encoding/json" - "fmt" - "io/ioutil" - "strconv" - "time" + "context" + "encoding/json" + "fmt" + "io/ioutil" + "strconv" + "time" - "basic.com/pubsub/protomsg.git" - "github.com/gogo/protobuf/proto" + "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` + 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"` + 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"` + 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) - } + 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) + //璇诲彇鐨勬暟鎹负json鏍煎紡锛岄渶瑕佽繘琛岃В鐮� + var v SdkConfig + err = json.Unmarshal(data, &v) - return v, err + return v, err } // Atoi atoi func Atoi(s string) int { - i, _ := strconv.Atoi(s) - return i + 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 - } + 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 + out <- msg - default: - time.Sleep(10 * time.Millisecond) - } - } + 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 + // 鍙嶅簭鍒楀寲鏁版嵁寰楀埌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 } diff --git a/common/reboot.go b/common/reboot.go index e4a9e4c..61ba8ce 100644 --- a/common/reboot.go +++ b/common/reboot.go @@ -1,64 +1,64 @@ package common import ( - "context" - "os" - "sync" - "time" + "context" + "os" + "sync" + "time" ) // Disturber stop type Disturber struct { - mtx sync.Mutex - live bool - until int - maxTry int + mtx sync.Mutex + live bool + until int + maxTry int } // NewDisturber new func NewDisturber(maxTry int) *Disturber { - return &Disturber{ - live: true, - until: 0, - maxTry: maxTry, - } + return &Disturber{ + live: true, + until: 0, + maxTry: maxTry, + } } // Prevent prevent func (d *Disturber) Prevent() { - d.mtx.Lock() - defer d.mtx.Unlock() - d.live = true + d.mtx.Lock() + defer d.mtx.Unlock() + d.live = true } // MaybeReboot reboot func (d *Disturber) MaybeReboot(ctx context.Context, fn func(...interface{})) { - d.live = true - for { - select { - case <-ctx.Done(): - return - default: - d.mtx.Lock() - running := d.live - d.mtx.Unlock() + d.live = true + for { + select { + case <-ctx.Done(): + return + default: + d.mtx.Lock() + running := d.live + d.mtx.Unlock() - if running { - d.until = 0 + if running { + d.until = 0 - d.mtx.Lock() - d.live = false - d.mtx.Unlock() + d.mtx.Lock() + d.live = false + d.mtx.Unlock() - } else { - d.until++ - fn("!!!!!!No Running: ", d.until) - if d.until > d.maxTry { - fn("!!!!!!Too Long Running, Reboot: ", d.maxTry) - os.Exit(0) - } - } - time.Sleep(time.Second) - } - } + } else { + d.until++ + fn("!!!!!!No Running: ", d.until) + if d.until > d.maxTry { + fn("!!!!!!Too Long Running, Reboot: ", d.maxTry) + os.Exit(0) + } + } + time.Sleep(time.Second) + } + } } diff --git a/csrc/reid.cpp b/csrc/reid.cpp index f894176..3b34bf4 100644 --- a/csrc/reid.cpp +++ b/csrc/reid.cpp @@ -11,8 +11,8 @@ ,start_(false) { if(init(gpu_index, module_path) < 0){ - throw std::runtime_error("init swscale error"); - } + throw std::runtime_error("init swscale error"); + } } reid::~reid() diff --git a/goreid.go b/goreid.go index 2784da5..8fd64bb 100644 --- a/goreid.go +++ b/goreid.go @@ -20,15 +20,15 @@ // ReID id type ReID struct { - handle unsafe.Pointer + handle unsafe.Pointer } // NewSDK new reid func NewSDK(gpu int, module string) *ReID { - cmodule := C.CString(module) - defer C.free(unsafe.Pointer(cmodule)) - h := C.create_reid(C.int(gpu), cmodule) - return &ReID{h} + cmodule := C.CString(module) + defer C.free(unsafe.Pointer(cmodule)) + h := C.create_reid(C.int(gpu), cmodule) + return &ReID{h} } // Free free @@ -38,42 +38,42 @@ // Extract extract // func (r *ReID) Extract(img []byte) []float32 { -// var fSize C.int -// cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize) -// if cfeat == nil { -// return nil -// } +// var fSize C.int +// cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize) +// if cfeat == nil { +// return nil +// } -// ret := make([]float32, 0, fSize) -// for i := 0; i < int(fSize); i++ { -// r := C.get_val(cfeat, C.int(i)) -// ret = append(ret, float32(r)) -// } -// C.free(unsafe.Pointer(cfeat)) -// return ret +// ret := make([]float32, 0, fSize) +// for i := 0; i < int(fSize); i++ { +// r := C.get_val(cfeat, C.int(i)) +// ret = append(ret, float32(r)) +// } +// C.free(unsafe.Pointer(cfeat)) +// return ret // } // Extract2 extract func (r *ReID) Extract2(img unsafe.Pointer, w, h, c int) []float32 { - var fSize C.int - cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize) - if cfeat == nil { - return nil - } + var fSize C.int + cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize) + if cfeat == nil { + return nil + } - ret := make([]float32, 0, fSize) - for i := 0; i < int(fSize); i++ { - r := C.get_val(cfeat, C.int(i)) - ret = append(ret, float32(r)) - } - C.free(unsafe.Pointer(cfeat)) - return ret + ret := make([]float32, 0, fSize) + for i := 0; i < int(fSize); i++ { + r := C.get_val(cfeat, C.int(i)) + ret = append(ret, float32(r)) + } + C.free(unsafe.Pointer(cfeat)) + return ret } // Compare compare func (r *ReID) Compare(feat1, feat2 []float32) float32 { - p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2))) - return float32(p) + p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2))) + return float32(p) } diff --git a/rpc/recv.go b/rpc/recv.go index aced578..a6bb22e 100644 --- a/rpc/recv.go +++ b/rpc/recv.go @@ -1,123 +1,123 @@ package rpc import ( - "context" + "context" - "time" + "time" - "basic.com/valib/deliver.git" + "basic.com/valib/deliver.git" ) // Reciever recv from ipc type Reciever struct { - ctx context.Context - ipcURL string - out chan<- []byte + ctx context.Context + ipcURL string + out chan<- []byte - shm bool - fnLogger func(...interface{}) + shm bool + fnLogger func(...interface{}) } // NewReciever new recv func NewReciever(url string, out chan<- []byte, shm bool, fn func(...interface{})) *Reciever { - return &Reciever{ - ipcURL: url, - out: out, - shm: shm, - fnLogger: fn, - } + return &Reciever{ + ipcURL: url, + out: out, + shm: shm, + fnLogger: fn, + } } // Run run a IPC client func (r *Reciever) Run(ctx context.Context) { - if r.shm { - r.runShm(ctx) - } else { - r.run(ctx, deliver.NewServer(deliver.PushPull, r.ipcURL)) - } + if r.shm { + r.runShm(ctx) + } else { + r.run(ctx, deliver.NewServer(deliver.PushPull, r.ipcURL)) + } } func (r *Reciever) run(ctx context.Context, i deliver.Deliver) { - count := 0 + count := 0 - for { - select { - case <-ctx.Done(): - i.Close() - return - default: + for { + select { + case <-ctx.Done(): + i.Close() + return + default: - if r.shm { - if d, err := i.Recv(); err != nil { - i.Close() - r.fnLogger("Reciever RECV From:", r.ipcURL, " ERROR: ", err) + if r.shm { + if d, err := i.Recv(); err != nil { + i.Close() + r.fnLogger("Reciever RECV From:", r.ipcURL, " ERROR: ", err) - c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL) - loopR: - for { - select { - case <-ctx.Done(): - return - default: - if err == nil { - break loopR - } - time.Sleep(time.Second) - c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL) - r.fnLogger("Recver ANALYSIS CREATE:", r.ipcURL, " FAILED : ", err) - } - } - i = c - r.fnLogger("Reciever CREATE SHM:", r.ipcURL) - } else { - if d != nil { - count++ - if count > 10 { - count = 0 - r.fnLogger("~~~shm recv image:", len(d)) - } - if len(d) > 2 { - r.out <- d - } - } - } - } else { - if msg, err := i.Recv(); err != nil { - // logo.Errorln("recv error : ", err, " url: ", r.ipcURL) - } else { - count++ - if count > 10 { - count = 0 - r.fnLogger("~~~mangos recv image:", len(msg)) - } - if len(msg) > 2 { - r.out <- msg - } - } - } - time.Sleep(10 * time.Millisecond) - } - } + c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL) + loopR: + for { + select { + case <-ctx.Done(): + return + default: + if err == nil { + break loopR + } + time.Sleep(time.Second) + c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL) + r.fnLogger("Recver ANALYSIS CREATE:", r.ipcURL, " FAILED : ", err) + } + } + i = c + r.fnLogger("Reciever CREATE SHM:", r.ipcURL) + } else { + if d != nil { + count++ + if count > 10 { + count = 0 + r.fnLogger("~~~shm recv image:", len(d)) + } + if len(d) > 2 { + r.out <- d + } + } + } + } else { + if msg, err := i.Recv(); err != nil { + // logo.Errorln("recv error : ", err, " url: ", r.ipcURL) + } else { + count++ + if count > 10 { + count = 0 + r.fnLogger("~~~mangos recv image:", len(msg)) + } + if len(msg) > 2 { + r.out <- msg + } + } + } + time.Sleep(10 * time.Millisecond) + } + } } func (r *Reciever) runShm(ctx context.Context) { - c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL) + c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL) loopRBegin: - for { - select { - case <-ctx.Done(): - return - default: - if err == nil { - break loopRBegin - } - time.Sleep(1 * time.Second) - c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL) - r.fnLogger("Recver CLIENT CREATE", r.ipcURL, "FAILED : ", err) - } - } + for { + select { + case <-ctx.Done(): + return + default: + if err == nil { + break loopRBegin + } + time.Sleep(1 * time.Second) + c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL) + r.fnLogger("Recver CLIENT CREATE", r.ipcURL, "FAILED : ", err) + } + } - r.run(ctx, c) + r.run(ctx, c) } diff --git a/rpc/send.go b/rpc/send.go index c0d4b5c..d9f7b00 100644 --- a/rpc/send.go +++ b/rpc/send.go @@ -1,112 +1,112 @@ package rpc import ( - "context" - "time" + "context" + "time" - "basic.com/valib/deliver.git" + "basic.com/valib/deliver.git" ) // Sender decoder ingo type Sender struct { - ipcURL string - in <-chan []byte - shm bool + ipcURL string + in <-chan []byte + shm bool - fnLogger func(...interface{}) + fnLogger func(...interface{}) } // NewSender Sender func NewSender(ipcURL string, in <-chan []byte, shm bool, fn func(...interface{})) *Sender { - return &Sender{ - ipcURL: ipcURL, - in: in, - shm: shm, - fnLogger: fn, - } + return &Sender{ + ipcURL: ipcURL, + in: in, + shm: shm, + fnLogger: fn, + } } // Run run a IPC producer func (s *Sender) Run(ctx context.Context) { - if s.shm { - s.runShm(ctx) - } else { - i := deliver.NewServer(deliver.PushPull, s.ipcURL) - if i == nil { - s.fnLogger("sender 2 pubsub nng create error") - return - } - s.run(ctx, i) - } + if s.shm { + s.runShm(ctx) + } else { + i := deliver.NewServer(deliver.PushPull, s.ipcURL) + if i == nil { + s.fnLogger("sender 2 pubsub nng create error") + return + } + s.run(ctx, i) + } } func (s *Sender) run(ctx context.Context, i deliver.Deliver) { - for { - select { - case <-ctx.Done(): - i.Close() - return - case d := <-s.in: + for { + select { + case <-ctx.Done(): + i.Close() + return + case d := <-s.in: - if s.shm { - if err := i.Send(d); err != nil { - i.Close() - s.fnLogger("SENDER To:", s.ipcURL, " ERROR: ", err) + if s.shm { + if err := i.Send(d); err != nil { + i.Close() + s.fnLogger("SENDER To:", s.ipcURL, " ERROR: ", err) - c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL) - loopS: - for { - select { - case <-ctx.Done(): - return - default: - if err == nil { - break loopS - } - time.Sleep(time.Second) - c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL) - s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, " FAILED : ", err) - } + c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL) + loopS: + for { + select { + case <-ctx.Done(): + return + default: + if err == nil { + break loopS + } + time.Sleep(time.Second) + c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL) + s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, " FAILED : ", err) + } - } + } - i = c - s.fnLogger("Sender Create Shm:", s.ipcURL) - } else { + i = c + s.fnLogger("Sender Create Shm:", s.ipcURL) + } else { - } - } else { - err := i.Send(d) - if err != nil { - // logo.Errorln("error sender 2 pubsub: ", err) - } else { - s.fnLogger("mangos send to pubsub len: ", len(d)) - } - } - default: - time.Sleep(10 * time.Millisecond) - } - } + } + } else { + err := i.Send(d) + if err != nil { + // logo.Errorln("error sender 2 pubsub: ", err) + } else { + s.fnLogger("mangos send to pubsub len: ", len(d)) + } + } + default: + time.Sleep(10 * time.Millisecond) + } + } } func (s *Sender) runShm(ctx context.Context) { - c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL) + c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL) loopSBegin: - for { - select { - case <-ctx.Done(): - return - default: - if err == nil { - break loopSBegin - } - time.Sleep(1 * time.Second) - c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL) - s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, "FAILED : ", err) - } - } + for { + select { + case <-ctx.Done(): + return + default: + if err == nil { + break loopSBegin + } + time.Sleep(1 * time.Second) + c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL) + s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, "FAILED : ", err) + } + } - s.run(ctx, c) + s.run(ctx, c) } diff --git a/run.go b/run.go index 9e4ee02..421c79a 100644 --- a/run.go +++ b/run.go @@ -5,29 +5,29 @@ #include <string.h> void* crop_image(void *vsrc, int srcW, int srcH, int x0, int y0, int x1, int y1, int channel, int *length) { - if (x0 < 0) x0 = 0; - if (x0 > srcW) x0 = srcW-1; - if (x1 < 0) x1 = 0; - if (x1 > srcW) x1 = srcW-1; + if (x0 < 0) x0 = 0; + if (x0 > srcW) x0 = srcW-1; + if (x1 < 0) x1 = 0; + if (x1 > srcW) x1 = srcW-1; - if (y0 < 0) y0 = 0; - if (y0 > srcH) y0 = srcH-1; - if (y1 < 0) y1 = 0; - if (y1 > srcH) y1 = srcH-1; + if (y0 < 0) y0 = 0; + if (y0 > srcH) y0 = srcH-1; + if (y1 < 0) y1 = 0; + if (y1 > srcH) y1 = srcH-1; - if (x1 - x0 <= 0 || y1 - y0 <= 0) return NULL; + if (x1 - x0 <= 0 || y1 - y0 <= 0) return NULL; - if (x1-x0 > srcW) x1 = srcW-x0; - if (y1-y0 > srcH) y1 = srcH-y0; + if (x1-x0 > srcW) x1 = srcW-x0; + if (y1-y0 > srcH) y1 = srcH-y0; unsigned char *src = (unsigned char*)vsrc; int destW = x1 - x0 + 1; - int destH = y1 - y0 + 1; + int destH = y1 - y0 + 1; - *length = channel * destW * destH; - unsigned char * desData = (unsigned char*)malloc(*length); + *length = channel * destW * destH; + unsigned char * desData = (unsigned char*)malloc(*length); int i = 0; int destIdy = 0; @@ -38,169 +38,169 @@ memcpy(&(desData[destIdy * destW * channel]), &(src[(i * srcW + x0) * channel]),sizeof(char) * channel * destW); } - return desData; + return desData; }*/ import "C" import ( - "context" - "time" - "unsafe" + "context" + "time" + "unsafe" - "reid/rpc" + "reid/rpc" - "reid/common" + "reid/common" - "basic.com/valib/gogpu.git" + "basic.com/valib/gogpu.git" - "basic.com/pubsub/protomsg.git" + "basic.com/pubsub/protomsg.git" - "github.com/gogo/protobuf/proto" + "github.com/gogo/protobuf/proto" ) type reid struct { - handle *ReID - fnLogger func(...interface{}) + handle *ReID + fnLogger func(...interface{}) - gpu int - ipc string + gpu int + ipc string } // Create Reid func Create(config string, typ, id string, gpu int, shm bool, fn func(...interface{}), reserved map[string]interface{}) interface{} { - cfg, err := common.ReadConfig(config) - if err != nil { - fn("Reid SDK Create Error When Read Config: ", err) - return nil - } + cfg, err := common.ReadConfig(config) + if err != nil { + fn("Reid SDK Create Error When Read Config: ", err) + return nil + } - sModel, sGPU, sIPC := - "reid-model", - "gpu-memory", - "ipc-url" + sModel, sGPU, sIPC := + "reid-model", + "gpu-memory", + "ipc-url" - params := []string{sModel, sGPU, sIPC} + params := []string{sModel, sGPU, sIPC} - for _, v := range params { - if _, ok := cfg.Param[v]; !ok { - fn("Reid SDK Create Error Because of Param Not Found: ", v) - return nil - } - } + for _, v := range params { + if _, ok := cfg.Param[v]; !ok { + fn("Reid SDK Create Error Because of Param Not Found: ", v) + return nil + } + } - gpuM := common.Atoi(cfg.Param[sGPU]) + gpuM := common.Atoi(cfg.Param[sGPU]) - rGPU := gpu + rGPU := gpu - if rGPU == -1 { - rGPU = gogpu.ValidGPU(gpuM + 512) - } + if rGPU == -1 { + rGPU = gogpu.ValidGPU(gpuM + 512) + } - handle := NewSDK(rGPU, cfg.Param[sModel]) - if handle == nil { - fn("Reid SDK Create Error When New SDK") - return nil - } + handle := NewSDK(rGPU, cfg.Param[sModel]) + if handle == nil { + fn("Reid SDK Create Error When New SDK") + return nil + } - return &reid{ - handle: handle, - fnLogger: fn, + return &reid{ + handle: handle, + fnLogger: fn, - gpu: rGPU, - ipc: cfg.Param[sIPC], - } + gpu: rGPU, + ipc: cfg.Param[sIPC], + } } // Run run func Run(ctx context.Context, i interface{}) { - s := i.(*reid) + s := i.(*reid) - const ( - postPull = `_2` - postPush = `_1` - ) + const ( + postPull = `_2` + postPush = `_1` + ) - ipcSnd := s.ipc + postPush - ipcRcv := s.ipc + postPull + ipcSnd := s.ipc + postPush + ipcRcv := s.ipc + postPull - sndURL := common.GetIpcAddress(true, ipcSnd) - rcvURL := common.GetIpcAddress(true, ipcRcv) + sndURL := common.GetIpcAddress(true, ipcSnd) + rcvURL := common.GetIpcAddress(true, ipcRcv) - chSnd := make(chan []byte, 3) - chRcv := make(chan []byte, 3) + chSnd := make(chan []byte, 3) + chRcv := make(chan []byte, 3) - recv := rpc.NewReciever(rcvURL, chRcv, true, s.fnLogger) - go recv.Run(ctx) + recv := rpc.NewReciever(rcvURL, chRcv, true, s.fnLogger) + go recv.Run(ctx) - chMsg := make(chan protomsg.SdkMessage, 3) - go common.UnserilizeProto(ctx, chRcv, chMsg, s.fnLogger) + chMsg := make(chan protomsg.SdkMessage, 3) + go common.UnserilizeProto(ctx, chRcv, chMsg, s.fnLogger) - send := rpc.NewSender(sndURL, chSnd, true, s.fnLogger) - go send.Run(ctx) + send := rpc.NewSender(sndURL, chSnd, true, s.fnLogger) + go send.Run(ctx) - for { - select { - case <-ctx.Done(): - return - case msg := <-chMsg: - if len(msg.Tasklab.Sdkinfos) == 0 || int(msg.Tasklab.Index) >= len(msg.Tasklab.Sdkinfos) { - s.fnLogger("reid !!!!!! Recv Msg From Humantrack Error") - continue - } - i := common.UnpackImage(msg, "reid", s.fnLogger) - if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 { - s.fnLogger("reid !!!!!! Unpack Image From Humantrack Msg Failed") - continue - } + for { + select { + case <-ctx.Done(): + return + case msg := <-chMsg: + if len(msg.Tasklab.Sdkinfos) == 0 || int(msg.Tasklab.Index) >= len(msg.Tasklab.Sdkinfos) { + s.fnLogger("reid !!!!!! Recv Msg From Humantrack Error") + continue + } + i := common.UnpackImage(msg, "reid", s.fnLogger) + if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 { + s.fnLogger("reid !!!!!! Unpack Image From Humantrack Msg Failed") + continue + } - sdkInfo := msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)] - s.fnLogger("reid~~~~~~Recv From Humantrack SDK Result Length: ", len(sdkInfo.Sdkdata)) + sdkInfo := msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)] + s.fnLogger("reid~~~~~~Recv From Humantrack SDK Result Length: ", len(sdkInfo.Sdkdata)) - res := &protomsg.HumanTrackResult{} - if err := proto.Unmarshal(sdkInfo.Sdkdata, res); err != nil { - s.fnLogger("reid !!!!!! proto.Unmarshal SDK Result From Humantrack msg Error:", err) - continue - } + res := &protomsg.HumanTrackResult{} + if err := proto.Unmarshal(sdkInfo.Sdkdata, res); err != nil { + s.fnLogger("reid !!!!!! proto.Unmarshal SDK Result From Humantrack msg Error:", err) + continue + } - for _, v := range res.Result { + for _, v := range res.Result { - var clen C.int - l, t, r, b := C.int(v.RcHuman.Left), C.int(v.RcHuman.Top), C.int(v.RcHuman.Right), C.int(v.RcHuman.Bottom) - cutImg := C.crop_image(unsafe.Pointer(&i.Data[0]), C.int(i.Width), C.int(i.Height), l, t, r, b, 3, &clen) - if cutImg != nil { - dl := int(clen) - data := (*[1 << 26]byte)((*[1 << 26]byte)(cutImg))[:dl:dl] + var clen C.int + l, t, r, b := C.int(v.RcHuman.Left), C.int(v.RcHuman.Top), C.int(v.RcHuman.Right), C.int(v.RcHuman.Bottom) + cutImg := C.crop_image(unsafe.Pointer(&i.Data[0]), C.int(i.Width), C.int(i.Height), l, t, r, b, 3, &clen) + if cutImg != nil { + dl := int(clen) + data := (*[1 << 26]byte)((*[1 << 26]byte)(cutImg))[:dl:dl] - w, h := int(r-l+1), int(b-t+1) - v.Feature = s.handle.Extract2(unsafe.Pointer(&data[0]), w, h, 3) - C.free(cutImg) - } + w, h := int(r-l+1), int(b-t+1) + v.Feature = s.handle.Extract2(unsafe.Pointer(&data[0]), w, h, 3) + C.free(cutImg) + } - } + } - if len(res.Result) > 0 { - if out, err := proto.Marshal(res); err == nil { - msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)].Sdkdata = out - s.fnLogger("reid~~~~~~Send To Humantrack Result Length:", len(out)) - } - } + if len(res.Result) > 0 { + if out, err := proto.Marshal(res); err == nil { + msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)].Sdkdata = out + s.fnLogger("reid~~~~~~Send To Humantrack Result Length:", len(out)) + } + } - if data, err := proto.Marshal(&msg); err == nil { - if data == nil { - s.fnLogger("reid !!!!!! proto.Marshal Failed To Marshal proto.SdkMessage") - continue - } - s.fnLogger("reid~~~~~~MSG Send Back To Humantrack Length:", len(data)) + if data, err := proto.Marshal(&msg); err == nil { + if data == nil { + s.fnLogger("reid !!!!!! proto.Marshal Failed To Marshal proto.SdkMessage") + continue + } + s.fnLogger("reid~~~~~~MSG Send Back To Humantrack Length:", len(data)) - chSnd <- data - } else { - s.fnLogger("reid !!!!!! proto.Marshal Out Msg Error:", err) - } - default: + chSnd <- data + } else { + s.fnLogger("reid !!!!!! proto.Marshal Out Msg Error:", err) + } + default: - time.Sleep(10 * time.Millisecond) + time.Sleep(10 * time.Millisecond) - } + } - } + } } -- Gitblit v1.8.0