User-2103114970 posted
Hi,
Could you please help me i am writing middleware for request and response .
i was using stream but need to convert PipeWriter and PipeReader.
Could you please help me how read body from PipeWriter .
i have written code for PipeReader.
private async Task<string> GetStringFromPipeReader(PipeReader reader)
{
StringBuilder stringBuilder = new StringBuilder();
while (true)
{
// await some data being available
ReadResult read = await reader.ReadAsync();
ReadOnlySequence<byte> buffer = read.Buffer;
// check whether we've reached the end
// and processed everything
if (buffer.IsEmpty && read.IsCompleted)
break; // exit loop
// process what we received
foreach (var segment in buffer)
{
string asciString = Encoding.ASCII.GetString(
segment.Span);
stringBuilder.Append(asciString);
}
// tell the pipe that we used everything
// reader.AdvanceTo(buffer.End);
reader.AdvanceTo(buffer.Start, buffer.End);
if (read.IsCompleted)
{
break;
}
}
return Convert.ToString(stringBuilder);
}
private async Task WriteSomeDataAsync(PipeWriter writer, string jsonValue)
{
// use an oversized size guess
Memory<byte> workspace = writer.GetMemory();
// write the data to the workspace
int bytes = Encoding.ASCII.GetBytes(
jsonValue, workspace.Span);
// tell the pipe how much of the workspace
// we actually want to commit
writer.Advance(bytes);
// this is **not** the same as Stream.Flush!
await writer.FlushAsync();
}
Thanks,
Konanki