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