From 0ea2815ff30489781880fb48f1b9a748c44e091e Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 01 八月 2019 11:40:59 +0800
Subject: [PATCH] test

---
 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