Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Console.cs
- Bezier.cs
- ReachNamespaceInfo.cs
- XomlDesignerLoader.cs
- ToolStripDropDownClosingEventArgs.cs
- CollectionsUtil.cs
- PhysicalAddress.cs
- ProfileEventArgs.cs
- RepeatInfo.cs
- XmlSchemaComplexContent.cs
- NamespaceQuery.cs
- UndoEngine.cs
- DataGridColumnHeaderCollection.cs
- IERequestCache.cs
- SamlSubjectStatement.cs
- XmlTextAttribute.cs
- RichTextBox.cs
- Scheduling.cs
- ParameterBuilder.cs
- XmlDataSourceNodeDescriptor.cs
- TypeUtil.cs
- CFStream.cs
- ContentIterators.cs
- Ticks.cs
- InfiniteTimeSpanConverter.cs
- TemplateControlCodeDomTreeGenerator.cs
- XNameConverter.cs
- InvalidWMPVersionException.cs
- ToolStripPanel.cs
- CanonicalFontFamilyReference.cs
- PointIndependentAnimationStorage.cs
- UrlPath.cs
- XsltLoader.cs
- QueryOpcode.cs
- ModelUIElement3D.cs
- SwitchAttribute.cs
- BindingWorker.cs
- basenumberconverter.cs
- ColorTypeConverter.cs
- StylusOverProperty.cs
- SByteConverter.cs
- ConnectionsZone.cs
- WebPartDisplayModeEventArgs.cs
- Pair.cs
- BaseParaClient.cs
- DataGridTextBox.cs
- ViewGenResults.cs
- VersionPair.cs
- WebDisplayNameAttribute.cs
- BeginStoryboard.cs
- TreeNodeCollection.cs
- MSG.cs
- AtlasWeb.Designer.cs
- ProjectionCamera.cs
- XmlTextWriter.cs
- handlecollector.cs
- InfiniteIntConverter.cs
- RelatedEnd.cs
- TableLayoutSettings.cs
- RealizationContext.cs
- Vector3DValueSerializer.cs
- QuaternionConverter.cs
- ConnectionManagementElement.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- Form.cs
- StringFunctions.cs
- MemoryMappedViewAccessor.cs
- LocalizationParserHooks.cs
- MethodInfo.cs
- ExpressionBinding.cs
- RealProxy.cs
- CryptoApi.cs
- UIntPtr.cs
- IndexingContentUnit.cs
- WebPartAuthorizationEventArgs.cs
- Operators.cs
- AppSettingsSection.cs
- ThaiBuddhistCalendar.cs
- TextSegment.cs
- ProviderException.cs
- ModuleConfigurationInfo.cs
- NotSupportedException.cs
- TreeViewImageGenerator.cs
- Stroke.cs
- FormViewRow.cs
- ThemeDirectoryCompiler.cs
- TemplateControlCodeDomTreeGenerator.cs
- VectorAnimation.cs
- Parallel.cs
- XPathConvert.cs
- WebPartTracker.cs
- StringWriter.cs
- ConfigXmlText.cs
- StandardBindingCollectionElement.cs
- GB18030Encoding.cs
- InheritanceAttribute.cs
- SortedDictionary.cs
- DataServiceExpressionVisitor.cs
- VisualState.cs
- DriveInfo.cs