Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Protocols / SoapExtensionStream.cs / 1305376 / SoapExtensionStream.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System; using System.IO; using System.Web.Services; internal class SoapExtensionStream : Stream { internal Stream innerStream; bool hasWritten = false; bool streamReady; internal SoapExtensionStream() { } private bool EnsureStreamReady() { if (streamReady) return true; throw new InvalidOperationException(Res.GetString(Res.WebBadStreamState)); } public override bool CanRead { get { EnsureStreamReady(); return innerStream.CanRead; } } public override bool CanSeek { get { EnsureStreamReady(); return innerStream.CanSeek; } } public override bool CanWrite { get { EnsureStreamReady(); return innerStream.CanWrite; } } internal bool HasWritten { get { return this.hasWritten; } } public override long Length { get { EnsureStreamReady(); return innerStream.Length; } } public override long Position { get { EnsureStreamReady(); return innerStream.Position; } set { EnsureStreamReady(); this.hasWritten = true; innerStream.Position = value; } } protected override void Dispose(bool disposing) { try { if (disposing) { EnsureStreamReady(); this.hasWritten = true; innerStream.Close(); } } finally { base.Dispose(disposing); } } public override void Flush() { EnsureStreamReady(); this.hasWritten = true; innerStream.Flush(); } public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, Object state) { EnsureStreamReady(); return innerStream.BeginRead(buffer, offset, count, callback, state); } public override int EndRead(IAsyncResult asyncResult) { EnsureStreamReady(); return innerStream.EndRead(asyncResult); } public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, Object state) { EnsureStreamReady(); this.hasWritten = true; return innerStream.BeginWrite(buffer, offset, count, callback, state); } public override void EndWrite(IAsyncResult asyncResult) { EnsureStreamReady(); this.hasWritten = true; innerStream.EndWrite(asyncResult); } public override long Seek(long offset, SeekOrigin origin) { EnsureStreamReady(); return innerStream.Seek(offset, origin); } public override void SetLength(long value) { EnsureStreamReady(); innerStream.SetLength(value); } public override int Read(byte[] buffer, int offset, int count) { EnsureStreamReady(); return innerStream.Read(buffer, offset, count); } public override int ReadByte() { EnsureStreamReady(); return innerStream.ReadByte(); } public override void Write(byte[] buffer, int offset, int count) { EnsureStreamReady(); this.hasWritten = true; innerStream.Write(buffer, offset, count); } public override void WriteByte(byte value) { EnsureStreamReady(); this.hasWritten = true; innerStream.WriteByte(value); } internal void SetInnerStream(Stream stream) { innerStream = stream; this.hasWritten = false; } internal void SetStreamReady() { streamReady = true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System; using System.IO; using System.Web.Services; internal class SoapExtensionStream : Stream { internal Stream innerStream; bool hasWritten = false; bool streamReady; internal SoapExtensionStream() { } private bool EnsureStreamReady() { if (streamReady) return true; throw new InvalidOperationException(Res.GetString(Res.WebBadStreamState)); } public override bool CanRead { get { EnsureStreamReady(); return innerStream.CanRead; } } public override bool CanSeek { get { EnsureStreamReady(); return innerStream.CanSeek; } } public override bool CanWrite { get { EnsureStreamReady(); return innerStream.CanWrite; } } internal bool HasWritten { get { return this.hasWritten; } } public override long Length { get { EnsureStreamReady(); return innerStream.Length; } } public override long Position { get { EnsureStreamReady(); return innerStream.Position; } set { EnsureStreamReady(); this.hasWritten = true; innerStream.Position = value; } } protected override void Dispose(bool disposing) { try { if (disposing) { EnsureStreamReady(); this.hasWritten = true; innerStream.Close(); } } finally { base.Dispose(disposing); } } public override void Flush() { EnsureStreamReady(); this.hasWritten = true; innerStream.Flush(); } public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, Object state) { EnsureStreamReady(); return innerStream.BeginRead(buffer, offset, count, callback, state); } public override int EndRead(IAsyncResult asyncResult) { EnsureStreamReady(); return innerStream.EndRead(asyncResult); } public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, Object state) { EnsureStreamReady(); this.hasWritten = true; return innerStream.BeginWrite(buffer, offset, count, callback, state); } public override void EndWrite(IAsyncResult asyncResult) { EnsureStreamReady(); this.hasWritten = true; innerStream.EndWrite(asyncResult); } public override long Seek(long offset, SeekOrigin origin) { EnsureStreamReady(); return innerStream.Seek(offset, origin); } public override void SetLength(long value) { EnsureStreamReady(); innerStream.SetLength(value); } public override int Read(byte[] buffer, int offset, int count) { EnsureStreamReady(); return innerStream.Read(buffer, offset, count); } public override int ReadByte() { EnsureStreamReady(); return innerStream.ReadByte(); } public override void Write(byte[] buffer, int offset, int count) { EnsureStreamReady(); this.hasWritten = true; innerStream.Write(buffer, offset, count); } public override void WriteByte(byte value) { EnsureStreamReady(); this.hasWritten = true; innerStream.WriteByte(value); } internal void SetInnerStream(Stream stream) { innerStream = stream; this.hasWritten = false; } internal void SetStreamReady() { streamReady = true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _emptywebproxy.cs
- SvcMapFileSerializer.cs
- UrlMapping.cs
- StorageMappingItemLoader.cs
- EnumValAlphaComparer.cs
- InstanceOwnerQueryResult.cs
- BaseTreeIterator.cs
- AuthenticationConfig.cs
- ListSortDescriptionCollection.cs
- GridViewEditEventArgs.cs
- TrustManagerMoreInformation.cs
- RoutedCommand.cs
- ContextStaticAttribute.cs
- EFColumnProvider.cs
- AutomationPattern.cs
- XsdBuilder.cs
- ToolZoneDesigner.cs
- UnconditionalPolicy.cs
- SerTrace.cs
- JoinTreeNode.cs
- ChtmlTextWriter.cs
- FreeFormDragDropManager.cs
- CollectionConverter.cs
- EventRouteFactory.cs
- ButtonBase.cs
- DetailsViewAutoFormat.cs
- Grid.cs
- CompoundFileReference.cs
- SplitContainer.cs
- XmlSchemaAppInfo.cs
- HtmlGenericControl.cs
- XPathNavigator.cs
- RenderData.cs
- BuildManager.cs
- NetworkInformationException.cs
- CacheMemory.cs
- InputLangChangeEvent.cs
- XmlAttribute.cs
- ChannelSinkStacks.cs
- ProcessHost.cs
- InstanceDataCollection.cs
- sortedlist.cs
- TypeBuilderInstantiation.cs
- PropertyValue.cs
- SystemWebCachingSectionGroup.cs
- MimePart.cs
- HtmlElementCollection.cs
- Parameter.cs
- DurableInstanceManager.cs
- loginstatus.cs
- DataGridViewDataErrorEventArgs.cs
- GridViewPageEventArgs.cs
- DockAndAnchorLayout.cs
- ValidationErrorEventArgs.cs
- DynamicDataRouteHandler.cs
- GroupQuery.cs
- ByteStack.cs
- AnnouncementDispatcherAsyncResult.cs
- MruCache.cs
- MULTI_QI.cs
- ToolBarOverflowPanel.cs
- XmlSchemaSimpleContentRestriction.cs
- DbConnectionPoolGroup.cs
- OdbcConnection.cs
- EventData.cs
- DetailsViewCommandEventArgs.cs
- BrowserCapabilitiesFactory.cs
- DefaultPropertyAttribute.cs
- BitmapCodecInfo.cs
- SR.cs
- DeferredTextReference.cs
- TextStore.cs
- SerTrace.cs
- WebProxyScriptElement.cs
- AssemblyFilter.cs
- ContentControl.cs
- WebResponse.cs
- WrappingXamlSchemaContext.cs
- UMPAttributes.cs
- SafeNativeMethods.cs
- TouchEventArgs.cs
- RtfControlWordInfo.cs
- SplitterCancelEvent.cs
- XmlSchemaObjectCollection.cs
- AttributeData.cs
- PathGeometry.cs
- ContainsRowNumberChecker.cs
- CompleteWizardStep.cs
- Quaternion.cs
- CompositeActivityCodeGenerator.cs
- Msmq4PoisonHandler.cs
- InputQueue.cs
- GraphicsContext.cs
- FastEncoderWindow.cs
- LineSegment.cs
- FileLevelControlBuilderAttribute.cs
- Vector3DCollection.cs
- TraceData.cs
- XPathExpr.cs
- ButtonFieldBase.cs