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