View Javadoc

1   package expectj;
2   
3   import java.io.IOException;
4   import java.io.InputStream;
5   import java.io.OutputStream;
6   
7   /***
8    * Implementors of this interface can be spawned by {@link expectj.ExpectJ}.
9    *
10   * @author Johan Walles
11   */
12  public interface Spawnable
13  {
14      /***
15       * This method launches the {@link Spawn}.  It starts the
16       * {@link StreamPiper}s that enable copying of process stream contents to
17       * standard streams.
18       * @throws IOException on trouble.
19       */
20      public void start() throws IOException;
21  
22      /***
23       * Get a stream from which the {@link Spawn}'s stdout can be read.
24       * @return A stream that represents stdout of a spawned process.
25       * @see Process#getInputStream()
26       */
27      public InputStream getStdout();
28  
29      /***
30       * Get a stream through which the {@link Spawn}'s stdin can be written to.
31       * @return A stream that represents stdin of a spawned process.
32       * @see Process#getOutputStream()
33       */
34      public OutputStream getStdin();
35  
36      /***
37       * Get a stream from which the {@link Spawn}'s stderr can be read.
38       * @return A stream that represents stderr of a spawned process, or null if there is
39       * no stderr.
40       * @see Process#getErrorStream()
41       */
42      public InputStream getStderr();
43  
44      /***
45       * Find out whether the {@link Spawn} has finished.
46       * @return true if a spawned process has finished.
47       */
48      public boolean isClosed();
49  
50      /***
51       * If the {@link Spawn} has exited, its exit code is returned.
52       * @return The exit code of the finished spawn.
53       * @throws ExpectJException if the spawn is still running.
54       * @see #isClosed()
55       * @see System#exit(int)
56       */
57      public int getExitValue() throws ExpectJException;
58  
59      /***
60       * Stops a running {@link Spawn}.  After this method returns,
61       * {@link #isClosed()} must return true.
62       */
63      public void stop();
64  
65      /***
66       * Register a listener that will be called when this spawnable closes.
67       *
68       * @param closeListener The listener that will be notified when this
69       * spawnable closes.
70       */
71      public void setCloseListener(CloseListener closeListener);
72  
73      /***
74       * Will be notified when a {@link Spawnable} closes.
75       *
76       * @see #setCloseListener
77       */
78      public interface CloseListener {
79          /***
80           * Will be called when a {@link Spawnable} closes.
81           */
82          public void onClose();
83      }
84  }