Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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 - [....] - 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
- SpeechUI.cs
- RegistryConfigurationProvider.cs
- Sequence.cs
- panel.cs
- IPeerNeighbor.cs
- WebPartManager.cs
- XamlFxTrace.cs
- TextEvent.cs
- AnonymousIdentificationSection.cs
- SocketPermission.cs
- Marshal.cs
- MetadataUtilsSmi.cs
- EventListenerClientSide.cs
- MinMaxParagraphWidth.cs
- AnnotationAuthorChangedEventArgs.cs
- Rotation3DKeyFrameCollection.cs
- StringCollection.cs
- SqlNode.cs
- TableCellAutomationPeer.cs
- UnicastIPAddressInformationCollection.cs
- IRCollection.cs
- SmtpTransport.cs
- DocumentApplicationJournalEntry.cs
- LifetimeServices.cs
- HtmlSelect.cs
- DrawingVisualDrawingContext.cs
- XmlnsDictionary.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- XPathSelectionIterator.cs
- ObjectItemNoOpAssemblyLoader.cs
- PageSettings.cs
- IProducerConsumerCollection.cs
- QueryStringParameter.cs
- SelectionProcessor.cs
- HttpModuleActionCollection.cs
- _BufferOffsetSize.cs
- QueryStringParameter.cs
- PropertyTabChangedEvent.cs
- TraceSection.cs
- EncodingStreamWrapper.cs
- BuildProvider.cs
- Column.cs
- Queue.cs
- FilteredDataSetHelper.cs
- HttpListenerPrefixCollection.cs
- BackgroundWorker.cs
- GridViewRowCollection.cs
- CodeTypeDeclarationCollection.cs
- InvalidOperationException.cs
- DataGridViewTextBoxEditingControl.cs
- TabControl.cs
- Recipient.cs
- ConversionContext.cs
- TableCellCollection.cs
- Int64.cs
- GeometryModel3D.cs
- RuntimeHandles.cs
- AmbientLight.cs
- ProxyWebPart.cs
- SineEase.cs
- TimeZoneInfo.cs
- RegionData.cs
- Debug.cs
- ThemeableAttribute.cs
- TrustSection.cs
- GetCardDetailsRequest.cs
- SecurityContext.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- keycontainerpermission.cs
- BinaryCommonClasses.cs
- BitmapCodecInfoInternal.cs
- TouchDevice.cs
- CopyAttributesAction.cs
- PropVariant.cs
- CompiledRegexRunner.cs
- Identifier.cs
- PngBitmapDecoder.cs
- DataGridRowClipboardEventArgs.cs
- XmlNodeList.cs
- JoinCqlBlock.cs
- Quaternion.cs
- XmlQueryStaticData.cs
- PropertyInformation.cs
- QilLiteral.cs
- SimpleMailWebEventProvider.cs
- RegistryPermission.cs
- FixedSOMTableCell.cs
- DbCommandTree.cs
- HtmlElementErrorEventArgs.cs
- XappLauncher.cs
- SoapObjectInfo.cs
- Schema.cs
- ExpressionQuoter.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SHA256Managed.cs
- ReflectTypeDescriptionProvider.cs
- ColorMap.cs
- Inflater.cs
- XdrBuilder.cs
- OdbcConnectionStringbuilder.cs