liuxiaolong
2019-06-26 34f6ef171cd4a3af17d5a3b7bcfc01797ae6addf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package service
 
import (
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/deliver.git"
    "fmt"
    "github.com/gogo/protobuf/proto"
    "github.com/satori/go.uuid"
    "io/ioutil"
    "time"
)
 
const (
    Url_Service_PUSH = "ipc:///tmp///webserver_2.ipc"
    Url_Service_PULL = "ipc:///tmp///webserver_1.ipc"
)
var imgPushChan chan protomsg.Recvmsg
 
func TestPushImgMsg() {
    InitService()
    imgData := readImgFile()
    fmt.Println("imgData.len:",len(imgData))
    for {
        PushImgMsg(protomsg.Recvmsg{
            Id:uuid.NewV4().String(),
            Addr:"",
            Picdata:imgData,
        })
        fmt.Println("pushed img")
        time.Sleep(5*time.Second)
    }
}
 
func readImgFile() []byte{
    filePath := "/home/user/workspace/timg.jpg"
    bytes, err := ioutil.ReadFile(filePath)
    if err !=nil {
        fmt.Println("Read img err:",err)
    }
    return bytes
}
 
func PushImgMsg(is protomsg.Recvmsg){
    imgPushChan <- is
}
 
var resultMap map[string]protomsg.SdkMessage
 
 
func InitService(){
    fmt.Println("service init!")
    imgPushChan = make(chan protomsg.Recvmsg)
    client_push := deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
    client_pull := deliver.NewClient(deliver.PushPull, Url_Service_PULL)
 
    go func() {
        for {
            select {
            case is := <- imgPushChan:
                fmt.Println("imgPushChan in")
                b, _ := proto.Marshal(&is)
                client_push.Send(b)
            default:
                //fmt.Println("no img in")
            }
        }
    }()
 
    go func() {
        //接收人脸提取结果
        for {
            resultBytes, err := client_pull.Recv()
            if err !=nil{
                fmt.Println("pull err:",err)
                continue
            }
            rMsg := protomsg.SdkMessage{}
            if err := proto.Unmarshal(resultBytes, &rMsg);err !=nil{
                fmt.Println("recv MSG:",rMsg)
                resultMap[rMsg.Cid] = rMsg
            }
 
        }
    }()
 
}