xP: use buffered reads

This commit is contained in:
2022-09-14 07:10:49 +02:00
parent c1d2e38840
commit 92f2f6895b

View File

@@ -4,6 +4,7 @@
package main
import (
"bufio"
"context"
"encoding/binary"
"encoding/json"
@@ -27,14 +28,14 @@ var (
// -----------------------------------------------------------------------------
func relayReadJSON(conn net.Conn) []byte {
func relayReadJSON(r io.Reader) []byte {
var length uint32
if err := binary.Read(conn, binary.BigEndian, &length); err != nil {
if err := binary.Read(r, binary.BigEndian, &length); err != nil {
log.Println("Event receive failed: " + err.Error())
return nil
}
b := make([]byte, length)
if _, err := io.ReadFull(conn, b); err != nil {
if _, err := io.ReadFull(r, b); err != nil {
log.Println("Event receive failed: " + err.Error())
return nil
}
@@ -60,10 +61,11 @@ func relayReadJSON(conn net.Conn) []byte {
func relayMakeReceiver(ctx context.Context, conn net.Conn) <-chan []byte {
p := make(chan []byte, 1)
r := bufio.NewReader(conn)
go func() {
defer close(p)
for {
j := relayReadJSON(conn)
j := relayReadJSON(r)
if j == nil {
return
}