// // Exception audit: // // Verdict // Exception wrapping is required. // // Rationale // `java.io.InputStream.close()` throws an exception, see: // // https://developer.android.com/reference/java/io/InputStream?hl=en // protected override void Dispose(bool disposing) { if (disposing && BaseInputStream != null) { try { BaseFileChannel = null; BaseInputStream.Close(); BaseInputStream.Dispose(); BaseInputStream = null; } catch (Java.IO.IOException ex) when(JNIEnv.ShouldWrapJavaException(ex)) { throw new IOException(ex.Message, ex); } } }
public InputStreamInvoker(Java.IO.InputStream stream) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } BaseInputStream = stream; Java.IO.FileInputStream fileStream = stream as Java.IO.FileInputStream; if (fileStream != null) { BaseFileChannel = fileStream.Channel; } }
public ChannelStream(ParcelFileDescriptor parcelFileDescriptor, string mode) { _mode = mode; ParcelFileDescriptor = parcelFileDescriptor; if (mode.Contains("w")) { var outStream = new Java.IO.FileOutputStream(parcelFileDescriptor.FileDescriptor); Channel = outStream.Channel; _stream = outStream; } else { var inStream = new Java.IO.FileInputStream(parcelFileDescriptor.FileDescriptor); Channel = inStream.Channel; _stream = inStream; } }