diff options
| -rw-r--r-- | main.go | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -118,11 +118,19 @@ func handleConnection(conn net.Conn) { command := strings.ToUpper(args[0]) - if handler, ok := baseCommandRegistry[command]; ok { - conn.Write(serializeRESP(handler(args))) - } else { - conn.Write(serializeRESP(errors.New("unknown command"))) - } + switch { + case baseCommandRegistry[command] != nil: + handler := baseCommandRegistry[command] + conn.Write(serializeRESP(handler(args))) + + case connectionCommandRegistry[command] != nil: + handler := connectionCommandRegistry[command] + handler(conn, args) + + default: + errMsg := fmt.Sprintf("ERR unknown command '%s'", command) + conn.Write(serializeRESP(errors.New(errMsg))) + } } }
\ No newline at end of file |
