Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SizeConverter.cs
- FixedPageStructure.cs
- CustomAssemblyResolver.cs
- EntityAdapter.cs
- Sentence.cs
- StylusPlugin.cs
- ItemList.cs
- DataGridViewControlCollection.cs
- RequestCache.cs
- File.cs
- InternalDuplexChannelFactory.cs
- WebPartMenuStyle.cs
- CursorConverter.cs
- GridViewColumnCollectionChangedEventArgs.cs
- Int64AnimationUsingKeyFrames.cs
- InternalSafeNativeMethods.cs
- EncryptedKey.cs
- SqlDependency.cs
- ReadOnlyHierarchicalDataSourceView.cs
- WebPart.cs
- PropertyState.cs
- CachedTypeface.cs
- HMACSHA384.cs
- WebBrowserHelper.cs
- GenericPrincipal.cs
- ResourceContainer.cs
- ExecutorLocksHeldException.cs
- ModifierKeysValueSerializer.cs
- DataTemplate.cs
- TransformDescriptor.cs
- VersionConverter.cs
- EncodingFallbackAwareXmlTextWriter.cs
- TextViewElement.cs
- TimeoutException.cs
- ClrProviderManifest.cs
- RelatedPropertyManager.cs
- ServerIdentity.cs
- DbDataSourceEnumerator.cs
- PathFigureCollection.cs
- NavigationPropertyEmitter.cs
- ProxySimple.cs
- Serializer.cs
- TagPrefixAttribute.cs
- DateTimePicker.cs
- DetailsViewPagerRow.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SequentialActivityDesigner.cs
- HealthMonitoringSection.cs
- ConvertTextFrag.cs
- WebEventTraceProvider.cs
- XmlAtomicValue.cs
- HtmlEncodedRawTextWriter.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- LogAppendAsyncResult.cs
- Vector3D.cs
- VirtualizedContainerService.cs
- DocumentOrderComparer.cs
- ResXBuildProvider.cs
- IOException.cs
- EntryWrittenEventArgs.cs
- unsafeIndexingFilterStream.cs
- HyperLinkField.cs
- Int32CollectionValueSerializer.cs
- LinqDataSourceView.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- COM2IProvidePropertyBuilderHandler.cs
- ExtendedProperty.cs
- CacheAxisQuery.cs
- RemoteWebConfigurationHostServer.cs
- SerializerWriterEventHandlers.cs
- Attributes.cs
- RtfControlWordInfo.cs
- XmlDataSource.cs
- AuthenticationModuleElementCollection.cs
- DataServiceRequest.cs
- TreeBuilderBamlTranslator.cs
- NotImplementedException.cs
- ExpressionEditorAttribute.cs
- WindowsAuthenticationModule.cs
- EncoderParameter.cs
- ModifierKeysValueSerializer.cs
- SplitterPanelDesigner.cs
- PageWrapper.cs
- XmlSchemaAny.cs
- WebConfigurationHost.cs
- wgx_sdk_version.cs
- HttpModuleActionCollection.cs
- TypeInfo.cs
- ResourceManagerWrapper.cs
- Form.cs
- DetailsViewModeEventArgs.cs
- WhitespaceRuleLookup.cs
- odbcmetadatafactory.cs
- CalculatedColumn.cs
- VirtualDirectoryMappingCollection.cs
- ToolboxItemAttribute.cs
- MarkerProperties.cs
- XmlExceptionHelper.cs
- ServiceReference.cs
- CompositeTypefaceMetrics.cs