fromCommandWritable function
Convert a Redis RESP command string to a list of arguments.
e.g. *3\r\n\$3\r\nset\r\n\$3\r\nkey\r\n\$5\r\nvalue\r\n
-> ['set', 'key', 'value']
Mainly useful for testing purposes or emulating Redis server behavior.
Implementation
List<String> fromCommandWritable(String redisProtocolString) {
final result = <String>[];
var partial =
redisProtocolString.substring(redisProtocolString.indexOf('\r\n') + 2);
while (partial.isNotEmpty) {
final argStart = partial.indexOf('\r\n') + 2;
final argLengthSlice = partial.substring(1 /* skip "$" */, argStart - 2);
final argLength = int.parse(argLengthSlice);
final argEnd = argStart + argLength;
result.add(partial.substring(argStart, argStart + argLength));
if (partial.isNotEmpty) {
partial = partial.substring(argEnd + 2);
}
}
return result;
}