diff options
| author | Paul Buetow <paul@buetow.org> | 2023-05-22 00:09:51 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2023-05-22 00:09:51 +0300 |
| commit | bb79f9f50a89507fb7db6d1d4c62630e431952f9 (patch) | |
| tree | a52d163f864b0d3a606023a9d0f864c577c30142 /internal/tcpserver.go | |
| parent | 14e73217895307983ae762cb5ffd29ac45d8d1d1 (diff) | |
move server and client into their own packages
Diffstat (limited to 'internal/tcpserver.go')
| -rw-r--r-- | internal/tcpserver.go | 68 |
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)) - } - } -} |
