KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > telnet > TelnetTestResponder


1 /*
2  * Copyright 2003-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.net.telnet;
17
18 import java.io.InputStream JavaDoc;
19 import java.io.OutputStream JavaDoc;
20
21
22 /***
23  * Simple stream responder.
24  * Waits for strings on an input stream and answers
25  * sending corresponfing strings on an output stream.
26  * The reader runs in a separate thread.
27  * <p>
28  * @author Bruno D'Avanzo
29  ***/

30 public class TelnetTestResponder implements Runnable JavaDoc
31 {
32     InputStream JavaDoc _is;
33     OutputStream JavaDoc _os;
34     String JavaDoc _inputs[], _outputs[];
35     long _timeout;
36
37     /***
38      * Constructor.
39      * Starts a new thread for the reader.
40      * <p>
41      * @param is - InputStream on which to read.
42      * @param os - OutputStream on which to answer.
43      * @param inputs - Array of waited for Strings.
44      * @param inputs - Array of answers.
45      ***/

46     public TelnetTestResponder(InputStream JavaDoc is, OutputStream JavaDoc os, String JavaDoc inputs[], String JavaDoc outputs[], long timeout)
47     {
48         _is = is;
49         _os = os;
50         _timeout = timeout;
51         _inputs = inputs;
52         _outputs = outputs;
53         Thread JavaDoc reader = new Thread JavaDoc (this);
54
55         reader.start();
56     }
57
58     /***
59      * Runs the responder
60      ***/

61     public void run()
62     {
63         boolean result = false;
64         byte buffer[] = new byte[32];
65         long starttime = System.currentTimeMillis();
66
67         try
68         {
69             String JavaDoc readbytes = new String JavaDoc();
70             while(!result &&
71                   ((System.currentTimeMillis() - starttime) < _timeout))
72             {
73                 if(_is.available() > 0)
74                 {
75                     int ret_read = _is.read(buffer);
76                     readbytes = readbytes + new String JavaDoc(buffer, 0, ret_read);
77
78                     for(int ii=0; ii<_inputs.length; ii++)
79                     {
80                         if(readbytes.indexOf(_inputs[ii]) >= 0)
81                         {
82                             Thread.sleep(1000 * ii);
83                             _os.write(_outputs[ii].getBytes());
84                             result = true;
85                         }
86                     }
87                 }
88                 else
89                 {
90                     Thread.sleep(500);
91                 }
92             }
93
94         }
95         catch (Exception JavaDoc e)
96         {
97             System.err.println("Error while waiting endstring. " + e.getMessage());
98         }
99     }
100 }
101
Popular Tags