You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -0,0 +1,153 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="SoapExtensionStream.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user