StreamSocketOutput WriteAsync as async

This commit is contained in:
Ben Adams 2016-04-25 09:52:33 +01:00
parent 179b57b01f
commit 4626833e51
1 changed files with 18 additions and 1 deletions

View File

@ -73,9 +73,26 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Filter
public Task WriteAsync(ArraySegment<byte> buffer, bool chunk, CancellationToken cancellationToken)
{
// TODO: Use _outputStream.WriteAsync
#if NET451
Write(buffer, chunk);
return TaskUtilities.CompletedTask;
#else
if (chunk && buffer.Array != null)
{
return WriteAsyncChunked(buffer, cancellationToken);
}
return _outputStream.WriteAsync(buffer.Array ?? _nullBuffer, buffer.Offset, buffer.Count, cancellationToken);
#endif
}
private async Task WriteAsyncChunked(ArraySegment<byte> buffer, CancellationToken cancellationToken)
{
var beginChunkBytes = ChunkWriter.BeginChunkBytes(buffer.Count);
await _outputStream.WriteAsync(beginChunkBytes.Array, beginChunkBytes.Offset, beginChunkBytes.Count, cancellationToken);
await _outputStream.WriteAsync(buffer.Array ?? _nullBuffer, buffer.Offset, buffer.Count, cancellationToken);
await _outputStream.WriteAsync(_endChunkBytes, 0, _endChunkBytes.Length, cancellationToken);
}
public MemoryPoolIterator ProducingStart()