| | |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/valib/godraw.git" |
| | | |
| | | "basic.com/valib/deliver.git" |
| | | "github.com/gogo/protobuf/proto" |
| | | |
| | | "nanomsg.org/go-mangos" |
| | | "nanomsg.org/go-mangos/protocol/rep" |
| | | "nanomsg.org/go-mangos/transport/ipc" |
| | | "nanomsg.org/go-mangos/transport/tcp" |
| | | ) |
| | | |
| | | type reid struct { |
| | |
| | | func Run(ctx context.Context, i interface{}) { |
| | | s := i.(*reid) |
| | | |
| | | c := deliver.NewClient(deliver.ReqRep, s.ipc) |
| | | |
| | | sendTry := 0 |
| | | recvTry := 0 |
| | | maxTry := 30 |
| | | |
| | | var msg []byte |
| | | var sock mangos.Socket |
| | | var err error |
| | | var msg []byte |
| | | |
| | | for { |
| | | if sock, err = rep.NewSocket(); err != nil { |
| | | s.fnLogger("can't get new rep socket: ", err) |
| | | time.Sleep(5 * time.Millisecond) |
| | | } else { |
| | | break |
| | | } |
| | | } |
| | | |
| | | sock.AddTransport(ipc.NewTransport()) |
| | | sock.AddTransport(tcp.NewTransport()) |
| | | |
| | | for { |
| | | if err = sock.Listen(s.ipc); err != nil { |
| | | s.fnLogger("can't listen on rep socket: ", err) |
| | | time.Sleep(5 * time.Millisecond) |
| | | } else { |
| | | break |
| | | } |
| | | } |
| | | |
| | | for { |
| | | select { |
| | | case <-ctx.Done(): |
| | | sock.Close() |
| | | return |
| | | default: |
| | | |
| | | for { |
| | | msg, err = c.Recv() |
| | | if err == nil { |
| | | recvTry = 0 |
| | | break |
| | | } |
| | | recvTry++ |
| | | if recvTry > maxTry { |
| | | break |
| | | } |
| | | if msg, err = sock.Recv(); err != nil { |
| | | s.fnLogger("REID~~~~~~Recv From HumanTrack error: ", err) |
| | | time.Sleep(5 * time.Millisecond) |
| | | continue |
| | | } |
| | | |
| | | if recvTry > maxTry { |
| | | recvTry = 0 |
| | | continue |
| | | } |
| | | |
| | |
| | | buf := float32SliceAsByteSlice(feat) |
| | | ioutil.WriteFile("./reid-feat-byte.txt", buf, 0644) |
| | | |
| | | for { |
| | | err = c.Send(buf) |
| | | if err == nil { |
| | | sendTry = 0 |
| | | break |
| | | } |
| | | if sendTry > maxTry { |
| | | sendTry = 0 |
| | | s.fnLogger("REID~~~~~~Send HumanTrack try: ", maxTry) |
| | | break |
| | | } |
| | | if err = sock.Send(buf); err != nil { |
| | | s.fnLogger("REID~~~~~~Send HumanTrack error: ", err) |
| | | time.Sleep(5 * time.Millisecond) |
| | | continue |
| | | } |
| | | |
| | | } |