ISSUES and IMPLEMENTATION TASKS:
7/19/97
1. Because a program needs a way of embedding the AgentOS kernel and launching an agent, we will implement two ways of launching an agent:
A. Launch an agent from an URL. The URL target could be an agent module (".agent") or a single class representing an agent. It may be remote ("http://") or local ("file://")
public boolean launchAgent(String agentClassName, URL agentClassURL)
URL could be a single class ("MyAgent.class") or an agent module ("MyAgent.agent")
B. Launch an agent from a single class dynamically created in a program. This method offers a convenient, quick way to launch simple agents from within a program. The agentClass may be nested, i.e. contain inner classes.
public boolean launchAgent(String agentClassName, Class agentClass)
Convert agentClass into byteArray (using Scott's technique) before putting it into
the AgentSuitcase
2. Remove the ClassFileLocator.FILE type
change
private static final int MAX_TYPE = 4;
back to
private static final int MAX_TYPE = 3;
3. Make sure Kernel can be embedded in an Applet and agent can dispatch itself to
the applet's originating host
4. Nested (Inner) classes:
Convert a nested class into a byteArray and put into AgentModule
Serialize a nested class and put into AgentPackage (see if execSerialization
still works with nested classes)
5. Write a more complex test agent to hop more than 2 nodes.
-------------------------------------------------------------------------------
6. Agent Module should not include classes that already exist at the destination host
7. Allow agentos.cfg to specify whether Kernel is to be embedded in an Applet or
run as a stand-alone daemon
Stand-alone daemons should use ThreadGroups, kernels embedded in Applets should not
8. Implement framework for FSM in agent to make programming agents easier
A. Specify the next method to be executed at the next node
B. Specify an itinerary which maps methods to nodes, i.e. which method is
executed when the agent arrives at a particular node