Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / MS / Internal / IO / Zip / WriteTimeStream.cs / 1 / WriteTimeStream.cs
//------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // WriteTimeStream - wraps the ArchiveStream in Streaming generation scenarios so that we // can determine current archive stream offset even when working on a stream that is non-seekable // because the Position property is unusable on such streams. // // History: // 03/25/2002: BruceMac: Created. // //----------------------------------------------------------------------------- using System; using System.IO; using System.Windows; namespace MS.Internal.IO.Zip { internal class WriteTimeStream : Stream { //----------------------------------------------------- // // Public Properties // //----------------------------------------------------- ////// CanRead - never /// override public bool CanRead { get { return false; } } ////// CanSeek - never /// override public bool CanSeek{ get { return false; } } ////// CanWrite - only if we are not disposed /// override public bool CanWrite { get { return (_baseStream != null); } } ////// Same as Position /// override public long Length { get { CheckDisposed(); return _position; } } ////// Get is supported even on Write-only stream /// override public long Position { get { CheckDisposed(); return _position; } set { CheckDisposed(); IllegalAccess(); // throw exception } } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- public override void SetLength(long newLength) { IllegalAccess(); // throw exception } override public long Seek(long offset, SeekOrigin origin) { IllegalAccess(); // throw exception return -1; // keep compiler happy } override public int Read(byte[] buffer, int offset, int count) { IllegalAccess(); // throw exception return -1; // keep compiler happy } override public void Write(byte[] buffer, int offset, int count) { CheckDisposed(); _baseStream.Write(buffer, offset, count); checked{_position += count;} } override public void Flush() { CheckDisposed(); _baseStream.Flush(); } //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ internal WriteTimeStream(Stream baseStream) { if (baseStream == null) { throw new ArgumentNullException("baseStream"); } _baseStream = baseStream; // must be based on writable stream if (!_baseStream.CanWrite) throw new ArgumentException(SR.Get(SRID.WriteNotSupported), "baseStream"); } //----------------------------------------------------- // // Protected Methods // //------------------------------------------------------ protected override void Dispose(bool disposing) { try { if (disposing && (_baseStream != null)) { _baseStream.Close(); } } finally { _baseStream = null; base.Dispose(disposing); } } //----------------------------------------------------- // // Private Methods // //----------------------------------------------------- private static void IllegalAccess() { throw new NotSupportedException(SR.Get(SRID.WriteOnlyStream)); } private void CheckDisposed() { if (_baseStream == null) throw new ObjectDisposedException("Stream"); } // _baseStream doubles as our disposed indicator - it's null if we are disposed private Stream _baseStream; // stream we wrap - needs to only support Write private long _position; // current position } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // WriteTimeStream - wraps the ArchiveStream in Streaming generation scenarios so that we // can determine current archive stream offset even when working on a stream that is non-seekable // because the Position property is unusable on such streams. // // History: // 03/25/2002: BruceMac: Created. // //----------------------------------------------------------------------------- using System; using System.IO; using System.Windows; namespace MS.Internal.IO.Zip { internal class WriteTimeStream : Stream { //----------------------------------------------------- // // Public Properties // //----------------------------------------------------- ////// CanRead - never /// override public bool CanRead { get { return false; } } ////// CanSeek - never /// override public bool CanSeek{ get { return false; } } ////// CanWrite - only if we are not disposed /// override public bool CanWrite { get { return (_baseStream != null); } } ////// Same as Position /// override public long Length { get { CheckDisposed(); return _position; } } ////// Get is supported even on Write-only stream /// override public long Position { get { CheckDisposed(); return _position; } set { CheckDisposed(); IllegalAccess(); // throw exception } } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- public override void SetLength(long newLength) { IllegalAccess(); // throw exception } override public long Seek(long offset, SeekOrigin origin) { IllegalAccess(); // throw exception return -1; // keep compiler happy } override public int Read(byte[] buffer, int offset, int count) { IllegalAccess(); // throw exception return -1; // keep compiler happy } override public void Write(byte[] buffer, int offset, int count) { CheckDisposed(); _baseStream.Write(buffer, offset, count); checked{_position += count;} } override public void Flush() { CheckDisposed(); _baseStream.Flush(); } //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ internal WriteTimeStream(Stream baseStream) { if (baseStream == null) { throw new ArgumentNullException("baseStream"); } _baseStream = baseStream; // must be based on writable stream if (!_baseStream.CanWrite) throw new ArgumentException(SR.Get(SRID.WriteNotSupported), "baseStream"); } //----------------------------------------------------- // // Protected Methods // //------------------------------------------------------ protected override void Dispose(bool disposing) { try { if (disposing && (_baseStream != null)) { _baseStream.Close(); } } finally { _baseStream = null; base.Dispose(disposing); } } //----------------------------------------------------- // // Private Methods // //----------------------------------------------------- private static void IllegalAccess() { throw new NotSupportedException(SR.Get(SRID.WriteOnlyStream)); } private void CheckDisposed() { if (_baseStream == null) throw new ObjectDisposedException("Stream"); } // _baseStream doubles as our disposed indicator - it's null if we are disposed private Stream _baseStream; // stream we wrap - needs to only support Write private long _position; // current position } } // 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
- columnmapkeybuilder.cs
- MatrixAnimationUsingKeyFrames.cs
- BaseHashHelper.cs
- DateTimeOffsetStorage.cs
- InkSerializer.cs
- DateTimeEditor.cs
- SqlBuilder.cs
- PassportAuthenticationModule.cs
- ConnectionStringsSection.cs
- TemplateControlParser.cs
- SubpageParagraph.cs
- SQLChars.cs
- SelectionUIHandler.cs
- SqlClientWrapperSmiStream.cs
- unitconverter.cs
- AccessDataSource.cs
- PropertyConverter.cs
- CommonRemoteMemoryBlock.cs
- SoapIncludeAttribute.cs
- XsdCachingReader.cs
- Normalization.cs
- SkewTransform.cs
- SkinBuilder.cs
- SqlDataSource.cs
- CodeExpressionStatement.cs
- EntityAdapter.cs
- SubpageParaClient.cs
- UnsafeNativeMethods.cs
- UniqueSet.cs
- NamedPipeConnectionPoolSettings.cs
- LoginViewDesigner.cs
- CacheOutputQuery.cs
- cache.cs
- BigInt.cs
- SHA1Managed.cs
- ParameterRefs.cs
- ISAPIApplicationHost.cs
- List.cs
- XsltContext.cs
- DataTrigger.cs
- MessageContractMemberAttribute.cs
- PowerEase.cs
- TextEditorSelection.cs
- wgx_commands.cs
- UInt32Converter.cs
- MouseWheelEventArgs.cs
- RelationshipManager.cs
- InputBuffer.cs
- MDIClient.cs
- ObjectItemCollection.cs
- GPPOINT.cs
- XmlILModule.cs
- RootBuilder.cs
- XmlObjectSerializer.cs
- ConnectionsZone.cs
- CacheDependency.cs
- TargetControlTypeCache.cs
- SQLInt16Storage.cs
- JournalEntry.cs
- URLAttribute.cs
- ResXResourceSet.cs
- BamlStream.cs
- SamlSubject.cs
- VariantWrapper.cs
- PathNode.cs
- MetadataArtifactLoaderCompositeFile.cs
- InfoCardKeyedHashAlgorithm.cs
- PasswordDeriveBytes.cs
- HttpCachePolicyBase.cs
- ScaleTransform.cs
- VideoDrawing.cs
- UnmanagedMemoryStream.cs
- DictionaryKeyPropertyAttribute.cs
- DesignerToolStripControlHost.cs
- ConfigurationElementProperty.cs
- PropertyIDSet.cs
- PageCodeDomTreeGenerator.cs
- TreeView.cs
- ResourceManagerWrapper.cs
- CheckBox.cs
- LayoutTableCell.cs
- GridProviderWrapper.cs
- Margins.cs
- DataSourceCache.cs
- IMembershipProvider.cs
- UnknownBitmapEncoder.cs
- Asn1IntegerConverter.cs
- ToolStripItemImageRenderEventArgs.cs
- GenericNameHandler.cs
- IisTraceWebEventProvider.cs
- XmlSchemaAttributeGroupRef.cs
- TriggerAction.cs
- TriggerCollection.cs
- WebZone.cs
- Form.cs
- FlowDocumentPage.cs
- XmlSchemaAll.cs
- RenderTargetBitmap.cs
- WindowsGraphics.cs
- DependsOnAttribute.cs