summaryrefslogtreecommitdiff
path: root/internal/server/tcpserver.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2023-06-18 13:40:26 +0300
committerPaul Buetow <paul@buetow.org>2023-06-18 13:40:26 +0300
commit93b3e63e89594b2b7a05b791a5cfc366f10c763b (patch)
treeec2b53bb30393481ce5d6c969bca62e577199ce0 /internal/server/tcpserver.go
parente3c903c49c798531124a1c59859f47d04d4534b9 (diff)
add universal tcp message reader and writer
Diffstat (limited to 'internal/server/tcpserver.go')
-rw-r--r--internal/server/tcpserver.go17
1 files changed, 7 insertions, 10 deletions
diff --git a/internal/server/tcpserver.go b/internal/server/tcpserver.go
index b6d2ede..21324c3 100644
--- a/internal/server/tcpserver.go
+++ b/internal/server/tcpserver.go
@@ -1,13 +1,13 @@
package server
import (
- "bufio"
"context"
"fmt"
"log"
"net"
"codeberg.org/snonux/gorum/internal/config"
+ "codeberg.org/snonux/gorum/internal/tcp"
)
type handlerCb func(message string) string
@@ -41,11 +41,7 @@ func tcpServerRun(ctx context.Context, conf config.Config, cb handlerCb) error {
func handleConnection(ctx context.Context, conn net.Conn, cb handlerCb) {
defer conn.Close()
-
- var (
- remoteAddr = conn.RemoteAddr().String()
- reader = bufio.NewReader(conn)
- )
+ remoteAddr := conn.RemoteAddr().String()
for {
select {
@@ -53,15 +49,16 @@ func handleConnection(ctx context.Context, conn net.Conn, cb handlerCb) {
log.Println("server: context done, disconnecting client:", remoteAddr)
return
default:
- message, err := reader.ReadString('\n')
+ message, err := tcp.ReadStr(conn)
if err != nil {
- log.Println("server: client disconnected:", remoteAddr, err)
+ log.Println("server: unable to read message", remoteAddr, err)
return
}
- log.Println("server: received message", remoteAddr, message)
+ log.Println("server: received message", message, "from", remoteAddr)
response := cb(message)
- if _, err := conn.Write([]byte(response)); err != nil {
+
+ if err := tcp.WriteStr(conn, response); err != nil {
log.Println("error:", err)
}
}