From 92f2f6895b41ecb60e3aaf59e3ea5bc20d9cd314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Wed, 14 Sep 2022 07:10:49 +0200 Subject: [PATCH] xP: use buffered reads --- xP/xP.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/xP/xP.go b/xP/xP.go index 2d6e096..7e0285c 100644 --- a/xP/xP.go +++ b/xP/xP.go @@ -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 }