summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/client/tcpclient.go39
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)
+ }
+}