Files
webrtc/main.go
2023-02-12 18:27:52 -08:00

83 lines
1.4 KiB
Go

package main
import (
"fmt"
zmq "github.com/pebbe/zmq4"
)
type Service struct {
name string
port int
should_log bool
frequency int
decimation int
}
var services = []Service{
{"roadEncodeData", 8062, false, 20, -1},
{"driverEncodeData", 8063, false, 20, -1},
{"wideRoadEncodeData", 8064, false, 20, -1},
}
func getPort(endpoint string) int {
port := -1
for _, s := range services {
if s.name == endpoint {
port = s.port
break
}
}
if port < 0 {
panic("invalid endpoint")
}
return port
}
func drainSock(socket *zmq.Socket, waitForOne bool) [][]byte {
var ret [][]byte
for {
var dat []byte
var err error
if waitForOne && len(ret) == 0 {
dat, err = socket.RecvBytes(0)
} else {
dat, err = socket.RecvBytes(zmq.DONTWAIT)
}
if err != nil {
break
}
ret = append(ret, dat)
}
return ret
}
func main() {
// Create a new context
context, _ := zmq.NewContext()
defer context.Term()
// Connect to the socket
subscriber, _ := context.NewSocket(zmq.SUB)
defer subscriber.Close()
service := "roadEncodeData"
port := getPort(service)
out := fmt.Sprintf("tcp://tici:%d", port)
fmt.Println(out)
subscriber.SetSubscribe("")
subscriber.Connect(out)
for {
var frame []byte
for frame == nil {
msgs := drainSock(subscriber, true)
if len(msgs) > 0 {
frame = msgs[0]
}
}
fmt.Println("Received frame with size:", len(frame), "bytes")
}
}