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
- PolicyException.cs
- Grid.cs
- TabItemAutomationPeer.cs
- Converter.cs
- CloudCollection.cs
- PaperSize.cs
- ListControlDataBindingHandler.cs
- RepeatInfo.cs
- XsltOutput.cs
- BooleanFunctions.cs
- SerializationStore.cs
- MenuItemStyleCollection.cs
- WorkflowServiceOperationListItem.cs
- ClientSideProviderDescription.cs
- Attributes.cs
- SoapRpcServiceAttribute.cs
- SelectQueryOperator.cs
- UIElement.cs
- DataError.cs
- Border.cs
- DataProtection.cs
- SqlDependencyUtils.cs
- SchemaMerger.cs
- SqlDuplicator.cs
- Geometry3D.cs
- CodeTypeOfExpression.cs
- TreeViewItem.cs
- AsyncResult.cs
- DataViewManager.cs
- MetaType.cs
- RectangleHotSpot.cs
- SoapServerMethod.cs
- BaseAsyncResult.cs
- HttpProcessUtility.cs
- TransformValueSerializer.cs
- GeneralTransform.cs
- DoubleLinkList.cs
- DataDocumentXPathNavigator.cs
- ClrProviderManifest.cs
- Frame.cs
- _ListenerRequestStream.cs
- Rect3D.cs
- COMException.cs
- ControlEvent.cs
- AnnotationAdorner.cs
- SingleAnimation.cs
- EpmAttributeNameBuilder.cs
- AnnotationComponentManager.cs
- CompilationUtil.cs
- SortDescription.cs
- XamlToRtfParser.cs
- BrowsableAttribute.cs
- TextDataBindingHandler.cs
- StringArrayConverter.cs
- FunctionDetailsReader.cs
- XPathArrayIterator.cs
- CollectionChangedEventManager.cs
- ObjectItemConventionAssemblyLoader.cs
- basevalidator.cs
- SafeHandle.cs
- EditorBrowsableAttribute.cs
- NavigationService.cs
- MessageEventSubscriptionService.cs
- EntitySqlQueryCacheKey.cs
- Int32AnimationBase.cs
- EdmSchemaError.cs
- DataSourceProvider.cs
- CrossAppDomainChannel.cs
- CompilerParameters.cs
- ApplicationHost.cs
- TdsParameterSetter.cs
- ViewStateModeByIdAttribute.cs
- MainMenu.cs
- ObjectSecurity.cs
- BinaryQueryOperator.cs
- MSG.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- AsynchronousChannel.cs
- WindowsFormsLinkLabel.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- MatchAttribute.cs
- TrustExchangeException.cs
- EventLogPermissionAttribute.cs
- ClosureBinding.cs
- Literal.cs
- SQLConvert.cs
- ProxyHelper.cs
- RenderData.cs
- PolyLineSegment.cs
- ObjectDataSourceMethodEventArgs.cs
- HttpsChannelListener.cs
- PropertyPushdownHelper.cs
- AttachedAnnotation.cs
- OleDbStruct.cs
- InkPresenterAutomationPeer.cs
- DefaultDiscoveryServiceExtension.cs
- ListViewItem.cs
- DataMemberListEditor.cs
- LZCodec.cs
- ColorConverter.cs