From 1e89d5c86f7a26414f0ca4820f8c55981aaf890f Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 02 八月 2019 10:48:12 +0800
Subject: [PATCH] fix router
---
service/FaceSdkService.go | 42 ++++++++++++++++++++++++++++--------------
1 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/service/FaceSdkService.go b/service/FaceSdkService.go
index a3f0387..43a4101 100644
--- a/service/FaceSdkService.go
+++ b/service/FaceSdkService.go
@@ -11,26 +11,29 @@
"sync"
"time"
"webserver/extend/logger"
+ "webserver/extend/util"
)
type FaceSdkService struct {
File []byte
- Id string
+ Id int64
Result []*protomsg.ResultFaceDetect
+ DeadTime time.Duration
}
const (
Ipc_Push_Ext = "_2.ipc"
Ipc_Pull_Ext = "_1.ipc"
Ipc_Url_Pre = "ipc:///tmp///"
+ faceExtractWebCID = "virtual-face-extract-web-camera-id"
Virtual_FaceTaskId = "92496BDF-2BFA-98F2-62E8-96DD9866ABD2"
Virtual_FaceSdkId = "virtual-faceextract-sdk-pull"
Url_Service_PUSH = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Push_Ext
Url_Service_PULL = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Pull_Ext
)
-func GetFaceFeaFromSdk(fileBytes []byte) ([]*protomsg.ResultFaceDetect,error,*protomsg.Image){
- s := NewFaceSdkService(fileBytes)
+func GetFaceFeaFromSdk(fileBytes []byte,deadTime time.Duration) ([]*protomsg.ResultFaceDetect,error,*protomsg.Image){
+ s := NewFaceSdkService(fileBytes, deadTime)
i, err := s.ReadFromUploadImg()
if err !=nil{
logger.Debug("readFromUploadImg err:",err)
@@ -50,10 +53,11 @@
}
}
-func NewFaceSdkService(fileBytes []byte) FaceSdkService{
+func NewFaceSdkService(fileBytes []byte, deadTime time.Duration) FaceSdkService{
return FaceSdkService{
File:fileBytes,
- Id:uuid.NewV4().String(),
+ Id:time.Now().UnixNano(),
+ DeadTime:deadTime,
}
}
@@ -106,8 +110,8 @@
Height: height,
Timestamp: formatTimeStr,
Data: data,
- Id: timeUnix,
- Cid:s.Id,
+ Id: s.Id,
+ Cid: faceExtractWebCID,
},nil
}
@@ -135,7 +139,7 @@
func (s *FaceSdkService) GetFaceFea(){
var wg sync.WaitGroup
wg.Add(1)
- ticker := time.NewTicker(time.Second * 3)
+ ticker := time.NewTicker(s.DeadTime)
go func(ticker *time.Ticker, s *FaceSdkService) {
defer ticker.Stop()
defer wg.Done()
@@ -193,24 +197,24 @@
}
type FeaResult struct {
- FaceM map[string][]*protomsg.ResultFaceDetect
+ FaceM map[int64][]*protomsg.ResultFaceDetect
Lock sync.Mutex
}
-func (f *FeaResult) Write(id string,faceDetectResult []*protomsg.ResultFaceDetect){
+func (f *FeaResult) Write(id int64,faceDetectResult []*protomsg.ResultFaceDetect){
f.Lock.Lock()
defer f.Lock.Unlock()
f.FaceM[id] = faceDetectResult
}
-func (f *FeaResult) Get(id string) ([]*protomsg.ResultFaceDetect,bool){
+func (f *FeaResult) Get(id int64) ([]*protomsg.ResultFaceDetect,bool){
f.Lock.Lock()
defer f.Lock.Unlock()
coms,ok := f.FaceM[id]
return coms,ok
}
-func (f *FeaResult) Delete(id string){
+func (f *FeaResult) Delete(id int64){
f.Lock.Lock()
defer f.Lock.Unlock()
delete(f.FaceM,id)
@@ -221,7 +225,7 @@
func InitService() {
logger.Debug("service init!")
imgPushChan = make(chan []byte)
- resultMap.FaceM = make(map[string][]*protomsg.ResultFaceDetect,0)
+ resultMap.FaceM = make(map[int64][]*protomsg.ResultFaceDetect,0)
client_push = deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
client_pull = deliver.NewClient(deliver.PushPull, Url_Service_PULL)
defer func() {
@@ -258,7 +262,17 @@
rMsg := protomsg.SdkMessage{}
if err := proto.Unmarshal(resultBytes, &rMsg); err == nil {
logger.Debug("received MSG:", rMsg.Cid)
- perId := rMsg.Cid //鏁版嵁id
+ i := protomsg.Image{}
+ bdata, err := util.UnCompress(rMsg.Data)
+ if err !=nil {
+ logger.Debug("uncompress err:",err)
+ continue
+ }
+ err = proto.Unmarshal(bdata, &i)
+ if err !=nil {
+ continue
+ }
+ perId := i.Id //鏁版嵁id
if rMsg.Tasklab != nil && rMsg.Tasklab.Taskid == Virtual_FaceTaskId {
sdkInfos := rMsg.Tasklab.Sdkinfos
--
Gitblit v1.8.0