annotate src/samer/core_/util/shell/AgentManager.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 /*
samer@0 2 * AgentManager.java
samer@0 3 *
samer@0 4 * Copyright (c) 2000, Samer Abdallah, King's College London.
samer@0 5 * All rights reserved.
samer@0 6 *
samer@0 7 * This software is provided AS iS and WITHOUT ANY WARRANTY;
samer@0 8 * without even the implied warranty of MERCHANTABILITY or
samer@0 9 * FITNESS FOR A PARTICULAR PURPOSE.
samer@0 10 */
samer@0 11
samer@0 12 package samer.core.util.shell;
samer@0 13 import samer.core.*;
samer@0 14 import java.awt.event.*;
samer@0 15 import java.util.*;
samer@0 16
samer@0 17 public class AgentManager implements Agent, ActionListener
samer@0 18 {
samer@0 19 private Vector agents=new Vector();
samer@0 20 //private boolean exitOnReturn=false;
samer@0 21
samer@0 22 public AgentManager() { Shell.put("AgentManager",this); }
samer@0 23
samer@0 24 public ActionListener getBroadcaster() { return this; }
samer@0 25
samer@0 26 public void actionPerformed(ActionEvent e) {
samer@0 27 dispatch(e.getActionCommand(),Shell.env());
samer@0 28 }
samer@0 29
samer@0 30 public void getCommands(Agent.Registry r) { r.add("help").add("agents"); }
samer@0 31 public void execute(String cmd, Environment env) throws Exception
samer@0 32 {
samer@0 33 if (cmd.equals("agents")) {
samer@0 34 Shell.print("registered agents:");
samer@0 35 Enumeration i=agents.elements();
samer@0 36 while(i.hasMoreElements()) {
samer@0 37 Shell.print(i.nextElement().toString());
samer@0 38 }
samer@0 39 } else if (cmd.equals("help")) help();
samer@0 40 }
samer@0 41
samer@0 42 //public void exitOnReturn() { Shell.trace("*** exit on return"); exitOnReturn=true; }
samer@0 43
samer@0 44 public void registerAgent(Agent a) {
samer@0 45 Shell.trace("registering agent: "+a);
samer@0 46 agents.addElement(a);
samer@0 47 }
samer@0 48
samer@0 49 public void deregisterAgent(Agent a) {
samer@0 50 Shell.trace("deregistering agent: "+a);
samer@0 51 agents.removeElement(a);
samer@0 52 }
samer@0 53
samer@0 54 public void dispatch(String cmd, Environment env)
samer@0 55 {
samer@0 56 Enumeration i=agents.elements();
samer@0 57 while(i.hasMoreElements()) {
samer@0 58 Agent agent=(Agent)i.nextElement();
samer@0 59 try { agent.execute(cmd,env); }
samer@0 60 catch (Exception ex) {
samer@0 61 Shell.print("*** agent error in "+agent);
samer@0 62 Shell.print("*** exception: "+ex);
samer@0 63 ex.printStackTrace();
samer@0 64 }
samer@0 65 }
samer@0 66 //if (exitOnReturn) System.exit(0);
samer@0 67 }
samer@0 68
samer@0 69 public void help()
samer@0 70 {
samer@0 71 Shell.print("____________________________________");
samer@0 72 Shell.print("Registered Agents and their commands");
samer@0 73
samer@0 74 Enumeration i=agents.elements();
samer@0 75 Agent.Registry printer = new Agent.Registry() {
samer@0 76 public void setTarget(Agent a) {}
samer@0 77 public Registry add( String name) { Shell.print("\t"+name); return this; }
samer@0 78 public Registry add( String name, boolean initialValue) {
samer@0 79 Shell.print("\t"+name+" (boolean)"); return this;
samer@0 80 }
samer@0 81 public void group() { Shell.print("............"); }
samer@0 82 };
samer@0 83
samer@0 84 while(i.hasMoreElements()) {
samer@0 85 Agent a=(Agent)(i.nextElement());
samer@0 86 Shell.print("");
samer@0 87 Shell.print("---- "+a.getClass().getName());
samer@0 88 a.getCommands(printer);
samer@0 89 }
samer@0 90 }
samer@0 91 }
samer@0 92