KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > kawa > TelnetRepl


1 package kawa;
2 import gnu.expr.*;
3 import gnu.mapping.*;
4
5 public class TelnetRepl extends Procedure0
6 {
7   // close when finished.
8
java.net.Socket JavaDoc socket;
9
10   Language language;
11
12   public TelnetRepl(Language language, java.net.Socket JavaDoc socket)
13   {
14     this.language = language;
15     this.socket = socket;
16   }
17
18   public Object JavaDoc apply0 ()
19   {
20     try
21       {
22     Shell.run(language, Environment.getCurrent());
23     return Values.empty;
24       }
25     finally
26       {
27     try
28       {
29         socket.close();
30       }
31     catch (java.io.IOException JavaDoc ex)
32       {
33       }
34       }
35   }
36
37
38   /** Run a Kawa repl as a telnet server.
39       @param client A client that has connected to us,
40       and that wants to use the telnet protocol to talk to a
41       Scheme read-eval-print-loop. */

42   public static void serve (Language language, java.net.Socket JavaDoc client)
43     throws java.io.IOException JavaDoc
44   {
45     Telnet conn = new Telnet(client, true);
46     java.io.OutputStream JavaDoc sout = conn.getOutputStream();
47     java.io.InputStream JavaDoc sin = conn.getInputStream();
48     OutPort out = new OutPort(sout);
49     TtyInPort in = new TtyInPort(sin, "<stdin>", out);
50     /*
51     conn.request(Telnet.DO, Telnet.EOF);
52     conn.request(Telnet.DO, Telnet.NAWS);
53     conn.request(Telnet.DO, Telnet.TTYPE);
54     conn.request(Telnet.DO, Telnet.LINEMODE);
55     */

56
57     Thread JavaDoc thread = new Future(new TelnetRepl(language, client),
58                    Environment.getCurrent(),
59                    in, out, out);
60     thread.start();
61   }
62 }
63
64
Popular Tags