|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
public interface AgentScapeApi
This is the AgentScape interface, which is the only entry point for software (and agent) developers to interact with a running AgentScape platform. It exposes calls to create and manipulate (running) agents, and to use the AgentScape messaging and migration primitives. Moreover, any services that a running AgentScape platform offers have to be accessed through this interface.
Because this API generally is shared between processes/agents, the caller
needs to provide an authentication token with each method invocation. For
now, the caller can supply any of its AgentHandles.
The API itself is stateless, meaning that it does not remember which handle
you used for previous method invocations.
Note: many of these AgentScape API-methods are not meant to be called
from the agent. Agents extend from Agent
which offers a simpler (wrapper) interface to many of AgentScape's API methods.
Agents are created with the methods
createAgent and startAgent.
The method createAgent either creates an empty agent or is given
a pre-built agent in the form of an AgentArchive.
The contents (code+data) can written to the (empty) agent with
writecodeSegment and
writeDataSegment.
startAgent will set the agent running. waitForAgent can be used to wait until the agent has finished.
killAgent can be used to kill the agent gracefully.
Agents are identified via
AgentHandles. Each agent can
have multiple AgentHandles. At creation time two AgentHandles are
created: the primary and owner handle. The owner
handle can - by convention - be used by the creator of the agent to
communicate with the agent (via messages, see below). New AgentHandles
can be created with createAgentHandle.
Existing handles can be removed with removeAgentHandle.
Envelopes. Each
Envelope contains a from and one or more to
AgentHandles, indicating the sender and receiving agents respectively.
The from AgentHandle can be any handle of the sending Agent.
The to AgentHandle can be any handle of the receiving Agent.
Envelopes with multiple to AgentHandles can be used to
multi-cast messages.
Receivers of messages can specify for which AgentHandle (must be one
of their own AgentHandles, of course) they want to receive messages.
The to field of received multi-cast messages will only contain the
AgentHandles that the receiving Agent has indicated to the
receiveMessage(s) method.
When sending a multicast message, each
target will receive a copy (bcc) of the message.
AgentScape considers each multi-cast message to multiple AgentHandles
as multiple messages, each to a single AgentHandle, even if AgentHandles
belong to the same Agent. As a consequence, if an Agent has
received a multi-cast message that has been sent to multiple
of its AgentHandles, the method receiveMessage
will return only one message for one of the multi-cast AgentHandles
at a time. The method receiveMessages, however, will
return the (single) multi-cast message with all relevant to AgentHandles
in tact.
readCodeSegment,
readDataSegment, writeCodeSegment,
and writeDataSegment. Note, this interface
may change in the future.
moveAgent
will migrate an agent to a destination location. This is weak migration,
meaning that the running state of the agent will be lost during the migration.
The agent will (re)start at the destination location. State that should
migrate with the agent should be stored in the agent's data segments.
Agent migration is typically done by calling methods in the
Agents api.
Note: for Java agents, AgentScape will migrate any local (non-transient) variables declared within the agent's java code.
Agent| Field Summary | |
|---|---|
static java.lang.String |
RMINAME
|
static java.lang.String |
SVCNAME
|
| Method Summary | |
|---|---|
AgreementOffer |
acceptLease(AgentScapeID location,
java.lang.String leaseId)
Accept lease. |
AgentInfo |
createAgent(AgentScapeID location,
AgentArchive arch)
Create new agent from agent archive, without lease negotiation. |
AgentInfo |
createAgent(AgentScapeID location,
Language lang)
Create a new agent. |
AgentInfo |
createAgent(java.lang.String lease,
AgentArchive arch)
Create a new agent from archive and pre-negotiated lease. |
AgentHandle |
createAgentHandle(AgentHandle handle)
Creates new handle (alias) for an existing agent. |
void |
deleteCodeSegment(AgentHandle handle,
AgentCodeSegment code)
Delete code segment from agent. |
void |
deleteDataSegment(AgentHandle handle,
AgentDataSegment segment)
Delete data segment from agent. |
AgentArchive |
exportAgent(AgentHandle handle)
Export current agent state (from agent container) to an AgentArchive. |
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>>> |
find(java.lang.String key,
java.lang.String value)
|
AgentHandle[] |
getAgentHandles(AgentHandle handle)
Get agent handles belonging to an agent. |
void |
killAgent(AgentHandle handle)
Kill a specific agent. |
void |
killAgent(AgentID id)
Note: Only for administrative/debugging purposes. |
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>>> |
list(java.lang.String key)
|
java.util.List<AgentHandle> |
listAgentHandles(AgentID id)
List all agenthandles of this agent. |
java.util.HashMap<AgentScapeID,java.util.List<AgentID>> |
listAgents(AgentScapeID location)
List all agents running on a particular location. |
AgentCodeSegment[] |
listCodeSegments(AgentHandle handle)
Obtain a list of all code segments stored in the agent container. |
AgentDataSegment[] |
listDataSegments(AgentHandle handle)
Obtain a list of all data segments stored in the agent container. |
java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>> |
lookup(java.lang.String identifier)
|
void |
moveAgent(AgentHandle handle,
AgentScapeID targetLocation)
Migrate agent identified with 'handle' to location targetLocation. |
void |
moveAgent(AgentHandle handle,
AgentScapeID location,
java.lang.String leaseId)
Migrate agent identified with 'handle' to location as contained in the (previously established) lease. |
byte[] |
readCodeSegment(AgentHandle handle,
AgentCodeSegment codeSeg)
Read code segment. |
byte[] |
readDataSegment(AgentHandle handle,
AgentDataSegment dataSeg)
Read data segment. |
Envelope |
receiveMessage(AgentHandle handle,
boolean block)
Receive a message from a single handle only. |
Envelope |
receiveMessage(AgentHandle handle,
java.util.List<AgentHandle> handles,
boolean block)
Receive message from queue, addressed to a set of the handles that the agent owns. |
Envelope[] |
receiveMessages(AgentHandle handle,
java.util.List<AgentHandle> handles,
boolean block)
Receive messages from queue, addressed to some of the handles that the agent owns. |
long |
register(java.lang.String identifier,
java.lang.String key,
java.lang.String value,
float duration)
|
void |
removeAgentHandle(AgentHandle handle)
Shortcut for removeAgentHandle(handle, false). |
java.util.List<Envelope> |
removeAgentHandle(AgentHandle handle,
boolean pickup)
Remove a handle from an existing agent. |
AgreementOffer |
requestLease(AgentScapeID location,
AgreementOffer leaseRequest)
Pass on lease request for given resource request to location manager on the location location. |
TemplateList |
requestTemplates(AgentScapeID location)
Request a list of available templates from a location. |
void |
sendMessage(Envelope envelope)
Send a message to another agent. |
void |
sendMessages(java.util.List<Envelope> envelopes)
|
void |
setDefaultCodeSegment(AgentHandle handle,
AgentCodeSegment code)
Set which code segment to run next time the agent starts or moves. |
void |
startAgent(AgentHandle handle,
boolean collect,
java.lang.String... args)
Start running the agent. |
void |
startAgent(AgentHandle handle,
java.lang.String... args)
Shortcut for startAgent(handle,false,args) |
AgentArchive |
waitForAgent(AgentHandle handle,
boolean pickup)
Wait for agent to be finished, then export it back to the owner as an agent archive. |
AgentCodeSegment |
writeCodeSegment(AgentHandle handle,
AgentCodeSegment codeSegment,
byte[] code)
Write contents of a code segment to the agent container. |
AgentCodeSegment |
writeCodeSegment(AgentHandle handle,
java.lang.String description,
Language language,
byte[] code)
Shortcut for writeCodeSegment(handle,new
AgentCodeSegment(description, language), code). |
AgentDataSegment |
writeDataSegment(AgentHandle handle,
AgentDataSegment dataSegment,
byte[] data)
Write bytes to a data segment. |
AgentDataSegment |
writeDataSegment(AgentHandle handle,
java.lang.String description,
java.lang.String subtype,
byte[] data)
Shortcut for writeDataSegment(handle,new AgentDataSegment(
description, subtype), data). |
| Field Detail |
|---|
static final java.lang.String SVCNAME
static final java.lang.String RMINAME
| Method Detail |
|---|
AgentInfo createAgent(AgentScapeID location,
AgentArchive arch)
throws java.rmi.RemoteException,
LocationUnknownException,
AgentArchiveException,
NegotiationLibException,
AgentCreationException
This automatically creates a new handle (and ID) for the new agent, and fills its agent container with the contents of the archive. After this call returns successfully, it is possible to start the agent, if the contents of the archive results in a runnable agent.
Lease negotiation is done automatically (if the archive has a default code segment) to select a suitable host on the target location.
Note that (in theory) it is also possible to add code and data segments to the agent even after this call is done. The AgentArchive provided is merely a starting point for the filling in of these segment. Depending on the contents of the archive and the needs of the agent programmer, this may or may not be enough to start the agent. It is however, a little problematic to alter things like (default) code segments after creating the agent, so treat with care.
location - The target location to run the agent on.arch - The contents of the new agent.
LocationUnknownException - Location not found.
AgentArchiveException - Problem with interpreting archive, or no (default) code segment
found in the archive.
NegotiationLibException - No environment for required language on the target location.
java.rmi.RemoteException - Error performing remote method invocation.
AgentCreationException
AgentInfo createAgent(AgentScapeID location,
Language lang)
throws java.rmi.RemoteException,
LocationUnknownException,
AgentCreationException
The newly created agent will be placed on a host in 'location'. An agent server is selected according to the preferred language for the new agent.
location - Target location of the new agent.lang - Language requirement of the new agent.
LocationUnknownException - Target location unknown.
NegotiationLibException - No environment for required language on the target location.
java.rmi.RemoteException - Error performing remote method invocation.
AgentCreationException
AgentInfo createAgent(java.lang.String lease,
AgentArchive arch)
throws java.rmi.RemoteException,
NegotiationLibException,
AgentArchiveException
I don't know if this case is really useful, because one has to create a lease before starting the archive. Currently, negotiation deals with environment resources (i.e. agent server) only.
NOTE: this will only be implemented if it is possible to negotiate a lease before creating an agent ID.
lease - Pre-negotiated lease for agent.arch - The contents of the new agent.
AgentHandles.
AgentArchiveException - Problem with interpreting archive.
NegotiationLibException - Lease negotiation error.
java.rmi.RemoteException - Error performing remote method invocation.
AgentHandle createAgentHandle(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException
handle - Agent handle to create alias for.
AgentHandle for the agent.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
java.util.List<Envelope> removeAgentHandle(AgentHandle handle,
boolean pickup)
throws java.rmi.RemoteException,
AgentUnknownException
handle - The handle to removepickup - If this is true then all pending undelivered
messages are returned. Otherwise these are discarded.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
void removeAgentHandle(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException
java.rmi.RemoteException
AgentUnknownExceptionremoveAgentHandle
AgentHandle[] getAgentHandles(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException
Obtains a list of all handles belonging to an agent. Each agent has at least two handles: owner and primary handle.
handle - An already existing AgentHandle.
AgentHandle associated with this agent.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
TemplateList requestTemplates(AgentScapeID location)
throws java.rmi.RemoteException,
NegotiationLibException,
LocationUnknownException
location - The location to request the templates from.
NegotiationLibException - Any negotiation library exception.
LocationUnknownException - Location unknown.
java.rmi.RemoteException - Error performing remote method invocation.
AgreementOffer requestLease(AgentScapeID location,
AgreementOffer leaseRequest)
throws java.rmi.RemoteException,
NegotiationLibException,
LocationUnknownException
location - Target location which to request lease from.leaseRequest - Filled in lease request document.
NegotiationLibException - Error with lease negotiation.
LocationUnknownException - Target location unknown.
java.rmi.RemoteException - Error performing remote method invocation.
AgreementOffer acceptLease(AgentScapeID location,
java.lang.String leaseId)
throws java.rmi.RemoteException,
NegotiationLibException,
LocationUnknownException
Accept lease offer at location manager.
location - Target location which to accept lease from.leaseId - The leaseid of the offer that is accepted.
NegotiationLibException - Lease negotiation error.
LocationUnknownException - Target location unknown.
java.rmi.RemoteException - Error performing remote method invocation.
void startAgent(AgentHandle handle,
boolean collect,
java.lang.String... args)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentStartupException
The hostmanager running this agent is informed that it can now startup the agent belonging to this agenthandle.
handle - The agent to run.collect - Intention to collect agent once it is done.args - Optional arguments to the agent.
AgentUnknownException - The AgentHandle is not known in this world.
AgentStartupException - If there is no (appropriate) code segment to start the agent on the
(negotiated) host/agentserver.
java.rmi.RemoteException - Error performing remote method invocation.
void startAgent(AgentHandle handle,
java.lang.String... args)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentStartupException
startAgent(handle,false,args)
java.rmi.RemoteException
AgentUnknownException
AgentStartupExceptionstartAgent
AgentCodeSegment writeCodeSegment(AgentHandle handle,
AgentCodeSegment codeSegment,
byte[] code)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
If no segment existed with the given code segment ID then it is created. Otherwise the previous contents are overwritten by the code passed to this method.
handle - The AgentHandle of the agent to store code for.codeSegment - Segment identifier to store code.code - The new contents of the code segment.
AgentContainerException - Problem storing data in agent container.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
AgentCodeSegment writeCodeSegment(AgentHandle handle,
java.lang.String description,
Language language,
byte[] code)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
writeCodeSegment(handle,new
AgentCodeSegment(description, language), code).
java.rmi.RemoteException
AgentUnknownException
AgentContainerExceptionwriteCodeSegment
AgentDataSegment writeDataSegment(AgentHandle handle,
AgentDataSegment dataSegment,
byte[] data)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
After this method, the bytes are stored in the agent container of
the agent belonging to this agent. If a segment with a similar
AgentDataSegment existed before this call, then the contents
were overwritten with bytes. Data is part of the agent
container during its entire lifetime (including migration), except
when data is deleted using deleteDataSegment(org.iids.aos.systemservices.communicator.structs.AgentHandle, org.iids.aos.agent.AgentDataSegment).
handle - The AgentHandle of the agent to write the data to.dataSegment - Description of the segment to write the data to.data - The data to write to the segment.
AgentUnknownException - The AgentHandle is not known in this world.
AgentContainerException - Problem writing data to the agent container.
java.rmi.RemoteException - Error performing remote method invocation.
AgentDataSegment writeDataSegment(AgentHandle handle,
java.lang.String description,
java.lang.String subtype,
byte[] data)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
writeDataSegment(handle,new AgentDataSegment(
description, subtype), data).
java.rmi.RemoteException
AgentUnknownException
AgentContainerExceptionwriteDataSegment
byte[] readCodeSegment(AgentHandle handle,
AgentCodeSegment codeSeg)
throws java.rmi.RemoteException,
SegmentUnknownException,
AgentUnknownException,
AgentContainerException
Data is read from the agent container of the agent associated with
handle. The data from segment codeSeg is read.
handle - An AgentHandle of the agent to read data from.codeSeg - Description of the segment to read from.
AgentContainerException - Problem reading code segment.
SegmentUnknownException - If segment is not known for this agent.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
byte[] readDataSegment(AgentHandle handle,
AgentDataSegment dataSeg)
throws java.rmi.RemoteException,
SegmentUnknownException,
AgentUnknownException,
AgentContainerException
Data is read from the agent container of the agent associated with
handle. The data from segment dataSeg is read.
handle - An AgentHandle of the agent to read data from.dataSeg - Description of the segment to read from.
AgentContainerException - Problem reading data segment.
SegmentUnknownException - If segment is not known for this agent.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException - Error performing remote method invocation.
void setDefaultCodeSegment(AgentHandle handle,
AgentCodeSegment code)
throws java.rmi.RemoteException,
AgentUnknownException,
SegmentUnknownException,
AgentContainerException
handle - An AgentHandle of the agent to set the code segment.code - Agent code segment identifier of new active segment.
SegmentUnknownException - If segment is not known for this agent.
AgentUnknownException - The AgentHandle is not known in this world.
AgentContainerException - Problem setting default code segment.
java.rmi.RemoteException - Error performing remote method invocation.
AgentCodeSegment[] listCodeSegments(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
handle - Agent identifier.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException
AgentContainerException
AgentDataSegment[] listDataSegments(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
handle - Agent handle.
AgentUnknownException - The AgentHandle is not known in this world.
java.rmi.RemoteException
AgentContainerException
void deleteCodeSegment(AgentHandle handle,
AgentCodeSegment code)
throws java.rmi.RemoteException,
AgentUnknownException,
SegmentUnknownException,
AgentContainerException
After this call, the data in the deleted segment is not available to the agent anymore. If the default code segment was deleted then a new one must be set manually otherwise any subsequent migration or startup will (most likely) fail.
handle - Agent identifier.
AgentUnknownException - The AgentHandle is not known in this world.
SegmentUnknownException - Segment unknown.
java.rmi.RemoteException
AgentContainerException
void deleteDataSegment(AgentHandle handle,
AgentDataSegment segment)
throws java.rmi.RemoteException,
AgentUnknownException,
SegmentUnknownException,
AgentContainerException
java.rmi.RemoteException
AgentUnknownException
SegmentUnknownException
AgentContainerExceptiondeleteCodeSegment(org.iids.aos.systemservices.communicator.structs.AgentHandle, org.iids.aos.agent.AgentCodeSegment)
void moveAgent(AgentHandle handle,
AgentScapeID targetLocation)
throws java.rmi.RemoteException,
AgentUnknownException,
LocationUnknownException,
AgentStartupException,
MigrationFailedException
Lease negotiation of the target host is done automatically. If the negotiation fails for some reason, then the migration cannot be done.
handle - Agent identifier.targetLocation - Target location to move to.
AgentUnknownException - The AgentHandle is not known in this world.
LocationUnknownException - Target location unknown.
NegotiationLibException - No suitable agent host on location.
java.rmi.RemoteException
AgentStartupException
MigrationFailedException
void moveAgent(AgentHandle handle,
AgentScapeID location,
java.lang.String leaseId)
throws java.rmi.RemoteException,
NegotiationLibException,
AgentUnknownException,
AgentStartupException,
MigrationFailedException
handle - Agent identifier.location - Target location to move to.leaseId - Lease identifier indicating target location.
NegotiationLibException - Problem with lease identifier.
AgentUnknownException - The AgentHandle is not known in this world.
AgentStartupException - Agent cannot run on target location.
java.rmi.RemoteException
MigrationFailedException
void sendMessage(Envelope envelope)
throws java.rmi.RemoteException,
MessageException
The receiving agent will see as message source the handle that was used to send this message, even though an agent can in practice have more than one handle.
This method is MT-Safe.
envelope - Envelope to send, containing information as to where the envelope
should be sent from and to.
java.rmi.RemoteException - Error performing remote method invocation.
AgentUnknownException - The AgentHandle is not known in this world.
MessageException - If sending an array of messages fails. The MessageException
contains the index of the message that fails and the real
exception as the cause. All messages after the exception has occurred
will not have been sent; the ones before have been sent.
void sendMessages(java.util.List<Envelope> envelopes)
throws java.rmi.RemoteException,
MessageException
java.rmi.RemoteException
MessageExceptionsendMessage
Envelope receiveMessage(AgentHandle handle,
java.util.List<AgentHandle> handles,
boolean block)
throws java.rmi.RemoteException,
AgentUnknownException
An agent can have various handles associated with it. Any handle that
the agent owns can be used to call this method. The message that will
be received is only one addressed to any one of the handles in
the list handles.
This method is MT-safe. However, a message will only be delivered _once_ (i.e., to one thread only) even if multiple threads are trying to receive messages for that particular handle.
handle - Agent identifier to receive from.handles - List of handles where to receive messages from. This can be used to do
a single select for a number of aliases of a single handle.block - Block waiting for incoming message.
AgentUnknownException - (One of the) agent handle(s) unknown, or not all handles refer to
the same agent
java.rmi.RemoteException - Error performing remote method invocation.
Envelope receiveMessage(AgentHandle handle,
boolean block)
throws java.rmi.RemoteException,
AgentUnknownException
java.rmi.RemoteException
AgentUnknownExceptionreceiveMessage(AgentHandle,List,boolean)
Envelope[] receiveMessages(AgentHandle handle,
java.util.List<AgentHandle> handles,
boolean block)
throws java.rmi.RemoteException,
AgentUnknownException
An agent can have various handles associated with it. Any handle that
the agent owns can be used to call this method. The messages that will
be received are only the ones sent to any of the handles in
the list handles.
This method is MT-safe. However, a message will only be delivered _once_ (i.e., to one thread only) even if multiple threads are trying to receive messages for that particular handle.
handle - Agent identifier to receive from.handles - List of handles where to receive messages from.block - Block waiting for incoming message.
AgentUnknownException - (One of the) agent handle(s) unknown, or not all handles refer to the
same agent.
java.rmi.RemoteException - Error performing remote method invocation.
AgentArchive exportAgent(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
The current state of the agent segments are stored in the archive, so that we now have a snapshot of the user data and code segments of the agent. This is not the same as finalizing an agent container, but merely a dump of the current state of the agent, so that its contents can be inspected offline. It may even be possible to start a new agent again using the archive obtained from this call.
If possible, also meta information like currently active code segment will be put in the archive. If this information is not found in the agent container, this call will still succeed.
Any changes done to the agent container after this call will not be noticed in the resulting archive.
handle - Agent identifier.
AgentUnknownException - The AgentHandle is not known in this world.
AgentUnknownException - Agent handle unknown.
java.rmi.RemoteException - Error performing remote method invocation.
AgentContainerException
AgentArchive waitForAgent(AgentHandle handle,
boolean pickup)
throws java.rmi.RemoteException,
AgentUnknownException,
AgentContainerException
handle - Agent to wait for.pickup - If true then the AgentArchive is exported back. Otherwise, this
method returns null once the agent finishes.
java.rmi.RemoteException
AgentUnknownException
AgentContainerException
java.util.HashMap<AgentScapeID,java.util.List<AgentID>> listAgents(AgentScapeID location)
throws java.rmi.RemoteException,
LocationUnknownException
Note: Only for administrative/debugging purposes.
location - AgentScape location
java.rmi.RemoteException
LocationUnknownException
void killAgent(AgentHandle handle)
throws java.rmi.RemoteException,
AgentUnknownException
handle - handle of agent to kill.
java.rmi.RemoteException
AgentUnknownException
void killAgent(AgentID id)
throws java.rmi.RemoteException,
AgentIDUnknownException
java.rmi.RemoteException
AgentIDUnknownExceptionkillAgent
java.util.List<AgentHandle> listAgentHandles(AgentID id)
throws java.rmi.RemoteException,
AgentIDUnknownException
Asking an agent handles is actually only permitted by the agent itself (or its owner). AgentID's are not publicly known.
id - AgentID of agent.
java.rmi.RemoteException
AgentIDUnknownException
long register(java.lang.String identifier,
java.lang.String key,
java.lang.String value,
float duration)
throws java.rmi.RemoteException
java.rmi.RemoteException
java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>> lookup(java.lang.String identifier)
throws java.rmi.RemoteException
java.rmi.RemoteException
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>>> find(java.lang.String key,
java.lang.String value)
throws java.rmi.RemoteException
java.rmi.RemoteException
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.util.Vector<java.util.Vector<java.lang.Object>>>> list(java.lang.String key)
throws java.rmi.RemoteException
java.rmi.RemoteException
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||