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; }
72 public override void Close()
75 theTextWriter
.Close ();
78 public override void Flush()
80 theTextWriter
.Flush ();
86 #region BufferedStringTextWriter
89 /// This wrapper derives from StringTextWriter and adds buffering
90 /// to improve cross-domain performance. The buffer is flushed whenever
91 /// it reaches or exceeds a maximum size or when Flush is called.
93 public class BufferedStringTextWriter
: StringTextWriter
95 public BufferedStringTextWriter( TextWriter aTextWriter
) : base( aTextWriter
){ }
97 private static readonly int MAX_BUFFER
= 1000;
98 private StringBuilder sb
= new StringBuilder( MAX_BUFFER
);
100 override public void Write(char aChar
)
109 override public void Write(string aString
)
113 sb
.Append( aString
);
118 override public void WriteLine(string aString
)
122 sb
.Append( aString
);
128 override public void Flush()
134 theTextWriter
.Write( sb
.ToString() );
139 theTextWriter
.Flush();
142 private void CheckBuffer()
144 if ( sb
.Length
>= MAX_BUFFER
)