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 }