Use Pipelines in PlaintextApp sample (#7227)
This commit is contained in:
parent
0f22452de2
commit
44b2768307
|
|
@ -2,7 +2,9 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.IO.Pipelines;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
|
@ -18,13 +20,14 @@ namespace PlaintextApp
|
||||||
{
|
{
|
||||||
app.Run((httpContext) =>
|
app.Run((httpContext) =>
|
||||||
{
|
{
|
||||||
|
var payload = _helloWorldBytes;
|
||||||
var response = httpContext.Response;
|
var response = httpContext.Response;
|
||||||
|
|
||||||
response.StatusCode = 200;
|
response.StatusCode = 200;
|
||||||
response.ContentType = "text/plain";
|
response.ContentType = "text/plain";
|
||||||
|
response.ContentLength = payload.Length;
|
||||||
|
|
||||||
var helloWorld = _helloWorldBytes;
|
return response.BodyPipe.WriteAsync(payload).GetAsTask();
|
||||||
response.ContentLength = helloWorld.Length;
|
|
||||||
return response.Body.WriteAsync(helloWorld, 0, helloWorld.Length);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,4 +45,22 @@ namespace PlaintextApp
|
||||||
return host.RunAsync();
|
return host.RunAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static class ValueTaskExtensions
|
||||||
|
{
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static Task GetAsTask(this in ValueTask<FlushResult> valueTask)
|
||||||
|
{
|
||||||
|
if (valueTask.IsCompletedSuccessfully)
|
||||||
|
{
|
||||||
|
// Signal consumption to the IValueTaskSource
|
||||||
|
valueTask.GetAwaiter().GetResult();
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return valueTask.AsTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue