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
- UDPClient.cs
- TraceRecords.cs
- HttpStreamXmlDictionaryWriter.cs
- Transform3DCollection.cs
- ProfileService.cs
- ListenerElementsCollection.cs
- StringSource.cs
- LogEntrySerializationException.cs
- DbProviderFactory.cs
- iisPickupDirectory.cs
- EntityCommandCompilationException.cs
- DoubleLinkListEnumerator.cs
- OptionalColumn.cs
- AtomMaterializerLog.cs
- VariableQuery.cs
- CaseStatementProjectedSlot.cs
- PeerInvitationResponse.cs
- SiteMapNodeCollection.cs
- GlyphRun.cs
- EntityDataReader.cs
- HttpPostProtocolReflector.cs
- XmlSchemaSubstitutionGroup.cs
- TextDecoration.cs
- TabControlCancelEvent.cs
- AsyncResult.cs
- PrintPageEvent.cs
- SelectionProcessor.cs
- LambdaCompiler.ControlFlow.cs
- ErrorFormatterPage.cs
- LazyTextWriterCreator.cs
- RawTextInputReport.cs
- FontStretchConverter.cs
- DataTable.cs
- ButtonChrome.cs
- DuplicateDetector.cs
- Error.cs
- ObjectDataSourceFilteringEventArgs.cs
- diagnosticsswitches.cs
- PerCallInstanceContextProvider.cs
- IApplicationTrustManager.cs
- ScriptRef.cs
- OletxTransactionHeader.cs
- FindCriteriaElement.cs
- ProxyWebPartManager.cs
- XPathExpr.cs
- FixUpCollection.cs
- IdentifierElement.cs
- BezierSegment.cs
- DataPagerField.cs
- BitmapEffectrendercontext.cs
- SqlVisitor.cs
- HtmlWindow.cs
- LeaseManager.cs
- CaseInsensitiveComparer.cs
- FilterableAttribute.cs
- InternalCache.cs
- FieldToken.cs
- InvalidPrinterException.cs
- ComplexPropertyEntry.cs
- TimeSpan.cs
- HopperCache.cs
- DateTimeValueSerializer.cs
- EditingScopeUndoUnit.cs
- TimeSpan.cs
- PolicyLevel.cs
- CollectionViewSource.cs
- ListParaClient.cs
- DefaultTextStoreTextComposition.cs
- RC2CryptoServiceProvider.cs
- ToolBarButton.cs
- Base64Encoder.cs
- EventlogProvider.cs
- LocalFileSettingsProvider.cs
- NetworkStream.cs
- FrameDimension.cs
- SimpleType.cs
- ClientUrlResolverWrapper.cs
- DocumentReferenceCollection.cs
- StringCollection.cs
- DetailsViewModeEventArgs.cs
- TextDecorationCollection.cs
- NativeMethods.cs
- AppDomainAttributes.cs
- EntityDataSource.cs
- DataSourceXmlAttributeAttribute.cs
- VisualStateGroup.cs
- DynamicFilter.cs
- PolicyException.cs
- EntityExpressionVisitor.cs
- GeometryDrawing.cs
- ViewValidator.cs
- UserPreferenceChangingEventArgs.cs
- DataGridViewControlCollection.cs
- PipeSecurity.cs
- FieldReference.cs
- SoapAttributeAttribute.cs
- ProfileSettings.cs
- PeerInvitationResponse.cs
- DockPatternIdentifiers.cs
- EditingCoordinator.cs