panlei
2019-08-08 1c1e1c57779e663aeec74800d656e7fae0f373b0
---人脸比对改为进程方式
1个文件已修改
57 ■■■■■ 已修改文件
ruleserver/readyDataForRule.go 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/readyDataForRule.go
@@ -9,14 +9,19 @@
    "github.com/go-yaml/yaml"
    "io/ioutil"
    "math"
    "nanomsg.org/go-mangos"
    "nanomsg.org/go-mangos/protocol/req"
    "nanomsg.org/go-mangos/transport/tcp"
    "os"
    "ruleprocess/cache"
    "ruleprocess/logger"
    "github.com/golang/protobuf/proto"
    "strconv"
    "time"
)
var serverIp, serverPort, dbTablePersons string
var sock mangos.Socket
type conf struct {
    PhotoUrl       string `yaml:"photoUrl"`
    VideoPersons   string `yaml:"videoPersons"`
@@ -45,6 +50,10 @@
    }
    logger.Debug("本机信息和server信息:", localConfig, serverIp, serverPort)
    bigCache.Init(dbTablePersons, serverIp, serverPort, localConfig.ServerId)
    sock, err = req.NewSocket();
    if err != nil {
        logger.Error("创建请求socket失败: %s", err.Error())
    }
}
type BaseInfo struct {
@@ -158,7 +167,13 @@
// 给目标填充liker
func (arg *Arg) fillLiker(tableId []string, compareThreshold float32) {
    bytes := bigCache.GetComparePersonBaseInfo(tableId, arg.Feature, compareThreshold)
    // bytes := bigCache.GetComparePersonBaseInfo(tableId, arg.Feature, compareThreshold)
    comArg := &protomsg.CompareArgs{
        TableIds:tableId,
        FaceFeature:arg.Feature,
        CompareThreshold:compareThreshold,
    }
    bytes := Push("tcp://192.168.1.182:40010",comArg,sock)
    var m map[string]float32
    err1 := json.Unmarshal(bytes, &m)
    if err1 != nil {
@@ -307,3 +322,41 @@
        arg.AreaMapList = append(arg.AreaMapList, &areaMap)
    }
}
func Push(url string,data *protomsg.CompareArgs,sock mangos.Socket) []byte{
    //var sock mangos.Socket
    var err error
    var msg []byte
    //if sock, err = req.NewSocket(); err != nil {
    //    logger.Error("创建请求socket失败: %s", err.Error())
    //}
    errSize := sock.SetOption(mangos.OptionMaxRecvSize,5*1024*1024)
    if errSize != nil {
        logger.Error("Failed set MaxRecvSize: %v", err)
        return nil
    }
    //sock.AddTransport(ipc.NewTransport())
    sock.AddTransport(tcp.NewTransport())
    if err = sock.Dial(url); err != nil {
        logger.Error("请求socket拨号失败: %s", err.Error())
    }
    logger.Info("序列化数据")
    bytes,err1 := proto.Marshal(data)
    logger.Info("数据长度为:",len(bytes))
    if err1 != nil {
        logger.Info("序列化失败:",err1)
    }
    logger.Debug("推送数据")
    //bytes := []byte("ndfasojdfaidsos")
    if err = sock.Send(bytes); err != nil {
        logger.Error("推送socket发送数据失败: %s", err.Error())
        os.Exit(1)
    }
    if msg, err = sock.Recv(); err != nil {
        logger.Error("接收响应失败: %s", err.Error())
        os.Exit(1)
    }
    logger.Debug("数据推送成功!收到响应",string(msg))
    return msg
}