diff options
| -rw-r--r-- | internal/client/tcpclient.go | 39 |
1 files changed, 39 insertions, 0 deletions
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) + } +} |
