|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ix.icore.IXAgent
public abstract class IXAgent
Common class for I-X agents.
An agent is usually created by instantiating a subclass of IXAgent
and then calling its mainStartup(String[] argv)
method.
That method will usually be inherited from IXAgent; it processes any
command line arguments and then calls startup()
.
Thus, from the subclass's point of view, startup and initialization
has the following steps:
mainStartup(String[])
, which calls IXAgent methods
processCommandLineArguments()
or startup()
should normally have them call the
corresponding super
method to ensure that any
common processing is performed.
To support IPC, a subclass of IXAgent must assign a value
to the ipcName
field, to be returned by the
getAgentIPCName()
method, and will typically want
to define
handleNewIssue(Issue issue)
handleNewActivity(Activity activity)
handleNewConstraint(Constraint constraint)
handleNewReport(Report report)
handleNewChatMessage(ChatMessage message)
SimpleIXAgent
,
SimpleIXAgent.java
source codeField Summary | |
---|---|
protected ContactManager |
contactManager
|
protected java.lang.String |
displayName
|
protected EventLogger |
eventLogger
|
protected java.util.List<java.lang.Runnable> |
exitHooks
|
protected java.lang.String |
initialDisplayName
|
protected java.lang.String |
ipcName
Name used for IPC purposes and returned by the getAgentIPCName() method. |
protected java.lang.String |
ipcStrategyName
|
protected ISimTimer |
iSimTimer
|
protected static IXAgent |
mainAgent
|
protected java.util.List<AgentNameListener> |
nameListeners
|
protected java.util.Date |
startupDate
|
protected java.util.List<java.lang.Runnable> |
startupHooks
|
protected java.lang.String |
symbolName
|
protected TextAreaFrame |
textFrame
A text area in a separate frame used to display information about incoming messages. |
Constructor Summary | |
---|---|
|
IXAgent()
Standard constructor. |
protected |
IXAgent(boolean isMainAgent)
Constructor that can be used to create IXAgents that aren't the main one. |
Method Summary | |
---|---|
void |
addAgentNameListener(AgentNameListener listener)
|
void |
addExitHook(java.lang.Runnable hook)
|
void |
addStartupHook(java.lang.Runnable hook)
|
void |
addTool(ToolController tc)
Adds a tool, usually by adding an entry to a "Tools" menu in the GUI. |
protected void |
adjustLookAndFeel()
|
protected void |
displayMessage(java.lang.String message)
Adds the specified string to the default message display. |
protected void |
do_mainStartup(java.lang.String[] argv)
The main body of mainStartup(String[]) . |
java.lang.Object |
ensureTool(java.lang.String toolName)
Returns the tool of the specified name, causing it to be created if it does not already exist. |
void |
exit()
Called when the agent should cease execution. |
void |
fireSymbolNameChanged(java.lang.String oldName,
java.lang.String newName)
|
static IXAgent |
getAgent()
Returns an object that represents the agent. |
java.lang.String |
getAgentDisplayName()
Returns this agent's display name. |
java.lang.Object |
getAgentIPCName()
Returns the object used to represent the agent as an IPC "destination". |
java.util.Date |
getAgentStartupDate()
|
java.lang.String |
getAgentSymbolName()
Returns this agent's symbol name. |
ContactManager |
getContactManager()
Returns this agent's contact manager. |
EventLogger |
getEventLogger()
Returns this agents event-logger. |
ISimTimer |
getISimTimer()
Returns this agent's ISimTimer; |
static java.util.Set<IXAgent> |
getKnownAgents()
Returns a set containing all IXAgents that have not been garbage-collected. |
void |
handleInput(IPC.InputMessage message)
Handles external input in the form of an IPC.InputMessage that contains an object such as an Issue, Activity, or Report. |
void |
handleNewActivity(Activity activity)
Handles new activities from external sources. |
void |
handleNewChatMessage(ChatMessage message)
Handles new chat messages from external sources. |
void |
handleNewConstraint(Constraint constraint)
Handles new constraints from external sources. |
void |
handleNewIssue(Issue issue)
Handles new issues from external sources. |
void |
handleNewReport(Report report)
Handles new reports from external sources. |
protected void |
handleReceivedReport(TaskItem item)
Utility for sending a "Received" report about an issue or activity. |
void |
installAgentExtensions()
Installs any extensions specified by the "extension-classes" parameter. |
protected void |
installAgentExtensions(java.util.List classNames)
|
boolean |
isMainAgent()
Indicates whether this is the main (usually standalone) agent. |
void |
log(HistoryEvent event)
|
void |
mainStartup(java.lang.String[] argv)
Method called by main(String[] argv) to perform the initialization sequence common to all I-X agents. |
void |
notePossibleNewContact(IPC.InputMessage message)
Tells this agent's contact manager about the sender-id of the message (if the id can be determined) in case it represents a new contact. |
protected void |
pre_handleInput(IPC.InputMessage message)
Gets the message before the handleInput method
and ensures that handleInput is called in the
AWT event dispatching thread. |
protected IPC.InputMessage |
preprocessInput(IPC.InputMessage message)
A chance to modify or replace a message on its way in. |
protected void |
processCommandLineArguments()
Handles command-line arguments common to all I-X agents. |
protected void |
reportInputException(IPC.InputMessage message,
java.lang.Throwable t)
Called by the pre_handleInput method to put up a dialog describing an Error or Exception and the message that caused it to be thrown. |
void |
setAgentSymbolName(java.lang.String name)
Changes the agent's symbol name |
void |
setEventLogger(EventLogger logger)
|
protected void |
setupISimTimer()
|
protected void |
startServer(java.lang.Object agentName,
java.lang.String strategyName)
Set the main (global) IPC communication strategy and set up to receive messages by calling the strategy's setupServer method. |
protected void |
startup()
Method called by the mainStartup(String[] argv) method
to perform any setup and initialization that should take place after
this agent's constructor has been called and command-line arguments
have been processed. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static IXAgent mainAgent
protected java.lang.String ipcName
getAgentIPCName()
method.
protected java.lang.String displayName
protected java.lang.String symbolName
protected java.lang.String initialDisplayName
protected ContactManager contactManager
protected EventLogger eventLogger
protected ISimTimer iSimTimer
protected java.lang.String ipcStrategyName
protected java.util.List<java.lang.Runnable> startupHooks
protected java.util.List<java.lang.Runnable> exitHooks
protected java.util.List<AgentNameListener> nameListeners
protected java.util.Date startupDate
protected TextAreaFrame textFrame
Constructor Detail |
---|
public IXAgent()
new IXAgent(true)
.
protected IXAgent(boolean isMainAgent)
isMainAgent()
,
getAgent()
Method Detail |
---|
public void mainStartup(java.lang.String[] argv)
do_mainStartup(String[])
inside a "catch"
that reports any exception thrown.
protected void do_mainStartup(java.lang.String[] argv)
mainStartup(String[])
.
It is called inside a "catch" that reports
any exception thrown.
protected void setupISimTimer()
protected void startup()
mainStartup(String[] argv)
method
to perform any setup and initialization that should take place after
this agent's constructor has been called and command-line arguments
have been processed. At present, this method does nothing, and all the work is done in subclasses.
protected void adjustLookAndFeel()
protected void processCommandLineArguments()
The following are handled directly my this method:
-debug=boolean -ipc=name -ipc-name=name -symbol-name=name -display-name=namedebug is used to set
Debug.on
.
The name in -ipc=name argument will be
interpreted by the IPC.makeCommunicationStrategy(String)
method.
The name in the -icp-name=name
argument sets the name that this agent calls itself for IPC
and that is returned by the getAgentIPCName()
method.
Needs further explanation of ipc-name, and of symbol-name and display-name. ...
The processCommandLineArguments
method of
this agent's contact manager is called to handle arguments
that list relationships with other agents.
IFUtil.adjustLookAndFeel()
,
IPC.makeCommunicationStrategy(String methodName)
,
ContactManager.processCommandLineArguments()
,
Debug.on
,
Parameters
public void addStartupHook(java.lang.Runnable hook)
public void addExitHook(java.lang.Runnable hook)
public void exit()
public void installAgentExtensions()
Each class must implement the IXAgentExtension
interface
and must have a public 1-argument constructor that declares its
parameter as IXAgent or an IXAgent subclass. One instance of
each class is constructed, passing this agent as the parameter,
and then the instance's IXAgentExtension.installExtension()
method is called.
installAgentExtensions is not called by methods in the IXAgent class. Instead, it should be called by instances of IXAgent subclasses at an appropriate point for the type of agent involved.
protected void installAgentExtensions(java.util.List classNames)
public static IXAgent getAgent()
public boolean isMainAgent()
public static java.util.Set<IXAgent> getKnownAgents()
public java.lang.Object getAgentIPCName()
IPC
,
IPC.CommunicationStrategy
public java.lang.String getAgentSymbolName()
public void setAgentSymbolName(java.lang.String name)
public void addAgentNameListener(AgentNameListener listener)
public void fireSymbolNameChanged(java.lang.String oldName, java.lang.String newName)
public java.lang.String getAgentDisplayName()
public java.util.Date getAgentStartupDate()
public ContactManager getContactManager()
public EventLogger getEventLogger()
log(HistoryEvent)
public void setEventLogger(EventLogger logger)
public void log(HistoryEvent event)
public ISimTimer getISimTimer()
public void addTool(ToolController tc)
java.lang.UnsupportedOperationException
- if called.public java.lang.Object ensureTool(java.lang.String toolName)
The method supplied by the IXAgent class throws an exception; it should be overridden in subclasses that do allow tools.
java.lang.UnsupportedOperationException
- if called.protected void startServer(java.lang.Object agentName, java.lang.String strategyName)
"enqueue-incoming-messages"
parameter is true, it uses a BufferedMessageListener so
that the thread that supplies a message need't wait for the
message to be processed by the panel; otherwise, a plain
MessageListener is used. In both cases, the listener delivers
the message by calling pre_handleInput(IPC.InputMessage)
,
but a buffered listener has its own thread that waits for that
call to return before looking for the next message.
IPC
,
IPC.setupServer(Object, IPC.MessageListener)
,
IPC.BufferedMessageListener
protected void pre_handleInput(IPC.InputMessage message)
handleInput
method
and ensures that handleInput
is called in the
AWT event dispatching thread. This is perhaps a temporary
measure. It also marks the message as external and (once
in the event dispatching thread) catches any Errors or Exceptions
thrown out of input handling and reports them to the user.
protected IPC.InputMessage preprocessInput(IPC.InputMessage message)
pre_handleInput(IPC.InputMessage)
before it calls handleInput(IPC.InputMessage)
.
The method in the IXAgent class currently renames
ItemVar
s in issue and activity patterns.
ItemVar.renameItemVars(Object)
protected void reportInputException(IPC.InputMessage message, java.lang.Throwable t)
public void notePossibleNewContact(IPC.InputMessage message)
public void handleInput(IPC.InputMessage message)
handleNewIssue
,
handleNewReport
, etc as appropriate.
public void handleNewIssue(Issue issue)
public void handleNewActivity(Activity activity)
public void handleNewConstraint(Constraint constraint)
public void handleNewReport(Report report)
protected void handleReceivedReport(TaskItem item)
public void handleNewChatMessage(ChatMessage message)
protected void displayMessage(java.lang.String message)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |