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
- DataSourceDesigner.cs
- PauseStoryboard.cs
- EntityDataSourceSelectedEventArgs.cs
- RepeaterDesigner.cs
- TemplatePropertyEntry.cs
- TimelineGroup.cs
- FixedDocumentSequencePaginator.cs
- PolicyManager.cs
- AspNetSynchronizationContext.cs
- ActivityWithResult.cs
- _FixedSizeReader.cs
- WebPartManagerInternals.cs
- TextEditorContextMenu.cs
- DBSchemaTable.cs
- NamespaceEmitter.cs
- WorkflowMarkupSerializer.cs
- ArrayConverter.cs
- HtmlElement.cs
- SHA1.cs
- Translator.cs
- TdsParserStateObject.cs
- MaskedTextProvider.cs
- WebServiceAttribute.cs
- EntityDataSourceColumn.cs
- InvalidProgramException.cs
- SimpleApplicationHost.cs
- PasswordDeriveBytes.cs
- _RegBlobWebProxyDataBuilder.cs
- XsltFunctions.cs
- TypeExtensionConverter.cs
- FormViewPagerRow.cs
- SqlVersion.cs
- DynamicRendererThreadManager.cs
- AttributedMetaModel.cs
- SecUtil.cs
- Switch.cs
- DetailsViewPagerRow.cs
- StreamUpgradeInitiator.cs
- Propagator.Evaluator.cs
- SiteMap.cs
- SerializationAttributes.cs
- SQLInt32.cs
- SequenceDesigner.cs
- AbandonedMutexException.cs
- SoapReflector.cs
- Matrix3DStack.cs
- BamlLocalizableResource.cs
- EntitySqlQueryCacheEntry.cs
- SchemaCompiler.cs
- SubclassTypeValidator.cs
- TypedElement.cs
- SchemaUtility.cs
- GcHandle.cs
- ImageSource.cs
- AccessControlEntry.cs
- SafeLibraryHandle.cs
- SapiAttributeParser.cs
- ServiceReference.cs
- UserCancellationException.cs
- TableSectionStyle.cs
- BlurBitmapEffect.cs
- NativeMethods.cs
- TemplateControlParser.cs
- CollectionBuilder.cs
- ItemList.cs
- EventLogLink.cs
- NativeMethods.cs
- DbXmlEnabledProviderManifest.cs
- MessageTransmitTraceRecord.cs
- TaiwanCalendar.cs
- Single.cs
- Boolean.cs
- LabelEditEvent.cs
- Delegate.cs
- XmlSigningNodeWriter.cs
- MappingMetadataHelper.cs
- ScaleTransform.cs
- XmlSchemaExternal.cs
- SplashScreenNativeMethods.cs
- Condition.cs
- ProfileService.cs
- ProxyAttribute.cs
- TableRow.cs
- Identity.cs
- ViewSimplifier.cs
- CodeGroup.cs
- PreviewPageInfo.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- XmlSchemaParticle.cs
- BulletDecorator.cs
- HttpServerUtilityBase.cs
- ColumnResizeUndoUnit.cs
- SystemUnicastIPAddressInformation.cs
- QuotedStringWriteStateInfo.cs
- RegexBoyerMoore.cs
- VectorKeyFrameCollection.cs
- WindowProviderWrapper.cs
- TypeTypeConverter.cs
- Pair.cs
- ClaimSet.cs