View Javadoc

1   // Copyright (C) 2004-2009 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.engine.agent;
23  
24  import java.io.StringWriter;
25  import java.io.Writer;
26  
27  
28  /**
29   * Simple process for <code>TestChildProcess</code> to play with.
30   *
31   * @author Philip Aston
32   */
33  public class EchoClass {
34  
35    public static final String ECHO_ARGUMENTS = "echo arguments";
36    public static final String ECHO_STREAMS = "echo streams";
37  
38    public static void main(String arguments[]) throws Exception {
39  
40      final Writer commandWriter = new StringWriter();
41  
42      while (true) {
43        final int c = System.in.read();
44  
45        if (c == -1) {
46          throw new Exception("Could not read command");
47        }
48        else if (c == '\n') {
49          break;
50        }
51        else {
52          commandWriter.write(c);
53        }
54      }
55  
56      final String command = commandWriter.toString();
57  
58      if (command.equals(ECHO_ARGUMENTS)) {
59        for (int i=0; i<arguments.length; ++i) {
60          System.out.print(arguments[i]);
61        }
62      }
63      else if (command.equals(ECHO_STREAMS)) {
64        while (true) {
65          final int b = System.in.read();
66  
67          if (b == -1) {
68            break;
69          }
70  
71          System.out.write(b);
72          System.err.write(b);
73        }
74      }
75  
76      // Testing shows that flushing our streams on exit is necessary to
77      // prevent lossage on win32, and maybe elsewhere.
78      System.out.flush();
79      System.err.flush();
80    }
81  }
82  
83