in tool/TeamCity.Docker/StreamService.cs [17:55]
public async Task<Result> Copy(Stream sourceStream, Stream targetStream, string description)
{
if (sourceStream == null)
{
throw new ArgumentNullException(nameof(sourceStream));
}
if (targetStream == null)
{
throw new ArgumentNullException(nameof(targetStream));
}
if (description == null)
{
throw new ArgumentNullException(nameof(description));
}
var buffer = ArrayPool<byte>.Shared.Rent(0xffff);
while (true)
{
try
{
var bytes = await sourceStream.ReadAsync(buffer, 0, buffer.Length);
if (bytes <= 0)
{
break;
}
await targetStream.WriteAsync(buffer, 0, bytes);
}
catch (Exception ex)
{
_logger.Log($"{description}: {ex.Message}", Result.Error);
return Result.Error;
}
}
return Result.Success;
}