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 '***********************************************************************************/
36 #region StringTextWriter
39 /// Use this wrapper to ensure that only strings get passed accross the AppDomain
40 /// boundary. Otherwise tests will break when non-remotable objects are passed to
41 /// Console.Write/WriteLine.
43 public class StringTextWriter : TextWriter
45 public StringTextWriter( TextWriter aTextWriter )
47 theTextWriter = aTextWriter;
50 protected TextWriter theTextWriter;
52 override public void Write(char aChar)
54 theTextWriter.Write(aChar);
57 override public void Write(string aString)
59 theTextWriter.Write(aString);
62 override public void WriteLine(string aString)
64 theTextWriter.WriteLine(aString);
67 override public System.Text.Encoding Encoding
69 get { return theTextWriter.Encoding; }
75 #region BufferedStringTextWriter
78 /// This wrapper derives from StringTextWriter and adds buffering
79 /// to improve cross-domain performance. The buffer is flushed whenever
80 /// it reaches or exceeds a maximum size or when WriteLine is called.
82 public class BufferedStringTextWriter : StringTextWriter
84 public BufferedStringTextWriter( TextWriter aTextWriter ) : base( aTextWriter ){ }
86 private static readonly int MAX_BUFFER = 1000;
87 private StringBuilder sb = new StringBuilder( MAX_BUFFER );
89 override public void Write(char aChar)
98 override public void Write(string aString)
102 sb.Append( aString );
107 override public void WriteLine(string aString)
111 sb.Append( aString );
117 override public void Flush()
123 theTextWriter.Write( sb.ToString() );
129 private void CheckBuffer()
131 if ( sb.Length >= MAX_BUFFER )
135 override public void Close()
138 theTextWriter.Close();