1 package org.perl.inline.java ;
2 
3 import java.io.* ;
4 import java.net.* ;
5 import java.util.* ;
6 
7 
8 class InlineJavaServerThread extends Thread {
9 	private InlineJavaServer ijs ;
10 	private Socket client ;
11 	private BufferedReader br ;
12 	private BufferedWriter bw ;
13 	private InlineJavaUserClassLoader ijucl ;
14 
15 
InlineJavaServerThread(String name, InlineJavaServer _ijs, Socket _client, InlineJavaUserClassLoader _ijucl)16 	InlineJavaServerThread(String name, InlineJavaServer _ijs, Socket _client, InlineJavaUserClassLoader _ijucl) throws IOException {
17 		super(name) ;
18 		client = _client ;
19 		ijs = _ijs ;
20 		ijucl = _ijucl ;
21 
22 		InputStreamReader ir = new InputStreamReader(client.getInputStream()) ;
23 		OutputStreamWriter or = new OutputStreamWriter(client.getOutputStream()) ;
24 		br = new BufferedReader(ir) ;
25 		bw = new BufferedWriter(or) ;
26 	}
27 
28 
GetReader()29 	BufferedReader GetReader(){
30 		return br ;
31 	}
32 
33 
GetWriter()34 	BufferedWriter GetWriter(){
35 		return bw ;
36 	}
37 
38 
GetUserClassLoader()39 	InlineJavaUserClassLoader GetUserClassLoader(){
40 		return ijucl ;
41 	}
42 
43 
run()44 	public void run(){
45 		try {
46 			ijs.AddThread(this) ;
47 
48 			while (true){
49 				String cmd = br.readLine() ;
50 
51 				String resp = ijs.ProcessCommand(cmd) ;
52 				if (resp != null){
53 					bw.write(resp) ;
54 					bw.flush() ;
55 				}
56 				else {
57 					client.close() ;
58 					break ;
59 				}
60 			}
61 		}
62 		catch (IOException e){
63 			System.err.println("IO error: " + e.getMessage()) ;
64 		}
65 		finally {
66 			ijs.RemoveThread(this) ;
67 		}
68 	}
69 }
70