func serveClient(client *clients.Client) { conn := client.Conn rr := redis.NewRespReader(conn) outer: for { var command string var args []string m := rr.Read() if m.IsType(redis.IOErr) { log.L.Debug(client.Sprintf("client connection error %q", m.Err)) if len(client.Queues) > 0 { consumers.UpdateQueues(client, []string{}) } client.Close() return } parts, err := m.Array() if err != nil { log.L.Debug(client.Sprintf("error parsing to array: %q", err)) continue outer } for i := range parts { val, err := parts[i].Str() if err != nil { log.L.Debug(client.Sprintf("invalid command part %#v: %s", parts[i], err)) invalidCmdResp.WriteTo(conn) continue outer } if i == 0 { command = val } else { args = append(args, val) } } log.L.Debug(client.Sprintf("%s %#v", command, args)) commands.Dispatch(client, command, args) } }
func qregister(client *clients.Client, args []string) (interface{}, error) { err := consumers.UpdateQueues(client, args) if err != nil { return nil, fmt.Errorf("QREGISTER UpdateQueues: %s", err) } client.Queues = args return okSS, nil }