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
- Imaging.cs
- CodeTypeReferenceExpression.cs
- SecurityRuntime.cs
- DurationConverter.cs
- TypeToken.cs
- ParameterSubsegment.cs
- RuleSettingsCollection.cs
- WindowsToolbarAsMenu.cs
- RefreshEventArgs.cs
- PathTooLongException.cs
- SQLGuid.cs
- OleAutBinder.cs
- TreeSet.cs
- LogicalChannel.cs
- PageCache.cs
- RowVisual.cs
- BrowserInteropHelper.cs
- ComboBoxItem.cs
- ColorTranslator.cs
- GridItem.cs
- basenumberconverter.cs
- EventLogPermissionEntry.cs
- ExecutedRoutedEventArgs.cs
- IProvider.cs
- ProcessModuleCollection.cs
- MatrixAnimationUsingPath.cs
- securitycriticaldataformultiplegetandset.cs
- NamedPermissionSet.cs
- CodeTypeParameterCollection.cs
- userdatakeys.cs
- PeerApplication.cs
- PassportAuthenticationModule.cs
- XmlParser.cs
- InvalidChannelBindingException.cs
- NamespaceTable.cs
- DataContractSerializerSection.cs
- ScaleTransform3D.cs
- ContentFileHelper.cs
- PageTextBox.cs
- BamlStream.cs
- TagPrefixCollection.cs
- PagesChangedEventArgs.cs
- RewritingValidator.cs
- ListViewItemMouseHoverEvent.cs
- ColumnMapTranslator.cs
- AngleUtil.cs
- PointValueSerializer.cs
- AssociationSetEnd.cs
- AsyncOperation.cs
- ColorContext.cs
- DbConnectionOptions.cs
- CollectionCodeDomSerializer.cs
- UserPreferenceChangedEventArgs.cs
- DataTableMapping.cs
- DrawingCollection.cs
- DataGridPagerStyle.cs
- WebPartDisplayModeEventArgs.cs
- ClientOperationFormatterProvider.cs
- ViewEventArgs.cs
- BaseResourcesBuildProvider.cs
- GZipStream.cs
- DataGridViewCellStyle.cs
- SecureStringHasher.cs
- CharacterShapingProperties.cs
- CacheDependency.cs
- SrgsOneOf.cs
- BrowserCapabilitiesFactoryBase.cs
- FileLoadException.cs
- CheckPair.cs
- XmlQueryRuntime.cs
- ElementAction.cs
- AssemblyName.cs
- SiteMapPathDesigner.cs
- SqlMethodCallConverter.cs
- ThreadAttributes.cs
- UriScheme.cs
- GrammarBuilderWildcard.cs
- MenuTracker.cs
- UserCancellationException.cs
- TextureBrush.cs
- BufferedGraphics.cs
- RubberbandSelector.cs
- TargetInvocationException.cs
- VisualTreeUtils.cs
- ButtonRenderer.cs
- DataTableTypeConverter.cs
- StreamWriter.cs
- ListParaClient.cs
- XmlDataSourceView.cs
- PropertyValueUIItem.cs
- ManipulationVelocities.cs
- DataGridViewColumnHeaderCell.cs
- WindowsScroll.cs
- ScriptingRoleServiceSection.cs
- RequestCacheEntry.cs
- Site.cs
- DataSourceProvider.cs
- AsymmetricAlgorithm.cs
- ParameterCollection.cs
- LogStore.cs