private RedisResult ReadSingleResult()
{
byte b = ReadByteOrFail();
switch ((char)b)
{
case '+':
return(RedisResult.Message(ReadBytesToCrlf()));
case '-':
return(RedisResult.Error(ReadStringToCrlf()));
case ':':
return(RedisResult.Integer(ReadInt64()));
case '$':
return(RedisResult.Bytes(ReadBulkBytes()));
case '*':
var count = (int)ReadInt64();
if (count == -1)
{
return(RedisResult.Multi(null));
}
var inner = new RedisResult[count];
for (int i = 0; i < count; i++)
{
inner[i] = ReadSingleResult();
}
return(RedisResult.Multi(inner));
default:
throw new RedisException("Not expecting header: &x" + b.ToString("x2"));
}
}