Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / MS / Internal / IO / Packaging / IgnoreFlushAndCloseStream.cs / 1 / IgnoreFlushAndCloseStream.cs
//------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, 2005 // // File: IgnoreCloseAndFlushStream.cs // // Description: The class is used to wrap a given stream in a way that the Flush // and Close calls to the stream are Ignored. This stream class has been // created specifically for perf improvements for the ZipPackage. // // // History: 09/05/05 - SarjanaS - initial implementation //----------------------------------------------------------------------------- using System; using System.IO; using System.Windows; // for ExceptionStringTable namespace MS.Internal.IO.Packaging { ////// This class ignores all calls to Flush() and Close() methods /// depending on whether the IgnoreFlushAndClose property is set to true /// or false. /// internal sealed class IgnoreFlushAndCloseStream : Stream { #region Constructor ////// Constructor /// /// internal IgnoreFlushAndCloseStream(Stream stream) { if (stream == null) throw new ArgumentNullException("stream"); _stream = stream; } #endregion Constructor #region Properties ////// Member of the abstract Stream class /// ///Bool, true if the stream can be read from, else false public override bool CanRead { get { if (_disposed) return false; else return _stream.CanRead; } } ////// Member of the abstract Stream class /// ///Bool, true if the stream can be seeked, else false public override bool CanSeek { get { if (_disposed) return false; else return _stream.CanSeek; } } ////// Member of the abstract Stream class /// ///Bool, true if the stream can be written to, else false public override bool CanWrite { get { if (_disposed) return false; else return _stream.CanWrite; } } ////// Member of the abstract Stream class /// ///Long value indicating the length of the stream public override long Length { get { ThrowIfStreamDisposed(); return _stream.Length; } } ////// Member of the abstract Stream class /// ///Long value indicating the current position in the stream public override long Position { get { ThrowIfStreamDisposed(); return _stream.Position; } set { ThrowIfStreamDisposed(); _stream.Position = value; } } #endregion Properties #region Methods ////// Member of the abstract Stream class /// /// only zero is supported /// only SeekOrigin.Begin is supported ///zero public override long Seek(long offset, SeekOrigin origin) { ThrowIfStreamDisposed(); return _stream.Seek(offset, origin); } ////// Member of the abstract Stream class /// /// public override void SetLength(long newLength) { ThrowIfStreamDisposed(); _stream.SetLength(newLength); } ////// Member of the abstract Stream class /// /// /// /// ////// /// The standard Stream.Read semantics, and in particular the restoration of the current /// position in case of an exception, is implemented by the underlying stream. /// public override int Read(byte[] buffer, int offset, int count) { ThrowIfStreamDisposed(); return _stream.Read(buffer, offset, count); } ////// Member of the abstract Stream class /// /// /// /// public override void Write(byte[] buf, int offset, int count) { ThrowIfStreamDisposed(); _stream.Write(buf, offset, count); } ////// Member of the abstract Stream class /// public override void Flush() { ThrowIfStreamDisposed(); } #endregion Methods //----------------------------------------------------- // // Protected Methods // //----------------------------------------------------- ////// Dispose(bool) /// /// protected override void Dispose(bool disposing) { try { if (!_disposed) { _stream = null; _disposed = true; } } finally { base.Dispose(disposing); } } #region Private Methods private void ThrowIfStreamDisposed() { if (_disposed) throw new ObjectDisposedException(null, SR.Get(SRID.StreamObjectDisposed)); } #endregion Private Methods #region Private Variables private Stream _stream; private bool _disposed; #endregion Private Variables } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, 2005 // // File: IgnoreCloseAndFlushStream.cs // // Description: The class is used to wrap a given stream in a way that the Flush // and Close calls to the stream are Ignored. This stream class has been // created specifically for perf improvements for the ZipPackage. // // // History: 09/05/05 - SarjanaS - initial implementation //----------------------------------------------------------------------------- using System; using System.IO; using System.Windows; // for ExceptionStringTable namespace MS.Internal.IO.Packaging { ////// This class ignores all calls to Flush() and Close() methods /// depending on whether the IgnoreFlushAndClose property is set to true /// or false. /// internal sealed class IgnoreFlushAndCloseStream : Stream { #region Constructor ////// Constructor /// /// internal IgnoreFlushAndCloseStream(Stream stream) { if (stream == null) throw new ArgumentNullException("stream"); _stream = stream; } #endregion Constructor #region Properties ////// Member of the abstract Stream class /// ///Bool, true if the stream can be read from, else false public override bool CanRead { get { if (_disposed) return false; else return _stream.CanRead; } } ////// Member of the abstract Stream class /// ///Bool, true if the stream can be seeked, else false public override bool CanSeek { get { if (_disposed) return false; else return _stream.CanSeek; } } ////// Member of the abstract Stream class /// ///Bool, true if the stream can be written to, else false public override bool CanWrite { get { if (_disposed) return false; else return _stream.CanWrite; } } ////// Member of the abstract Stream class /// ///Long value indicating the length of the stream public override long Length { get { ThrowIfStreamDisposed(); return _stream.Length; } } ////// Member of the abstract Stream class /// ///Long value indicating the current position in the stream public override long Position { get { ThrowIfStreamDisposed(); return _stream.Position; } set { ThrowIfStreamDisposed(); _stream.Position = value; } } #endregion Properties #region Methods ////// Member of the abstract Stream class /// /// only zero is supported /// only SeekOrigin.Begin is supported ///zero public override long Seek(long offset, SeekOrigin origin) { ThrowIfStreamDisposed(); return _stream.Seek(offset, origin); } ////// Member of the abstract Stream class /// /// public override void SetLength(long newLength) { ThrowIfStreamDisposed(); _stream.SetLength(newLength); } ////// Member of the abstract Stream class /// /// /// /// ////// /// The standard Stream.Read semantics, and in particular the restoration of the current /// position in case of an exception, is implemented by the underlying stream. /// public override int Read(byte[] buffer, int offset, int count) { ThrowIfStreamDisposed(); return _stream.Read(buffer, offset, count); } ////// Member of the abstract Stream class /// /// /// /// public override void Write(byte[] buf, int offset, int count) { ThrowIfStreamDisposed(); _stream.Write(buf, offset, count); } ////// Member of the abstract Stream class /// public override void Flush() { ThrowIfStreamDisposed(); } #endregion Methods //----------------------------------------------------- // // Protected Methods // //----------------------------------------------------- ////// Dispose(bool) /// /// protected override void Dispose(bool disposing) { try { if (!_disposed) { _stream = null; _disposed = true; } } finally { base.Dispose(disposing); } } #region Private Methods private void ThrowIfStreamDisposed() { if (_disposed) throw new ObjectDisposedException(null, SR.Get(SRID.StreamObjectDisposed)); } #endregion Private Methods #region Private Variables private Stream _stream; private bool _disposed; #endregion Private Variables } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExtensionDataReader.cs
- FormatVersion.cs
- FormClosingEvent.cs
- MergeLocalizationDirectives.cs
- RijndaelManagedTransform.cs
- ObjectHelper.cs
- DetailsViewPagerRow.cs
- EndpointAddressAugust2004.cs
- ContainerControl.cs
- OAVariantLib.cs
- Timer.cs
- PropertyPath.cs
- sqlstateclientmanager.cs
- MenuAdapter.cs
- DeviceSpecificDesigner.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ViewLoader.cs
- AppearanceEditorPart.cs
- WebBrowserEvent.cs
- ReaderContextStackData.cs
- RenderingBiasValidation.cs
- ConfigXmlText.cs
- HtmlLink.cs
- SupportsEventValidationAttribute.cs
- MessagingDescriptionAttribute.cs
- _FtpDataStream.cs
- RoutedUICommand.cs
- SQLUtility.cs
- WindowsTokenRoleProvider.cs
- PropertyNames.cs
- glyphs.cs
- SqlDuplicator.cs
- SettingsAttributes.cs
- MinimizableAttributeTypeConverter.cs
- ClientSettings.cs
- GenerateTemporaryTargetAssembly.cs
- DataRelationCollection.cs
- ComboBox.cs
- InputElement.cs
- SqlDataSourceCustomCommandEditor.cs
- ExtensionDataReader.cs
- PasswordRecoveryDesigner.cs
- Point3DConverter.cs
- SafeNativeMethods.cs
- FormsAuthenticationUserCollection.cs
- TraceFilter.cs
- DirectoryNotFoundException.cs
- ScriptManager.cs
- MailAddress.cs
- PersonalizationProviderCollection.cs
- XmlAtomicValue.cs
- MsmqSecureHashAlgorithm.cs
- TypedDataSetSchemaImporterExtension.cs
- RealizationContext.cs
- FormViewInsertEventArgs.cs
- DiscoveryService.cs
- GlyphInfoList.cs
- ListBox.cs
- CodeDomLocalizationProvider.cs
- XmlWriter.cs
- DocumentOrderComparer.cs
- CatalogPart.cs
- ProjectionPath.cs
- DockPanel.cs
- DispatcherExceptionFilterEventArgs.cs
- SpellerInterop.cs
- CodeStatement.cs
- MemoryPressure.cs
- InfiniteTimeSpanConverter.cs
- UnicodeEncoding.cs
- TransactionChannel.cs
- WeakRefEnumerator.cs
- InputProcessorProfilesLoader.cs
- PrintSchema.cs
- PtsContext.cs
- CommentEmitter.cs
- SortQuery.cs
- ReadOnlyState.cs
- DataGridView.cs
- MarkupCompilePass1.cs
- ComplexBindingPropertiesAttribute.cs
- PrefixHandle.cs
- Geometry.cs
- WeakHashtable.cs
- Enum.cs
- UIElementHelper.cs
- PostBackTrigger.cs
- MemberExpression.cs
- BlobPersonalizationState.cs
- SiteMapSection.cs
- PersonalizationAdministration.cs
- SelectionRangeConverter.cs
- Operators.cs
- SoapAttributeOverrides.cs
- XmlSchemaExporter.cs
- MemberInitExpression.cs
- BooleanFunctions.cs
- XmlSchemaComplexContent.cs
- XmlSchemaAttributeGroupRef.cs
- ControlCommandSet.cs