aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/main.go b/main.go
index 570b512..a7f6d47 100644
--- a/main.go
+++ b/main.go
@@ -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