📄 tahitidaemon.java
字号:
ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(_control_port_num); } catch (IOException e) { System.err.println("Could not listen on port: " + _control_port_num); System.exit(1); } // Main control loop while (continue_processing) { try { clientSocket = serverSocket.accept(); socket_active = true; } catch (IOException e) { System.err.println("Accept failed."); System.exit(1); } try { out = new PrintWriter(clientSocket.getOutputStream(), true); out.println(_banner_string); out.println(_version_string); out.println("Connected to:" + serverSocket.toString()); } catch (IOException e) { System.err.println("getOutputStream failed."); System.exit(1); } try { in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); } catch (IOException e) { System.err.println("getInputStream failed."); System.exit(1); } //holds any strings to be returned to the client String outputString = null; // read loop, processes commands as // they are read from the socket while (continue_processing && socket_active) { try { String line = in.readLine(); outputString = command(line); out.println(outputString); out.println("done."); } catch (Throwable ex) { if (debug) { ex.printStackTrace(); System.err.println(ex.getMessage()); System.err.println("Socket closed"); socket_active = false; } out.println("Exception: ["+ex.toString()+"] With the message: ["+ex.getMessage()+"] has occurred, continuing."); } } } try { AgletRuntime.getAgletRuntime().shutdown(); out.close(); in.close(); clientSocket.close(); serverSocket.close(); } catch (IOException e) { System.err.println("close failed."); } if (reboot) { System.exit(0); } else { System.exit(1); } } /** * Called when an aglet request to show the document given as URL * * @param event an ContextEvent * @since * @see Aglet#showDocument */ public void showDocument(ContextEvent event) { if (message) { System.out.println("hyper link required :" + event.arg); } } /** * Called to show the message * * @param event an ContextEvent * @since */ public void showMessage(ContextEvent event) { if (message) { System.out.println((String) event.arg); } } /** * Interprets inputs from command line. * * @param line typed string * @return Description of the Returned Value * @exception Exception Description of Exception * @since */ String command(String line) throws Exception { Item item = null; StringTokenizer st = new StringTokenizer(line, " \t"); if (st.hasMoreTokens()) { String cmd = st.nextToken(); if ("shutdown".equalsIgnoreCase(cmd)) { shutdown = true; continue_processing = false; return ("shutting down"); } else if ("reboot".equalsIgnoreCase(cmd)) { reboot = true; continue_processing = false; return ("rebooting"); } else if ("list".equalsIgnoreCase(cmd)) { return (list()); } else if ("debug".equalsIgnoreCase(cmd)) { if (st.hasMoreTokens()) { if ("on".equalsIgnoreCase(st.nextToken())) { com.ibm.awb.misc.Debug.debug(true); debug = true; } else { com.ibm.awb.misc.Debug.debug(false); debug = false; } } com.ibm.awb.misc.Debug.list(System.err); return (debug ? "debug on" : "debug off"); } else if ("msg".equalsIgnoreCase(cmd)) { if (st.hasMoreTokens()) { if ("on".equalsIgnoreCase(st.nextToken())) { message = true; } else { message = false; } } return (message ? "message on" : "message off"); } else if ("help".equalsIgnoreCase(cmd)) { return ("help"); } else if ("create".equalsIgnoreCase(cmd)) { URL url = null; String name = ""; try { if (st.countTokens() == 2) { url = new URL(st.nextToken()); name = st.nextToken(); } else if (st.countTokens() == 1) { name = st.nextToken(); } else { return ("Usage: create [URL] name"); } AgletProxy proxy = null; if (debug) System.err.println("Entering context.createAglet"); proxy = context.createAglet(url, name, null); if (debug) System.err.println("Leaving context.createAglet"); if (proxy != null) { return("Creation of Aglet "+name+" Succeeded."); } else { return("Creation of Aglet "+name+" Failed."); } } catch (Throwable ex) { if (debug) { ex.printStackTrace(); System.err.println(ex.getMessage()); } return("Creation of Aglet ["+name+"] Failed. Exception was: ["+ex.toString()+"] Message was: ["+ex.getMessage()+"]"); } } /* * This handles property, dispatch, clone, dispose, dialog */ else if ((item = (Item)aglets.get(cmd)) != null) { if (st.hasMoreTokens()) { String tokenString = st.nextToken(); if ("property".equalsIgnoreCase(tokenString)) { return("Properties for: " + cmd + "\n" + item.toString()); } else { item.command(tokenString, st); if (!item.isValid()) { removed(item); return ("Removed : " + cmd); } } } else { return (item.toString()); } } else { return ("unknown command (or aglet not found): " + cmd); } } return ("unknown command: " + line); } /** * Prints out the list of aglets * * @return Description of the Returned Value * @exception Exception Description of Exception * @since */ String list() throws Exception { String returnString; Enumeration e = aglets.keys(); returnString = "Aglet List empty"; if (e.hasMoreElements()) returnString = "Aglet List:\n"; while (e.hasMoreElements()) { String k = (String) e.nextElement(); Item item = (Item) aglets.get(k); // if (item.isValid()) { returnString += k + " [" + item.proxy.getAgletClassName() + "] "; // } } return (returnString); } /** * Description of the Method * * @param proxy Description of Parameter * @since */ private synchronized void added(AgletProxy proxy) { aglets.put("aglet" + (serial++), new Item(proxy)); } /** * Description of the Method * * @param proxy Description of Parameter * @since */ private synchronized void removed(AgletProxy proxy) { Enumeration e = aglets.keys(); while (e.hasMoreElements()) { Object k = e.nextElement(); if (aglets.get(k).equals(proxy)) { aglets.remove(k); } } } /** * Description of the Method * * @param item Description of Parameter * @since */ private synchronized void removed(Item item) { removed(item.proxy); } /** * Gets the UserManager attribute of the TahitiDaemon class * * @return The UserManager value * @since */ public final static UserManager getUserManager() { return _userManager; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -