diff --git a/src/System.IO/pkg/System.IO.pkgproj b/src/System.IO/pkg/System.IO.pkgproj index 9a11debbdd39..25d7ae99fe77 100644 --- a/src/System.IO/pkg/System.IO.pkgproj +++ b/src/System.IO/pkg/System.IO.pkgproj @@ -2,7 +2,7 @@ - + net463;netcoreapp1.1;uap10.1;$(AllXamarinFrameworks) diff --git a/src/System.IO/ref/System.IO.builds b/src/System.IO/ref/System.IO.builds new file mode 100644 index 000000000000..f6840fd8a185 --- /dev/null +++ b/src/System.IO/ref/System.IO.builds @@ -0,0 +1,11 @@ + + + + + + + netcoreapp1.1 + + + + diff --git a/src/System.IO/ref/System.IO.cs b/src/System.IO/ref/System.IO.cs index 9f4f73d6dd4e..937400a758c0 100644 --- a/src/System.IO/ref/System.IO.cs +++ b/src/System.IO/ref/System.IO.cs @@ -152,6 +152,10 @@ public override void SetLength(long value) { } public override void Write(byte[] array, int offset, int count) { } public override System.Threading.Tasks.Task WriteAsync(byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) { return default(System.Threading.Tasks.Task); } public override void WriteByte(byte value) { } +#if netcoreapp11 + public Stream UnderlyingStream { get { return default(Stream); } } + public int BufferSize { get { return 0; } } +#endif } public partial class EndOfStreamException : System.IO.IOException { diff --git a/src/System.IO/ref/System.IO.csproj b/src/System.IO/ref/System.IO.csproj index b1fcb23659aa..669a2321fa2d 100644 --- a/src/System.IO/ref/System.IO.csproj +++ b/src/System.IO/ref/System.IO.csproj @@ -4,15 +4,12 @@ Library .NETStandard,Version=v1.7 - netstandard1.7;uap10.1 + netstandard1.7;uap10.1 + $(DefineConstants);netcoreapp11 - - - - diff --git a/src/System.IO/ref/project.json b/src/System.IO/ref/project.json index b334053605a7..5665dca85416 100644 --- a/src/System.IO/ref/project.json +++ b/src/System.IO/ref/project.json @@ -4,10 +4,7 @@ "System.Text.Encoding": "4.4.0-beta-24611-02" }, "frameworks": { - "netstandard1.7": { - "imports": [ - "dotnet5.8" - ] - } + "netstandard1.7": {}, + "netcoreapp1.1": {}, } } diff --git a/src/System.IO/src/System/IO/BufferedStream.cs b/src/System.IO/src/System/IO/BufferedStream.cs index 2fd8d7338ca4..ed6b8dab2262 100644 --- a/src/System.IO/src/System/IO/BufferedStream.cs +++ b/src/System.IO/src/System/IO/BufferedStream.cs @@ -147,6 +147,22 @@ private void EnsureBufferAllocated() _buffer = new byte[_bufferSize]; } + public Stream UnderlyingStream + { + get + { + return _stream; + } + } + + public int BufferSize + { + get + { + return _bufferSize; + } + } + public override bool CanRead { [Pure] diff --git a/src/System.IO/tests/BufferedStream/BufferedStreamTests.netcoreapp1.1.cs b/src/System.IO/tests/BufferedStream/BufferedStreamTests.netcoreapp1.1.cs new file mode 100644 index 000000000000..01ad4e0e3a46 --- /dev/null +++ b/src/System.IO/tests/BufferedStream/BufferedStreamTests.netcoreapp1.1.cs @@ -0,0 +1,27 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using Xunit; + +namespace System.IO.Tests +{ + public partial class BufferedStreamTests + { + [Fact] + public void UnderlyingStream() + { + var underlyingStream = new MemoryStream(); + var bufferedStream = new BufferedStream(underlyingStream); + Assert.Same(underlyingStream, bufferedStream.UnderlyingStream); + } + + [Fact] + public void BufferSize() + { + var bufferedStream = new BufferedStream(new MemoryStream(), 1234); + Assert.Equal(1234, bufferedStream.BufferSize); + } + } +} diff --git a/src/System.IO/tests/System.IO.Tests.builds b/src/System.IO/tests/System.IO.Tests.builds index d77c341541b3..2a55ee1a1825 100644 --- a/src/System.IO/tests/System.IO.Tests.builds +++ b/src/System.IO/tests/System.IO.Tests.builds @@ -7,6 +7,10 @@ netstandard1.5 netcoreapp1.0 + + netcoreapp1.1 + netcoreapp1.1 + Windows_NT net463 diff --git a/src/System.IO/tests/System.IO.Tests.csproj b/src/System.IO/tests/System.IO.Tests.csproj index 2fb3a12186a3..1158d06a3a6c 100644 --- a/src/System.IO/tests/System.IO.Tests.csproj +++ b/src/System.IO/tests/System.IO.Tests.csproj @@ -22,6 +22,7 @@ + diff --git a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj index 3daf9bfa7742..16bffc1927a3 100644 --- a/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj +++ b/src/System.Runtime.WindowsRuntime/src/System.Runtime.WindowsRuntime.csproj @@ -99,7 +99,6 @@ Common\Interop\Windows\Interop.Libraries.cs - diff --git a/src/System.Runtime.WindowsRuntime/src/System/IO/BufferedStreamWrapper.cs b/src/System.Runtime.WindowsRuntime/src/System/IO/BufferedStreamWrapper.cs deleted file mode 100644 index afc7031595af..000000000000 --- a/src/System.Runtime.WindowsRuntime/src/System/IO/BufferedStreamWrapper.cs +++ /dev/null @@ -1,198 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.Contracts; -using System.Threading; -using System.Threading.Tasks; - -namespace System.IO -{ - /// - /// A BufferedStream wrapper which expose BufferedStream's UnderlyingStream and BufferSize - /// - internal sealed class BufferedStreamWrapper : Stream - { - private BufferedStream _bufferedStream; - private Stream _stream; // Underlying stream. Close sets _stream to null. - private readonly int _bufferSize; // Length of internal buffer (not counting the shadow buffer). - - public BufferedStreamWrapper(Stream stream, int bufferSize) - { - _bufferedStream = new BufferedStream(stream, bufferSize); - _stream = stream; - _bufferSize = bufferSize; - } - - private void EnsureNotClosed() - { - if (_bufferedStream == null) - throw new ObjectDisposedException(null, SR.ObjectDisposed_StreamClosed); - } - - internal BufferedStream bufferedStream - { - [Pure] - get - { return _bufferedStream; } - } - - internal Stream UnderlyingStream - { - [Pure] - get - { return _stream; } - } - - internal int BufferSize - { - [Pure] - get - { return _bufferSize; } - } - - public override bool CanRead - { - [Pure] - get - { return _bufferedStream != null && _bufferedStream.CanRead; } - } - - public override bool CanWrite - { - [Pure] - get - { return _bufferedStream != null && _bufferedStream.CanWrite; } - } - - public override bool CanSeek - { - [Pure] - get - { return _bufferedStream != null && _bufferedStream.CanSeek; } - } - - public override long Length - { - get - { - EnsureNotClosed(); - return _bufferedStream.Length; - } - } - - public override long Position - { - get - { - EnsureNotClosed(); - return _bufferedStream.Position; - } - set - { - EnsureNotClosed(); - _bufferedStream.Position = value; - } - } - - protected override void Dispose(bool disposing) - { - try - { - if (disposing && _bufferedStream != null) - { - _bufferedStream.Dispose(); - } - } - finally - { - _bufferedStream = null; - _stream = null; - } - } - - public override void Flush() - { - EnsureNotClosed(); - _bufferedStream.Flush(); - } - - public override Task FlushAsync(CancellationToken cancellationToken) - { - EnsureNotClosed(); - return _bufferedStream.FlushAsync(); - } - - public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state) - { - EnsureNotClosed(); - return _bufferedStream.BeginRead(buffer, offset, count, callback, state); - } - - public override int EndRead(IAsyncResult asyncResult) - { - EnsureNotClosed(); - return _bufferedStream.EndRead(asyncResult); - } - - public override int Read(byte[] array, int offset, int count) - { - EnsureNotClosed(); - return _bufferedStream.Read(array, offset, count); - } - - public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) - { - EnsureNotClosed(); - return _bufferedStream.ReadAsync(buffer, offset, count, cancellationToken); - } - - public override int ReadByte() - { - EnsureNotClosed(); - return _bufferedStream.ReadByte(); - } - - public override void Write(byte[] array, int offset, int count) - { - EnsureNotClosed(); - _bufferedStream.Write(array, offset, count); - } - - public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state) - { - EnsureNotClosed(); - return _bufferedStream.BeginWrite(buffer, offset, count, callback, state); - } - - public override void EndWrite(IAsyncResult asyncResult) - { - EnsureNotClosed(); - _bufferedStream.EndWrite(asyncResult); - } - - public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) - { - EnsureNotClosed(); - return _bufferedStream.WriteAsync(buffer, offset, count, cancellationToken); - } - - public override void WriteByte(byte value) - { - EnsureNotClosed(); - _bufferedStream.WriteByte(value); - } - - public override long Seek(long offset, SeekOrigin origin) - { - EnsureNotClosed(); - return _bufferedStream.Seek(offset, origin); - } - - public override void SetLength(long value) - { - EnsureNotClosed(); - _bufferedStream.SetLength(value); - } - } // class BufferedStreamWrapper -} // namespace diff --git a/src/System.Runtime.WindowsRuntime/src/System/IO/WindowsRuntimeStreamExtensions.cs b/src/System.Runtime.WindowsRuntime/src/System/IO/WindowsRuntimeStreamExtensions.cs index b046a0527af5..14f9733c9e35 100644 --- a/src/System.Runtime.WindowsRuntime/src/System/IO/WindowsRuntimeStreamExtensions.cs +++ b/src/System.Runtime.WindowsRuntime/src/System/IO/WindowsRuntimeStreamExtensions.cs @@ -50,7 +50,7 @@ private static void AssertMapContains(ConditionalWeakTable new BufferedStreamWrapper(WinRtToNetFxStreamAdapter.Create(wrtStr), bufferSize)); + return s_winRtToNetFxAdapterMap.GetValue(winRtStream, (wrtStr) => new BufferedStream(WinRtToNetFxStreamAdapter.Create(wrtStr), bufferSize)); } @@ -214,7 +214,7 @@ private static Stream AsStreamInternalFactoryHelper(Object windowsRuntimeStream, : WinRtToNetFxAdapterMap_GetValue(windowsRuntimeStream, bufferSize); Debug.Assert(adapter != null); - Debug.Assert((adapter is BufferedStreamWrapper && ((BufferedStreamWrapper)adapter).UnderlyingStream is WinRtToNetFxStreamAdapter) + Debug.Assert((adapter is BufferedStream && ((BufferedStream)adapter).UnderlyingStream is WinRtToNetFxStreamAdapter) || (adapter is WinRtToNetFxStreamAdapter)); if (forceBufferSize) @@ -222,7 +222,7 @@ private static Stream AsStreamInternalFactoryHelper(Object windowsRuntimeStream, WinRtToNetFxStreamAdapter actualAdapter = adapter as WinRtToNetFxStreamAdapter; if (actualAdapter == null) - actualAdapter = ((BufferedStreamWrapper)adapter).UnderlyingStream as WinRtToNetFxStreamAdapter; + actualAdapter = ((BufferedStream)adapter).UnderlyingStream as WinRtToNetFxStreamAdapter; actualAdapter.SetWonInitializationRace(); @@ -307,7 +307,7 @@ private static Object AsWindowsRuntimeStreamInternal(Stream stream) WinRtToNetFxStreamAdapter sAdptr = stream as WinRtToNetFxStreamAdapter; if (sAdptr == null) { - BufferedStreamWrapper buffAdptr = stream as BufferedStreamWrapper; + BufferedStream buffAdptr = stream as BufferedStream; if (buffAdptr != null) sAdptr = buffAdptr.UnderlyingStream as WinRtToNetFxStreamAdapter; }