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
- QueryCacheManager.cs
- TableAutomationPeer.cs
- DeviceFilterDictionary.cs
- FontUnitConverter.cs
- FunctionQuery.cs
- TokenCreationParameter.cs
- DataSourceHelper.cs
- MenuItemBindingCollection.cs
- SharedStatics.cs
- DateTimeSerializationSection.cs
- ScrollViewerAutomationPeer.cs
- ProcessModelInfo.cs
- SoapDocumentMethodAttribute.cs
- Int32Collection.cs
- GridViewRowCollection.cs
- DesignTimeParseData.cs
- PathGeometry.cs
- SQLCharsStorage.cs
- Matrix3D.cs
- invalidudtexception.cs
- ExceptionHandlersDesigner.cs
- AuthenticationModulesSection.cs
- ConnectionStringSettingsCollection.cs
- FixedHyperLink.cs
- RequestValidator.cs
- StrongName.cs
- TextEditorCopyPaste.cs
- SessionStateUtil.cs
- TemplatedMailWebEventProvider.cs
- Matrix.cs
- PackWebRequest.cs
- ButtonPopupAdapter.cs
- SimpleTypeResolver.cs
- CombinedGeometry.cs
- ToolboxItemCollection.cs
- TraceLevelStore.cs
- UntrustedRecipientException.cs
- VirtualizingPanel.cs
- ServiceOperation.cs
- DataTableTypeConverter.cs
- RemotingConfigParser.cs
- _HelperAsyncResults.cs
- HttpHandlerActionCollection.cs
- HitTestParameters3D.cs
- VScrollBar.cs
- ObjectIDGenerator.cs
- RequestSecurityTokenSerializer.cs
- TTSEvent.cs
- DesignerForm.cs
- OleDbReferenceCollection.cs
- BCryptHashAlgorithm.cs
- NullableBoolConverter.cs
- WebServiceMethodData.cs
- IpcChannel.cs
- SimpleWebHandlerParser.cs
- FigureParaClient.cs
- WinEventWrap.cs
- DataGridViewCellStyle.cs
- GlyphRun.cs
- HandleRef.cs
- VirtualDirectoryMappingCollection.cs
- AttributeSetAction.cs
- DataViewListener.cs
- ISSmlParser.cs
- EntityCommandExecutionException.cs
- SliderAutomationPeer.cs
- LayoutInformation.cs
- RecordManager.cs
- FactoryId.cs
- ViewStateModeByIdAttribute.cs
- DescendantBaseQuery.cs
- messageonlyhwndwrapper.cs
- DoubleUtil.cs
- BooleanSwitch.cs
- Figure.cs
- VoiceChangeEventArgs.cs
- RtType.cs
- Point.cs
- SessionSwitchEventArgs.cs
- ImmutableCollection.cs
- FileSystemEnumerable.cs
- CodeAccessSecurityEngine.cs
- CorrelationService.cs
- Bold.cs
- RuntimeConfig.cs
- ExpressionBinding.cs
- SliderAutomationPeer.cs
- SwitchElementsCollection.cs
- ButtonChrome.cs
- FixedDocumentPaginator.cs
- MarkupExtensionSerializer.cs
- PropertyChangingEventArgs.cs
- SqlFactory.cs
- QueryableFilterRepeater.cs
- BypassElementCollection.cs
- LicenseContext.cs
- SqlClientWrapperSmiStream.cs
- MetabaseServerConfig.cs
- XmlSchemaSubstitutionGroup.cs
- GenerateHelper.cs