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
- TagMapInfo.cs
- UniqueConstraint.cs
- XmlSerializationReader.cs
- BreadCrumbTextConverter.cs
- DataBoundControlHelper.cs
- LinqDataSourceEditData.cs
- webeventbuffer.cs
- WindowInteropHelper.cs
- MouseOverProperty.cs
- AdornerHitTestResult.cs
- PromptBuilder.cs
- FixedElement.cs
- MenuAdapter.cs
- DataGridViewTextBoxEditingControl.cs
- HtmlWindowCollection.cs
- ActivityXamlServices.cs
- TemplateContainer.cs
- MsmqMessageProperty.cs
- RadialGradientBrush.cs
- CompositeCollectionView.cs
- DesignerTextWriter.cs
- DiscreteKeyFrames.cs
- PeerEndPoint.cs
- DatePicker.cs
- PersistenceTypeAttribute.cs
- UpDownBase.cs
- ExceptionUtil.cs
- ForwardPositionQuery.cs
- LingerOption.cs
- GradientStop.cs
- SQLInt64Storage.cs
- WsdlInspector.cs
- DynamicQueryableWrapper.cs
- MiniParameterInfo.cs
- safePerfProviderHandle.cs
- ClientSettings.cs
- EntityDataSourceWrapperCollection.cs
- ToolstripProfessionalRenderer.cs
- JoinCqlBlock.cs
- TableLayoutSettings.cs
- TextUtf8RawTextWriter.cs
- counter.cs
- GlobalizationSection.cs
- Security.cs
- ReadOnlyObservableCollection.cs
- XamlPoint3DCollectionSerializer.cs
- DataError.cs
- BackgroundFormatInfo.cs
- TypographyProperties.cs
- DataGridViewImageColumn.cs
- CodeComment.cs
- StatusBar.cs
- DecimalAnimationBase.cs
- FlowLayoutPanel.cs
- DATA_BLOB.cs
- WebReference.cs
- PowerModeChangedEventArgs.cs
- DefaultBinder.cs
- SmtpNetworkElement.cs
- HostingEnvironmentSection.cs
- MdiWindowListStrip.cs
- TraceUtils.cs
- VisualTarget.cs
- CodeArrayCreateExpression.cs
- DesignerImageAdapter.cs
- PublisherIdentityPermission.cs
- ByteStreamGeometryContext.cs
- BamlVersionHeader.cs
- ApplicationServiceManager.cs
- ActivityExecutionFilter.cs
- ParserContext.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- RemoteWebConfigurationHostStream.cs
- ObjectRef.cs
- SoapMessage.cs
- ToolStripStatusLabel.cs
- WebServiceData.cs
- ParentUndoUnit.cs
- SoapExtensionTypeElement.cs
- AnnotationStore.cs
- DataGridViewRow.cs
- OracleConnectionFactory.cs
- AuthStoreRoleProvider.cs
- ContainsRowNumberChecker.cs
- RawStylusInput.cs
- linebase.cs
- TextSelectionProcessor.cs
- UniformGrid.cs
- IndexedString.cs
- CodeDomLocalizationProvider.cs
- TextEncodedRawTextWriter.cs
- ExceptionHandlersDesigner.cs
- MexHttpBindingCollectionElement.cs
- ImageDrawing.cs
- GatewayIPAddressInformationCollection.cs
- TaskHelper.cs
- BitmapScalingModeValidation.cs
- Bitmap.cs
- XamlStyleSerializer.cs
- CompilerCollection.cs