1
#region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig
2
/************************************************************************************
4
' Copyright � 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
5
' Copyright � 2000-2003 Philip A. Craig
7
' This software is provided 'as-is', without any express or implied warranty. In no
8
' event will the authors be held liable for any damages arising from the use of this
11
' Permission is granted to anyone to use this software for any purpose, including
12
' commercial applications, and to alter it and redistribute it freely, subject to the
13
' following restrictions:
15
' 1. The origin of this software must not be misrepresented; you must not claim that
16
' you wrote the original software. If you use this software in a product, an
17
' acknowledgment (see the following) in the product documentation is required.
19
' Portions Copyright � 2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
20
' or Copyright � 2000-2003 Philip A. Craig
22
' 2. Altered source versions must be plainly marked as such, and must not be
23
' misrepresented as being the original software.
25
' 3. This notice may not be removed or altered from any source distribution.
27
'***********************************************************************************/
35
// TODO: This class is not currently being used. Review to
36
// see if we will use it again, otherwise drop it.
37
#region StringTextWriter
40
/// Use this wrapper to ensure that only strings get passed accross the AppDomain
41
/// boundary. Otherwise tests will break when non-remotable objects are passed to
42
/// Console.Write/WriteLine.
44
public class StringTextWriter : TextWriter
46
public StringTextWriter( TextWriter aTextWriter )
48
theTextWriter = aTextWriter;
51
protected TextWriter theTextWriter;
53
override public void Write(char aChar)
55
theTextWriter.Write(aChar);
58
override public void Write(string aString)
60
theTextWriter.Write(aString);
63
override public void WriteLine(string aString)
65
theTextWriter.WriteLine(aString);
68
override public System.Text.Encoding Encoding
70
get { return theTextWriter.Encoding; }
73
public override void Close()
76
theTextWriter.Close ();
79
public override void Flush()
81
theTextWriter.Flush ();
87
#region BufferedStringTextWriter
90
/// This wrapper derives from StringTextWriter and adds buffering
91
/// to improve cross-domain performance. The buffer is flushed whenever
92
/// it reaches or exceeds a maximum size or when Flush is called.
94
public class BufferedStringTextWriter : StringTextWriter
96
public BufferedStringTextWriter( TextWriter aTextWriter ) : base( aTextWriter ){ }
98
private static readonly int MAX_BUFFER = 1000;
99
private StringBuilder sb = new StringBuilder( MAX_BUFFER );
101
override public void Write(char aChar)
110
override public void Write(string aString)
114
sb.Append( aString );
119
override public void WriteLine(string aString)
123
sb.Append( aString );
129
override public void Flush()
135
theTextWriter.Write( sb.ToString() );
140
theTextWriter.Flush();
143
private void CheckBuffer()
145
if ( sb.Length >= MAX_BUFFER )