Skip to content

Commit 7e2b9cd

Browse files
committed
[feature] Add a small command line referee client for testing
1 parent 100b0fc commit 7e2b9cd

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

cmd/ssl-ref-client/main.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"flag"
6+
"github.com/RoboCup-SSL/ssl-game-controller/pkg/refproto"
7+
"github.com/golang/protobuf/proto"
8+
"log"
9+
"net"
10+
"time"
11+
)
12+
13+
const maxDatagramSize = 8192
14+
15+
var refereeAddress = flag.String("address", "224.5.23.1:10003", "The multicast address of ssl-game-controller, default: 224.5.23.1:10003")
16+
17+
func main() {
18+
flag.Parse()
19+
20+
addr, err := net.ResolveUDPAddr("udp", *refereeAddress)
21+
if err != nil {
22+
log.Fatal(err)
23+
}
24+
conn, err := net.ListenMulticastUDP("udp", nil, addr)
25+
if err != nil {
26+
log.Fatal(err)
27+
}
28+
29+
conn.SetReadBuffer(maxDatagramSize)
30+
log.Println("Receiving from", *refereeAddress)
31+
32+
b := make([]byte, maxDatagramSize)
33+
for {
34+
n, err := conn.Read(b)
35+
if err != nil {
36+
log.Print("Could not read", err)
37+
time.Sleep(1 * time.Second)
38+
continue
39+
}
40+
if n >= maxDatagramSize {
41+
log.Fatal("Buffer size too small")
42+
}
43+
refMsg := refproto.Referee{}
44+
proto.Unmarshal(b, &refMsg)
45+
46+
b, err := json.Marshal(refMsg)
47+
if err != nil {
48+
log.Fatal(err)
49+
}
50+
log.Print(string(b))
51+
}
52+
}

internal/app/controller/publisher.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func NewPublisher(address string) (publisher Publisher, err error) {
2828
return
2929
}
3030

31-
conn.SetReadBuffer(maxDatagramSize)
31+
conn.SetWriteBuffer(maxDatagramSize)
3232
log.Println("Publishing to", address)
3333

3434
publisher.conn = conn

0 commit comments

Comments
 (0)