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  }