Agent System POND 1.2 (28.2.2002)

PkgAgentSystem.Messaging
Class Message

java.lang.Object
  |
  +--PkgAgentSystem.Messaging.Message
All Implemented Interfaces:
Cloneable, MessageType, Serializable
Direct Known Subclasses:
AcceptMessage, ChallengeIdentityMessage, DeclineMessage, MessageReply, RejectMessage, ResultMessage, SendStatementsMessage, SignedMessage, TerminateAgentMessage

public abstract class Message
extends Object
implements MessageType

A message, which can be sent from one agent to another.
Subclasses MUST be serializable, else messaging will NOT work!

ATTENTION: The following is NOT allowed:
If a message contains a system class or an agent-system class, this class MUST NOT store a contained agent-class in binary form. It may contain it as an field.
If the data is automatically restored from the stream during deserialization or read through readObject, there is no problem. Not allowed is reading it in as an byte array and restoring it from a different (self created) ObjectInputStream (via a ByteArrayInputStream).
The problem is the following: When the class is deserialized through the classloader of the receiving agent, this class will be loaded (ot tried to be loaded) by the classloader of the system-class/agent-system class, which is the primordial classloader. If this is successful, there will be no possibility to cast it to the local type of the agent (which is loaded through the agents classloader!). The data will not be available for the receiver.
Example: java.security.SignedObject will not work.
Example: SignedMessage PkgAgentSystem.Messaging.SignedMessage does work.

Version:
1.0, 1.7.2000
Author:
Michael Sonntag
See Also:
AgentBase, AgentSystem.sendMessage(AgentBase,Message), Serialized Form

Constructor Summary
protected Message()
          Create a new and empty message.
protected Message(AgentIdentity sender, AgentIdentity addressee, long convTypeID, long srcConvID, long destConvID, boolean fromInitiator)
          Creates a new message from one agent to another.
protected Message(MessageType inReplyTo)
          Create a new message in reply to another one.
 
Method Summary
 Message copy()
          Returns a shallow copy of this message.
 boolean fromInitiator()
          Returns whether this message is from the initiator to the other party/parties or an answer.
 AgentIdentity getAddressee()
          Returns the identity of the recipient of the message.
 long getConversationTypeID()
          Returns the ID of the type of conversations handling this message.
 long getDestConversationID()
          Returns the ID of the conversation at the recipient of the message.
 AgentIdentity getSender()
          Returns the identity of the sender of the message.
 long getSrcConversationID()
          Returns the ID of the conversation at the sender of the message.
 void setAddressee(AgentIdentity addressee)
          Set the addressee of the message.
 void setConversationTypeID(long id)
          Set the type ID for the conversation.
 void setDestConversationID(long id)
          Set the ID for the conversation at the destination.
 void setFromInitiator(boolean fromInitiator)
          Sets whether this message is from the initiator to the other party/parties or an answer.
 void setSender(AgentIdentity sender)
          Set the sender of the message.
 void setSrcConversationID(long id)
          Set the ID for the conversation at the sender.
 String toString()
          Returns a string representation of this message.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Message

protected Message()
Create a new and empty message. Necessary, so we get no default public constructor. Such a message can be sent ONLY through a conversation, which will fill in the necessary values or after manually filling in sender, addressee, srcConvID, destConvID and the conversation type ID.

Message

protected Message(AgentIdentity sender,
                  AgentIdentity addressee,
                  long convTypeID,
                  long srcConvID,
                  long destConvID,
                  boolean fromInitiator)
Creates a new message from one agent to another. Should ONLY be used for sending messages WITHOUT using a conversation.
Parameters:
sender - the identity of the sender. Must be provided.
addressee - the identity of the recipient. Must be provided.
convTypeID - ID of the type of the conversation. Must not be 0.
srcConvID - ID of the conversation at the source. May be 0 for replies to unknown conversations, ... (there is no conversation with those).
destConvID - ID of the conversation at the recipient. May be 0 for initial messages (starting a conversation) and broadcasts.
fromInitiator - if true, this message is from the initiator of the conversation

Message

protected Message(MessageType inReplyTo)
Create a new message in reply to another one. The addressee is copied to the sender and the sender to the recipient. The conversation type ID stays the same. The source conversation ID is copied to the destionation conversation ID and reverse.
Method Detail

setSrcConversationID

public void setSrcConversationID(long id)
Set the ID for the conversation at the sender. Only allowed if the ID is currently 0.
Specified by:
setSrcConversationID in interface MessageType
Parameters:
id - the id of the conversation at the sender (may not be 0)

getSrcConversationID

public long getSrcConversationID()
Returns the ID of the conversation at the sender of the message.
Specified by:
getSrcConversationID in interface MessageType
Returns:
conversation ID of the sender

setDestConversationID

public void setDestConversationID(long id)
Set the ID for the conversation at the destination. Only allowed if the ID is currently 0.
Specified by:
setDestConversationID in interface MessageType
Parameters:
id - the id of the conversation at the destination (may not be 0)

getDestConversationID

public long getDestConversationID()
Returns the ID of the conversation at the recipient of the message.
Specified by:
getDestConversationID in interface MessageType
Returns:
conversation ID of the recipient

fromInitiator

public boolean fromInitiator()
Returns whether this message is from the initiator to the other party/parties or an answer.
Specified by:
fromInitiator in interface MessageType
Returns:
true if the message is from the initiator to the other party/parties

setFromInitiator

public void setFromInitiator(boolean fromInitiator)
Sets whether this message is from the initiator to the other party/parties or an answer.
Specified by:
setFromInitiator in interface MessageType
Parameters:
fromInitiator - Shall be true if the message is from the initiator to the other party/parties, false otherwise

setConversationTypeID

public void setConversationTypeID(long id)
Set the type ID for the conversation. Only allowed if the ID is currently 0.
Specified by:
setConversationTypeID in interface MessageType
Parameters:
id - the id of the type of the conversation (may not be 0)

getConversationTypeID

public long getConversationTypeID()
Returns the ID of the type of conversations handling this message.
Specified by:
getConversationTypeID in interface MessageType
Returns:
conversation type ID of this message

setSender

public void setSender(AgentIdentity sender)
Set the sender of the message. Only allowed if the sender is currently null.
Specified by:
setSender in interface MessageType
Parameters:
sender - the sender for the message (may not be null)

getSender

public AgentIdentity getSender()
Returns the identity of the sender of the message.
Specified by:
getSender in interface MessageType
Returns:
identity of the sender

setAddressee

public void setAddressee(AgentIdentity addressee)
Set the addressee of the message. Only allowed if the addressee is currently null.
Specified by:
setAddressee in interface MessageType
Parameters:
sender - the addressee for the message (may not be null)

getAddressee

public AgentIdentity getAddressee()
Returns the identity of the recipient of the message.
Specified by:
getAddressee in interface MessageType
Returns:
identity of the recipient

copy

public Message copy()
             throws MessageException
Returns a shallow copy of this message.
Returns:
a clone of this message
Throws:
MessageException - if this message cannot be cloned

toString

public String toString()
Returns a string representation of this message. The representation is the name of the actual class of the message and the names of the sender and the recipient.
Overrides:
toString in class Object
Returns:
string representation of this message

Agent System POND 1.2 (28.2.2002)

Submit a bug

Copyright 2001,2002 Michael Sonntag & Institute for Information Processing and Microprocessor Technology (FIM), Johannes-Kepler-University Linz, Altenbergerstr. 69, A-4040 Linz, Austria.