private static void WriteBulkString(Stream stream, RespValue value) { if (value.IsNull()) { WriteNullable(stream, '$'); } else { WriteBytes(stream, value, '$', true); } }
private static void WriteRespValue(Stream stream, RespValue respValue) { switch (respValue.Type) { case RespValueType.SimpleString: WriteSimpleString(stream, respValue); break; case RespValueType.Error: WriteErrorString(stream, respValue); break; case RespValueType.BulkString: WriteBulkString(stream, respValue); break; case RespValueType.Array: { if (respValue.IsNull()) { WriteNullable(stream, '*'); } else { var respValues = respValue.GetItems(); WriteHeader(stream, '*'); WriteInt(stream, respValues.Length); WriteCrLf(stream); foreach (var item in respValues) WriteRespValue(stream, item); } break; } case RespValueType.Integer: { WriteInteger(stream, respValue); break; } default: throw new ArgumentOutOfRangeException("respValue", respValue.Type.ToString()); } }