Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / IO / Zip / WriteTimeStream.cs / 1305600 / 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; using MS.Internal.WindowsBase; 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
- ParallelDesigner.cs
- TextBox.cs
- pingexception.cs
- GetPolicyDetailsRequest.cs
- TextTreeInsertUndoUnit.cs
- ButtonBase.cs
- FixedSOMPageConstructor.cs
- ValueCollectionParameterReader.cs
- RadioButtonFlatAdapter.cs
- SudsParser.cs
- TextRangeEditTables.cs
- AccessorTable.cs
- TimeStampChecker.cs
- PoisonMessageException.cs
- NetTcpSectionData.cs
- ColorMatrix.cs
- CachedPathData.cs
- ListComponentEditorPage.cs
- ListItemCollection.cs
- PerformanceCounterManager.cs
- ControllableStoryboardAction.cs
- Vector.cs
- Ref.cs
- BitConverter.cs
- ModuleConfigurationInfo.cs
- FixedSOMImage.cs
- NullReferenceException.cs
- PreProcessInputEventArgs.cs
- SupportingTokenDuplexChannel.cs
- Symbol.cs
- StatusBarPanel.cs
- TopClause.cs
- ProjectionPathBuilder.cs
- RegexWriter.cs
- SendMailErrorEventArgs.cs
- Vars.cs
- SemanticAnalyzer.cs
- EntityModelBuildProvider.cs
- MemberHolder.cs
- EventListenerClientSide.cs
- RealProxy.cs
- oledbmetadatacollectionnames.cs
- ImageAutomationPeer.cs
- ColorInterpolationModeValidation.cs
- Model3DGroup.cs
- MimeXmlReflector.cs
- SqlGatherConsumedAliases.cs
- TextPattern.cs
- PeerCustomResolverBindingElement.cs
- PageHandlerFactory.cs
- initElementDictionary.cs
- DataGridViewSelectedCellCollection.cs
- Column.cs
- Unit.cs
- RegexCompiler.cs
- DefaultValueTypeConverter.cs
- Clipboard.cs
- PointCollection.cs
- SHA512Cng.cs
- SystemInfo.cs
- WCFBuildProvider.cs
- OleDbTransaction.cs
- ZeroOpNode.cs
- WebPartZoneCollection.cs
- AliasedSlot.cs
- RoleServiceManager.cs
- CalloutQueueItem.cs
- ParagraphVisual.cs
- SynchronizedCollection.cs
- ReflectionPermission.cs
- ThreadPool.cs
- WebBaseEventKeyComparer.cs
- HtmlInputPassword.cs
- SupportsEventValidationAttribute.cs
- Keyboard.cs
- Utilities.cs
- TextElementAutomationPeer.cs
- StringWriter.cs
- Attributes.cs
- WebPartEditorOkVerb.cs
- ImagingCache.cs
- RightsManagementPermission.cs
- DataShape.cs
- DesignerForm.cs
- DelayedRegex.cs
- ByteStream.cs
- IconEditor.cs
- XmlToDatasetMap.cs
- UInt16Storage.cs
- TypedDatasetGenerator.cs
- JsonSerializer.cs
- DiscoveryClientDuplexChannel.cs
- BasicAsyncResult.cs
- BordersPage.cs
- HostingEnvironmentSection.cs
- pingexception.cs
- InkCanvasFeedbackAdorner.cs
- SQLChars.cs
- DataServiceEntityAttribute.cs
- UDPClient.cs