Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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: [....]: 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
- ErasingStroke.cs
- DataGridViewColumnConverter.cs
- DbProviderConfigurationHandler.cs
- MessageEnumerator.cs
- HttpDebugHandler.cs
- ResourceProperty.cs
- ConfigXmlDocument.cs
- DeferredRunTextReference.cs
- oledbmetadatacollectionnames.cs
- TableCellCollection.cs
- HtmlToClrEventProxy.cs
- CodeEventReferenceExpression.cs
- JsonDataContract.cs
- FixedPage.cs
- Blend.cs
- DesignerRegionCollection.cs
- OAVariantLib.cs
- SqlXmlStorage.cs
- SchemaCollectionCompiler.cs
- XmlCharType.cs
- ExceptionCollection.cs
- Int32CollectionValueSerializer.cs
- ToolStripProgressBar.cs
- BitmapInitialize.cs
- AutoScrollExpandMessageFilter.cs
- _ConnectOverlappedAsyncResult.cs
- AutomationPattern.cs
- NeutralResourcesLanguageAttribute.cs
- OleDbException.cs
- ErrorsHelper.cs
- SqlClientPermission.cs
- KeyValuePair.cs
- NativeCompoundFileAPIs.cs
- MobileControlsSectionHandler.cs
- HttpPostClientProtocol.cs
- MsmqIntegrationSecurityElement.cs
- PagerSettings.cs
- RegexTypeEditor.cs
- MarkerProperties.cs
- DataControlFieldCollection.cs
- LazyTextWriterCreator.cs
- ZoomComboBox.cs
- activationcontext.cs
- LineGeometry.cs
- DetailsViewUpdateEventArgs.cs
- PropertyChangedEventManager.cs
- InstanceDescriptor.cs
- initElementDictionary.cs
- RequiredFieldValidator.cs
- VectorAnimationUsingKeyFrames.cs
- Composition.cs
- SessionPageStatePersister.cs
- path.cs
- XmlCharCheckingWriter.cs
- Table.cs
- XPathMultyIterator.cs
- AppDomainCompilerProxy.cs
- SqlRowUpdatingEvent.cs
- TypeInitializationException.cs
- serverconfig.cs
- DataTable.cs
- StringCollection.cs
- DataSourceXmlTextReader.cs
- CodeObjectCreateExpression.cs
- TypedDataSourceCodeGenerator.cs
- AccessViolationException.cs
- Memoizer.cs
- OleDbConnection.cs
- RectangleF.cs
- TreeBuilderBamlTranslator.cs
- CryptoApi.cs
- StrokeCollectionConverter.cs
- ValidationVisibilityAttribute.cs
- ListViewContainer.cs
- OSFeature.cs
- ForeignKeyFactory.cs
- PostBackTrigger.cs
- ScriptRef.cs
- WsdlImporter.cs
- UnsafeNativeMethods.cs
- XmlSchemaAppInfo.cs
- SystemWebExtensionsSectionGroup.cs
- EnvironmentPermission.cs
- WorkflowEnvironment.cs
- CircleEase.cs
- SqlDataSourceParameterParser.cs
- MSAAEventDispatcher.cs
- ListDataHelper.cs
- ThousandthOfEmRealDoubles.cs
- baseaxisquery.cs
- SafeArrayTypeMismatchException.cs
- Base64Encoding.cs
- ClientSettingsStore.cs
- ScrollItemPatternIdentifiers.cs
- _CacheStreams.cs
- IdentityNotMappedException.cs
- GroupAggregateExpr.cs
- List.cs
- Hash.cs
- XmlChildNodes.cs