From 5c43de068a5d44c77b77c56f9e5570b392549888 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 10 Jun 2023 12:19:13 +0300 Subject: add tcpclient.go --- internal/client/tcpclient.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 internal/client/tcpclient.go diff --git a/internal/client/tcpclient.go b/internal/client/tcpclient.go new file mode 100644 index 0000000..356d259 --- /dev/null +++ b/internal/client/tcpclient.go @@ -0,0 +1,39 @@ +package client + +import ( + "context" + "fmt" + "io/ioutil" + "log" + "net" + "strings" +) + +func tcpClientRun(ctx context.Context, node string, ch <-chan []string) error { + conn, err := net.Dial("tcp", node) + if err != nil { + return err + } + defer conn.Close() + + for { + votes, ok := <-ch + if !ok { + return fmt.Errorf("channel closed - breaking tcpClientRun loop") + } + + message := strings.Join(votes, " ") + log.Println(packageStr, "sending", message, "to node", node) + _, err = conn.Write([]byte(message)) + if err != nil { + return err + } + + response, err := ioutil.ReadAll(conn) + if err != nil { + return err + } + + log.Println(packageStr, "received", string(response), "from node", node) + } +} -- cgit v1.2.3