From f13e3d26f51832ce1577947ab0ffcca8848a61c5 Mon Sep 17 00:00:00 2001 From: Marcelo Pereira Date: Sat, 19 Jun 2021 17:44:41 +0200 Subject: [PATCH] Remove useless function and exit on Ctrl+D = EOF --- client/client.go | 3 +++ server/server.go | 24 ++++++++++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/client/client.go b/client/client.go index 1df0e3a..a7faa9b 100644 --- a/client/client.go +++ b/client/client.go @@ -70,6 +70,9 @@ func readInput(sendCh chan []byte) { msg := fmt.Sprintf("%v\n", s.Text()) sendCh <- []byte(msg) } + if s.Err() == nil { + os.Exit(0) + } } func (c *Client) readIncoming(rcvCh chan packet, conn net.Conn) { diff --git a/server/server.go b/server/server.go index b2344a1..8ac6639 100644 --- a/server/server.go +++ b/server/server.go @@ -20,7 +20,6 @@ const ( type client struct { id string conn net.Conn - sndChannel chan []byte rcvChannel chan packet } @@ -40,7 +39,7 @@ type packet struct { func New(username string) Server { cs := make([]*client, 0, 10) ch := make(chan packet, 50) - prompt := fmt.Sprintf("%s%s%s>%s ", bold, lGreen, username, string(reset)) + prompt := fmt.Sprintf("%s%s%s>%s ", bold, lGreen, username, reset) promptDelete := strings.Repeat("\b", len(prompt)) return Server{username, cs, ch, prompt, promptDelete} } @@ -56,27 +55,19 @@ func (s *Server) Start(url string) { go s.readInput() // go s.pollConns() + fmt.Print(s.prompt) for { conn, err := ln.Accept() if err != nil { fmt.Printf("Failed to accept connection: %v", err) } else { - sndCh := make(chan []byte, 50) - c := client{conn: conn, sndChannel: sndCh, rcvChannel: s.rcvChannel} + c := client{conn: conn, rcvChannel: s.rcvChannel} s.clients = append(s.clients, &c) - go handleConn(&c) + go c.readIncoming() } } } -func handleConn(c *client) { - go c.readIncoming() - - for msg := range c.sndChannel { - c.conn.Write(msg) - } -} - func (s *Server) pollConns() { for { for _, c := range s.clients { @@ -117,6 +108,9 @@ func (s *Server) readInput() { s.rcvChannel <- packet{s.id, sca.Text()} fmt.Print(s.prompt) } + if sca.Err() == nil { + os.Exit(0) + } } func (c *client) readIncoming() { @@ -135,7 +129,7 @@ func (s *Server) startBroadcast() { for pk := range s.rcvChannel { if pk.id != s.id { fmt.Print(s.promptDelete) - msg := fmt.Sprintf("%s%s%s>%s %s", string(bold), string(lYellow), pk.id, string(reset), pk.msg) + msg := fmt.Sprintf("%s%s%s>%s %s", bold, lYellow, pk.id, reset, pk.msg) fmt.Println(msg) fmt.Print(s.prompt) } @@ -167,6 +161,8 @@ func processCmd(c *client, msg string) { } return } + case "info": + return default: goto FAIL_CMD }