summaryrefslogtreecommitdiff
path: root/internal/tcpserver.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2023-05-22 00:09:51 +0300
committerPaul Buetow <paul@buetow.org>2023-05-22 00:09:51 +0300
commitbb79f9f50a89507fb7db6d1d4c62630e431952f9 (patch)
treea52d163f864b0d3a606023a9d0f864c577c30142 /internal/tcpserver.go
parent14e73217895307983ae762cb5ffd29ac45d8d1d1 (diff)
move server and client into their own packages
Diffstat (limited to 'internal/tcpserver.go')
-rw-r--r--internal/tcpserver.go68
1 files changed, 0 insertions, 68 deletions
diff --git a/internal/tcpserver.go b/internal/tcpserver.go
deleted file mode 100644
index b1fd11e..0000000
--- a/internal/tcpserver.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package internal
-
-import (
- "bufio"
- "context"
- "fmt"
- "log"
- "net"
-
- "codeberg.org/snonux/gorum/internal/config"
- "codeberg.org/snonux/gorum/internal/vote"
-)
-
-func startTcpServer(ctx context.Context, conf config.Config,
- ch chan<- vote.Vote) error {
-
- listener, err := net.Listen("tcp", conf.Address)
- if err != nil {
- return fmt.Errorf("Error starting TCP server: %s", err.Error())
- }
- defer listener.Close()
-
- log.Printf("TCP server started on %s\n", conf.Address)
-
- for {
- conn, err := listener.Accept()
- if err != nil {
- log.Printf("Error accepting connection: %s\n", err.Error())
- continue
- }
-
- if !conf.IsParticipantWithLookup(conn.RemoteAddr().String(), net.LookupIP) {
- log.Printf("Denying connection, peer not a participant: %v\n", conn.RemoteAddr().String())
- conn.Close()
- continue
- }
-
- log.Printf("Client connected: %s\n", conn.RemoteAddr().String())
- go handleConnection(ctx, conf, conn, ch)
- }
-}
-
-func handleConnection(ctx context.Context, conf config.Config,
- conn net.Conn, ch chan<- vote.Vote) {
-
- defer conn.Close()
- remoteAddr := conn.RemoteAddr().String()
-
- reader := bufio.NewReader(conn)
- for {
- select {
- case <-ctx.Done():
- log.Printf("Server context done, disconnecting client %s\n", remoteAddr)
- return
- default:
- message, err := reader.ReadString('\n')
- if err != nil {
- log.Printf("Client %s disconnected: %s\n", remoteAddr, err.Error())
- return
- }
-
- log.Printf("Received message from %s: %s", remoteAddr, message)
- ch <- vote.New(conf, remoteAddr, message)
-
- conn.Write([]byte(message))
- }
- }
-}