diff options
| author | Paul Buetow <paul@buetow.org> | 2023-06-10 12:19:13 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2023-06-10 12:19:13 +0300 |
| commit | 5c43de068a5d44c77b77c56f9e5570b392549888 (patch) | |
| tree | 2092a89ae1ed2d3a1511f8b734c4336878d1540b | |
| parent | eaf6bae9f8b493b01be5182c6285bc20887bd5de (diff) | |
add tcpclient.go
| -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) + } +} |
