📄 tahitidaemon.java
字号:
package com.ibm.aglets.tahiti;/* * $Id: TahitiDaemon.java,v 1.2 2001/08/01 03:46:59 kbd4hire Exp $ * * @(#)TahitiDaemon.java * * TahitiDaemon implements a Tahiti service which listens on * a configurable control port for commands. * * The TahitiDaemonClient class is used to communicate with * and control a TahitiDaemon. */import com.ibm.aglet.*;import com.ibm.aglet.system.ContextEvent;import com.ibm.aglet.system.ContextListener;import com.ibm.aglet.system.AgletRuntime;import com.ibm.awb.misc.Resource;import java.io.*;import java.net.*;import java.util.StringTokenizer;import java.util.Hashtable;import java.util.Enumeration;/** * <tt>Daemon</tt> is a simple non-UI interface to an aglet server. * TahitiDaemon implements a Tahiti service which listens on a configurable * control port for commands. The TahitiDaemonClient class is used to * communicate with and control a TahitiDaemon. * * @author Lary Spector * @created July 22, 2001 * @version $Revision: 1.2 $ $Date: 2001/08/01 03:46:59 $ $Author: kbd4hire $ * @see com.ibm.aglet.system.ContextListener * @see com.ibm.aglet.system.ContextEvent */public final class TahitiDaemon implements ContextListener, Runnable { /* * Aglets table */ private Hashtable aglets = new Hashtable(); /* * Prompt char. */ private String prompt = ">"; /* * AgletContext */ private AgletContext context = null; /* * Null print stream to turn off messages. * private com.ibm.awb.misc.LogPrintStream null_log; */ private boolean message = false; private boolean debug = false; private boolean continue_processing = true; private boolean reboot = false; private boolean shutdown = false; private static int _control_port_num = 5545; private static UserManager _userManager = new TahitiDaemonUserManager(); /* * for autonumbering aglets */ private static int serial = 0; /* * Banner and version Strings */ private static String _banner_string = "TahitiDaemon"; private static String _version_string = "1.0"; /** * Called when an aglet has been activated * * @param event an ContextEvent * @since */ public void agletActivated(ContextEvent event) { if (message) { System.out.println("Activated " + event.getAgletProxy()); } // added(event.getAgletProxy()); } /** * Called when an aglet has arived * * @param event an ContextEvent * @since */ public void agletArrived(ContextEvent event) { added(event.getAgletProxy()); } /** * Called when an aglet has been cloned * * @param event an ContextEvent * @since */ public void agletCloned(ContextEvent event) { added(event.getAgletProxy()); } /** * Called when an aglet has been created * * @param event an AgletEvent * @since */ public void agletCreated(ContextEvent event) { added(event.getAgletProxy()); } /** * Called when an aglet has been deactivated * * @param event an ContextEvent * @since */ public void agletDeactivated(ContextEvent event) { if (message) { System.out.println("Deactivated " + event.getAgletProxy()); } // removed(event.getAgletProxy()); } /** * Called when an aglet has been dispatched * * @param event an ContextEvent * @since */ public void agletDispatched(ContextEvent event) { // event.getAgletProxy() is the AgletProxy AFTER dispatching, // not BEFORE dispatching. // So it cannot be removed because aglets hashtable doesn't contain it. // removed(event.getAgletProxy()); } /** * Called when an aglet has been disposed * * @param event an ContextEvent * @since */ public void agletDisposed(ContextEvent event) { removed(event.getAgletProxy()); } /** * Called when an aglet has been resumed * * @param event an ContextEvent * @since */ public void agletResumed(ContextEvent event) { if (message) { System.out.println("Resumed " + event.getAgletProxy()); } // added(event.getAgletProxy()); } /** * Called when an aglet has been reverted * * @param event an ContextEvent * @since */ public void agletReverted(ContextEvent event) { removed(event.getAgletProxy()); } /** * Called when an aglet has been updated * * @param event an ContextEvent * @since */ public void agletStateChanged(ContextEvent event) { synchronized (aglets) { Enumeration e = aglets.keys(); while (e.hasMoreElements()) { Object k = e.nextElement(); Item i = (Item) aglets.get(k); if (i.equals(event.getAgletProxy())) { i.setText((String) event.arg); if (message) { System.out.println(k.toString() + " : " + event.arg); } } } } } /** * Called when an aglet has been suspended * * @param event an ContextEvent * @since */ public void agletSuspended(ContextEvent event) { if (message) { System.out.println("Suspended " + event.getAgletProxy()); } // removed(event.getAgletProxy()); } /** * Description of the Method * * @param ev Description of Parameter * @since */ public void contextShutdown(ContextEvent ev) { // } /** * Initializes the Viewer with the context. * * @param ev Description of Parameter * @since */ public void contextStarted(ContextEvent ev) { this.context = ev.getAgletContext(); Resource res = Resource.getResourceFor("aglets"); // // Check to see if this is a registered user. // if (res.getBoolean("aglets.registered", false) == false) { } new Thread(this).start(); } /** * Infinite loop to process inputs * * @since */ public void run() { boolean socket_active = false; BufferedReader in = null; PrintWriter out = null; Socket clientSocket = null; String controlPortString = System.getProperties().getProperty("maf.controlport"); try { if (Integer.parseInt(controlPortString) > 0) { _control_port_num = Integer.parseInt(controlPortString); } else { System.out.println("Controlport: " + controlPortString + " is out of range, defaulting to: " + _control_port_num); } } catch (NumberFormatException ex) { ex.printStackTrace(); System.exit(1); } Thread.currentThread().setPriority(1); // Create a socket to control this Tahiti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -