1 //header of class--------------------------------------------------------------- 2 import java.*; 3 import java.io.*; 4 import java.net.*; 5 import java.util.*; 6 7 public class CommandHandler extends TCPService{ 8 public final static int BUILD=42; 9 //serve.zdys-------------------------------------------------------------------- 10 public void serve(){ 11 try{ 12 BufferedReader br= new BufferedReader(new InputStreamReader(so.getInputStream())); 13 PrintWriter pw= new PrintWriter(so.getOutputStream()); 14 pw.println("supported commands are:"); 15 pw.println(" killserver"); 16 pw.println(" causes zServer to System.exit(1)"); 17 pw.println(" listservices"); 18 pw.println(" lists available services"); 19 pw.println(" stopservice <ip:port>"); 20 pw.println(" stops a service"); 21 pw.println(" q"); 22 pw.println(" terminates session"); 23 pw.flush(); 24 String[] cmd; 25 String line; 26 do{ 27 line= br.readLine(); 28 cmd= zServer.toStringArray(line, " "); 29 if(line.equals("q")){ 30 line= null; 31 }else if(cmd[0].startsWith("listservices")){ 32 Enumeration en= zServer.services.keys(); 33 String key; 34 while(en.hasMoreElements()){ 35 key= (String)en.nextElement(); 36 pw.println("<ip:port>= '"+ key+ "' "+ zServer.services.get(key).getClass().getName()); 37 } 38 }else if(cmd[0].startsWith("stopservice")){ 39 if(cmd.length!= 2){ 40 pw.println("syntax: stopservice <ip:port>"); 41 }else if(zServer.services.get(cmd[1])!= null){ 42 Service temp= (Service)zServer.services.get(cmd[1]); 43 String name= temp.getClass().getName(); 44 temp.stopService(); 45 pw.println("service "+ name+ " on ip:port "+ cmd[1]+ " stopped."); 46 zServer.services.remove(cmd[1]); 47 }else{ 48 pw.println("no service running on <ip:port> <"+ cmd[1]+ ">"); 49 } 50 }else if(cmd[0].startsWith("killserver")){ 51 pw.println("killing server, goodbye"); 52 pw.flush(); 53 Utils.pr(this, "killrequest sent by: "+ so.getInetAddress()); 54 zServer.killServer(); 55 }else{ 56 pw.println("unrecognized command:"+ cmd[0]); 57 } 58 pw.flush(); 59 }while(line!= null); 60 so.close(); 61 }catch(Exception ex){ 62 Utils.pr(this, "ERROR in run():"+ ex); 63 } 64 } 65 //end of class------------------------------------------------------------------ 66 }