public async Task Copy()

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;
        }