CSharpUtils.Web._45.Streams.MixedReaderAsync.ReadBytesAsync C# (CSharp) Метод

ReadBytesAsync() публичный Метод

public ReadBytesAsync ( int NumberOfBytes ) : Task
NumberOfBytes int
Результат Task
		public async Task<byte[]> ReadBytesAsync(int NumberOfBytes)
		{
			await EnsureDataAsync(NumberOfBytes);
			return Buffer.Consume(NumberOfBytes);
		}

Usage Example

Пример #1
0
		async protected Task<object> ReadValue(MixedReaderAsync MixedReaderAsync)
		{
			var FirstLine = Encoding.ASCII.GetString(await MixedReaderAsync.ReadBytesUntilAsync((byte)'\r'));
			await MixedReaderAsync.SkipBytesAsync(1);

			switch (FirstLine[0])
			{
				// Status reply
				case '+': return FirstLine.Substring(1);
				// Error reply
				case '-': throw (new RedisResponseException(FirstLine.Substring(1)));
				// Integer reply
				case ':': return Convert.ToInt64(FirstLine.Substring(1));
				// Bulk replies
				case '$':
					var BytesToRead = Convert.ToInt32(FirstLine.Substring(1));
					if (BytesToRead == -1) return null;
					var Data = await MixedReaderAsync.ReadBytesAsync(BytesToRead);
					await MixedReaderAsync.SkipBytesAsync(2);
					return Encoding.GetString(Data);
				case '*':
					var BulksToRead = Convert.ToInt64(FirstLine.Substring(1));
					var Bulks = new object[BulksToRead];
					for (int n = 0; n < BulksToRead; n++)
					{
						Bulks[n] = await ReadValue(MixedReaderAsync);
					}
					return Bulks;

				default:
					throw(new RedisResponseException("Unknown param type '" + FirstLine[0] + "'"));
			}
		}