1  //header of class---------------------------------------------------------------
 2  import java.*;
 3  import java.io.*;
 4  import java.util.*;
 5
 6  public class zServer{
 7      public static String INIFILE= "zServer.ini";
 8      public static Hashtable constants;
 9      public static Hashtable threads;
10      public static Hashtable services;
11      public final static int BUILD=80;
12  //main.zdys---------------------------------------------------------------------
13  public static void main(String[] args){
14      constants= new Hashtable();
15      threads= new Hashtable();
16      services= new Hashtable();
17      try{
18          BufferedReader br= new BufferedReader(new FileReader(INIFILE));
19          String[] arg;
20          while((arg= getNextLine(br))!= null){
21              if(arg[0].equals("constants{")){
22                  while(!(arg= getNextLine(br))[0].equals("}")){
23                      if(arg[0].endsWith("{")){
24                          String newhash= arg[0].substring(0, arg[0].length()- 1);
25                          Hashtable hash= new Hashtable();
26                          while(!(arg= getNextLine(br))[0].equals("}")){
27                              hash.put(arg[0], arg[1]);
28                          }
29                          constants.put(newhash, hash);
30                      }
31                  }
32              }else if(arg[0].equals("threads{")){
33                  while(!(arg= getNextLine(br))[0].equals("}")){
34                      threads.put(arg[1], startCommandLineThread(arg));
35                  }
36              }else if(arg[0].equals("services{")){
37                  while(!(arg= getNextLine(br))[0].equals("}")){
38                      services.put(arg[2]+ ":"+ arg[1], startCommandLineThread(arg));
39                  }
40              }else if(arg[0].startsWith("#")){
41                  ;   // ignore comment
42              }else{
43                  Utils.pr("ERROR unrecognized line:"+ arg.toString());
44              }
45          }
46      }catch(Throwable tw){
47          Utils.pr("ERROR in zServer.main:"+ tw);
48      }
49  }
50  //getNextLine.zdys--------------------------------------------------------------
51  private static String[] getNextLine(BufferedReader br)throws IOException{
52      String line;
53      do{
54          line= br.readLine();
55          if(line== null){
56              return(null);
57          }
58      }while(line.startsWith("#"));
59      return(toStringArray(line, ";"));
60  }
61  //startCommandLineThread.zdys---------------------------------------------------
62  private static CommandLineThread startCommandLineThread(String[] arg){
63      try{
64          CommandLineThread clt= (CommandLineThread)(Class.forName(arg[0])).newInstance();
65          clt.arg= arg;
66          clt.start();
67          return(clt);
68      }catch(Exception ex){
69          Utils.pr("ERROR in startCommandLineThread("+ arg+ "):"+ ex);
70          return(null);
71      }
72  }
73  //toStringArray.zdys------------------------------------------------------------
74  public static String[] toStringArray(String line, String delimiter){
75      if(line== null){
76          return(new String[]{});
77      }
78      StringTokenizer st= new StringTokenizer(line, delimiter);
79      String[] ret= new String[st.countTokens()];
80      int pos= 0;
81      while(st.hasMoreTokens()){
82          ret[pos]= st.nextToken().trim();
83          pos++;
84      }
85      return(ret);
86  }
87  //killServer.zdys---------------------------------------------------------------
88  public static void killServer(){
89      Utils.pr("killServer called, terminating");
90      System.exit(1);
91  }
92  //end of class------------------------------------------------------------------
93  }