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
- LinearGradientBrush.cs
- DataList.cs
- TransformCollection.cs
- GeometryConverter.cs
- IndexingContentUnit.cs
- HttpModuleCollection.cs
- FunctionUpdateCommand.cs
- AvTrace.cs
- SvcMapFile.cs
- BitmapEffectrendercontext.cs
- StringSource.cs
- ListBoxItem.cs
- CodeDOMUtility.cs
- UseManagedPresentationBindingElementImporter.cs
- DispatcherEventArgs.cs
- MessageSecurityTokenVersion.cs
- HttpListenerResponse.cs
- IgnoreSection.cs
- PageEventArgs.cs
- StringUtil.cs
- ControlIdConverter.cs
- Misc.cs
- codemethodreferenceexpression.cs
- TimeManager.cs
- StreamWriter.cs
- ObjectReaderCompiler.cs
- Utils.cs
- FixedTextPointer.cs
- EditorPartCollection.cs
- RoleManagerSection.cs
- PngBitmapEncoder.cs
- EntityTypeEmitter.cs
- ParameterBuilder.cs
- XmlSchemaDocumentation.cs
- ContentFilePart.cs
- ListSortDescription.cs
- MergablePropertyAttribute.cs
- ColumnBinding.cs
- ObjectMaterializedEventArgs.cs
- UIElement.cs
- SiteIdentityPermission.cs
- XmlQueryRuntime.cs
- FilterElement.cs
- XmlAnyElementAttribute.cs
- FactoryMaker.cs
- DescriptionAttribute.cs
- PlanCompiler.cs
- ProxyWebPartConnectionCollection.cs
- Transactions.cs
- MetadataArtifactLoaderComposite.cs
- PageAsyncTask.cs
- PermissionRequestEvidence.cs
- PagesChangedEventArgs.cs
- LogExtentCollection.cs
- SimpleBitVector32.cs
- PhysicalAddress.cs
- BindingListCollectionView.cs
- NativeMethods.cs
- Viewport3DVisual.cs
- Rectangle.cs
- Attributes.cs
- GetPageCompletedEventArgs.cs
- XmlDocumentType.cs
- GroupStyle.cs
- PersonalizationStateInfoCollection.cs
- MappableObjectManager.cs
- DataGridViewAutoSizeModeEventArgs.cs
- Error.cs
- SyndicationSerializer.cs
- DetailsViewModeEventArgs.cs
- LicenseException.cs
- TracedNativeMethods.cs
- XmlAnyAttributeAttribute.cs
- PropertySegmentSerializationProvider.cs
- DiscoveryDocumentReference.cs
- ReliabilityContractAttribute.cs
- DuplicateWaitObjectException.cs
- WriteLineDesigner.xaml.cs
- CoTaskMemHandle.cs
- SqlCacheDependencySection.cs
- GlobalizationAssembly.cs
- SaveLedgerEntryRequest.cs
- UIElementParaClient.cs
- Math.cs
- FormViewPageEventArgs.cs
- EventToken.cs
- KeyValuePair.cs
- _CookieModule.cs
- JapaneseCalendar.cs
- Polygon.cs
- ColorBuilder.cs
- DefaultEventAttribute.cs
- CheckBox.cs
- BitmapData.cs
- DataFormat.cs
- SystemKeyConverter.cs
- BitmapFrame.cs
- ParallelSeparator.xaml.cs
- XmlILConstructAnalyzer.cs
- WebConfigurationHostFileChange.cs