From b646abffb8b1113125c311ee76c02ea71bb4353e Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Thu, 11 Dec 2014 22:10:06 -0800 Subject: [PATCH] Improve /list --- README.md | 4 ++-- client.go | 3 ++- history.go | 1 + server.go | 6 +++++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1c2e2e1..abee77e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Coming real soon. * [x] Welcome message. * [x] set term width properly * [x] client map rather than list -* [ ] backfill chat history +* [x] backfill chat history * [ ] tab completion * [ ] /kick * [x] /help @@ -16,4 +16,4 @@ Coming real soon. * [x] /list * [x] /nick * [ ] pubkey fingerprint -* [ ] truncate usernames +* [x] truncate usernames diff --git a/client.go b/client.go index b16a420..705efc6 100644 --- a/client.go +++ b/client.go @@ -124,7 +124,8 @@ func (c *Client) handleShell(channel ssh.Channel) { c.Msg <- fmt.Sprintf("-> Missing $NAME from: /whois $NAME\r\n") } case "/list": - c.Msg <- fmt.Sprintf("-> Connected: %s\r\n", strings.Join(c.Server.List(nil), ",")) + names := c.Server.List(nil) + c.Msg <- fmt.Sprintf("-> %d connected: %s\r\n", len(names), strings.Join(names, ",")) default: c.Msg <- fmt.Sprintf("-> Invalid command: %s\r\n", line) } diff --git a/history.go b/history.go index 1f5c44a..c5c0c5c 100644 --- a/history.go +++ b/history.go @@ -1,3 +1,4 @@ +// TODO: Split this out into its own module, it's kinda neat. package main type History struct { diff --git a/server.go b/server.go index 430087b..702296b 100644 --- a/server.go +++ b/server.go @@ -57,8 +57,12 @@ func NewServer(privateKey []byte) (*Server, error) { return &server, nil } +func (s *Server) Len() int { + return len(s.clients) +} + func (s *Server) Broadcast(msg string, except *Client) { - logger.Debugf("Broadcast to %d: %s", len(s.clients), strings.TrimRight(msg, "\r\n")) + logger.Debugf("Broadcast to %d: %s", s.Len(), strings.TrimRight(msg, "\r\n")) s.history.Add(msg) for _, client := range s.clients {