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
- HashHelper.cs
- SiteMapNodeItemEventArgs.cs
- BindableTemplateBuilder.cs
- EpmCustomContentWriterNodeData.cs
- QilChoice.cs
- CodePageEncoding.cs
- SmiEventSink_Default.cs
- StreamSecurityUpgradeProvider.cs
- PassportAuthentication.cs
- IOException.cs
- SqlServices.cs
- DataContractAttribute.cs
- _LazyAsyncResult.cs
- Clipboard.cs
- Symbol.cs
- DisplayNameAttribute.cs
- FilterableAttribute.cs
- ObjectManager.cs
- AliasExpr.cs
- UrlPropertyAttribute.cs
- ImmutableObjectAttribute.cs
- BitmapEffectDrawingContent.cs
- WebPartZoneCollection.cs
- TextRangeEditTables.cs
- SystemSounds.cs
- ComboBoxItem.cs
- SqlConnectionStringBuilder.cs
- DataFormats.cs
- RegistryKey.cs
- ImplicitInputBrush.cs
- DataFormats.cs
- TreeNodeStyle.cs
- Font.cs
- EventLogPermission.cs
- StylusPointPropertyInfoDefaults.cs
- SystemTcpStatistics.cs
- TextEditorDragDrop.cs
- InertiaTranslationBehavior.cs
- Utils.cs
- ModelTreeManager.cs
- ErasingStroke.cs
- EventArgs.cs
- ClientUrlResolverWrapper.cs
- PackageRelationship.cs
- CheckBoxList.cs
- NotifyIcon.cs
- GeometryValueSerializer.cs
- FormViewInsertedEventArgs.cs
- FileLogRecordHeader.cs
- Floater.cs
- ReferencedAssembly.cs
- RepeatBehaviorConverter.cs
- ResourceKey.cs
- UserNameSecurityTokenProvider.cs
- BitmapDecoder.cs
- TableRow.cs
- XmlSecureResolver.cs
- TimeoutValidationAttribute.cs
- OutOfMemoryException.cs
- UnsafeMethods.cs
- XmlWrappingReader.cs
- IResourceProvider.cs
- TitleStyle.cs
- NullableDoubleMinMaxAggregationOperator.cs
- RichTextBoxDesigner.cs
- SafeHandles.cs
- AsymmetricSignatureFormatter.cs
- Soap.cs
- TraceContextRecord.cs
- MenuItem.cs
- RefreshInfo.cs
- SerializationEventsCache.cs
- RelationshipEndCollection.cs
- SplineQuaternionKeyFrame.cs
- NameGenerator.cs
- WindowsToolbarAsMenu.cs
- EtwTrace.cs
- XslAstAnalyzer.cs
- mediaclock.cs
- EmptyStringExpandableObjectConverter.cs
- SingleStorage.cs
- RelationshipFixer.cs
- ColumnCollection.cs
- MetadataUtil.cs
- PackageRelationshipSelector.cs
- XPathNodeInfoAtom.cs
- XMLDiffLoader.cs
- EnvironmentPermission.cs
- XmlDataSource.cs
- ProfileProvider.cs
- StorageRoot.cs
- ToolBar.cs
- BitmapPalette.cs
- Zone.cs
- ExternalException.cs
- LocatorManager.cs
- IntegrationExceptionEventArgs.cs
- NotImplementedException.cs
- Root.cs
- SizeConverter.cs