spread
Class SpreadMessage

java.lang.Object
  extended by spread.SpreadMessage

public class SpreadMessage
extends java.lang.Object

A SpreadMessage object represents either an incoming or outgoing spread message. An outgoing message is one being sent with SpreadConnection.multicast(SpreadMessage). An incoming message is one received with SpreadConnection.receive(). To send a message on a spread connection, first create a message object:

 SpreadMessage message = new SpreadMessage();
 

Then set the data with either setData(byte[]), setObject(Serializable), or digest(Serializable):

 message.setData(data);
 

Select which group(s) to send the message to with addGroup(SpreadGroup):

 message.setGroup(group);
 

When the message is read to be sent, send it with SpreadConnection.multicast(SpreadMessage):

 connection.multicast(message);
 


Field Summary
protected static int AGREED_MESS
           
protected static int CAUSAL_MESS
           
protected static int CAUSED_BY_DISCONNECT
           
protected static int CAUSED_BY_JOIN
           
protected static int CAUSED_BY_LEAVE
           
protected static int CAUSED_BY_NETWORK
           
protected  int content
           
private static int CONTENT_DATA
           
private static int CONTENT_DIGEST
           
private static int CONTENT_OBJECT
           
private  byte[] data
           
protected  java.io.ByteArrayOutputStream digestBytes
           
protected  java.io.ObjectOutputStream digestOutput
           
private  boolean endianMismatch
           
protected static int FIFO_MESS
           
protected  java.util.Vector groups
           
protected static int GROUPS_MESS
           
protected static int JOIN_MESS
           
protected static int KILL_MESS
           
protected static int LEAVE_MESS
           
protected static int MEMBERSHIP_MESS
           
private  MembershipInfo membershipInfo
           
private  boolean outgoing
           
protected static int REG_MEMB_MESS
           
protected static int REGULAR_MESS
           
protected static int REJECT_MESS
           
protected static int RELIABLE_MESS
           
protected static int SAFE_MESS
           
protected static int SELF_DISCARD
           
private  SpreadGroup sender
           
private  int serviceType
           
protected static int TRANSITION_MESS
           
private  short type
           
protected static int UNRELIABLE_MESS
           
 
Constructor Summary
  SpreadMessage()
          Initializes a new outgoing SpreadMessage object.
protected SpreadMessage(int serviceType, java.util.Vector groups, SpreadGroup sender, byte[] data, short type, boolean endianMismatch, MembershipInfo membershipInfo)
           
 
Method Summary
 void addGroup(SpreadGroup group)
          Adds this group to the list this message will be sent to.
 void addGroup(java.lang.String group)
          Adds this group to the list this message will be sent to.
 void addGroups(SpreadGroup[] groups)
          Adds these groups to the list this message will be sent to.
 void addGroups(java.lang.String[] groups)
          Adds these groups to the list this message will be sent to.
 java.lang.Object clone()
          Creates a copy of this message.
 void digest(java.io.Serializable object)
          Adds this message to the digest.
 byte[] getData()
          Gets the message data as an array of bytes.
 java.util.Vector getDigest()
          Gets the message data as a digest.
 boolean getEndianMismatch()
          Checks for an endian mismatch.
 SpreadGroup[] getGroups()
          Gets an array containing the SpreadGroup's to which this message was sent.
 MembershipInfo getMembershipInfo()
          Get the membership info for this message.
 java.lang.Object getObject()
          Gets the message data as a java object.
 SpreadGroup getSender()
          Gets the message sender's private group.
 int getServiceType()
          Get the message's service type.
 short getType()
          Gets the message type.
 boolean isAgreed()
          Checks if this is an agreed message.
 boolean isCausal()
          Checks if this is a causal message.
 boolean isFifo()
          Checks if this is a fifo message.
 boolean isIncoming()
          Check if this is an incoming message.
 boolean isMembership()
          Checks if this is a membership message.
protected static boolean isMembership(int serviceType)
           
 boolean isOutgoing()
          Check if this is an outgoing message.
 boolean isRegular()
          Checks if this is a regular message.
protected static boolean isRegular(int serviceType)
           
 boolean isReject()
          Checks if this is a rejected message.
protected static boolean isReject(int serviceType)
           
 boolean isReliable()
          Checks if this is a reliable message.
 boolean isSafe()
          Checks if this is a safe message.
 boolean isSelfDiscard()
          Checks if this is a self-discard message.
 boolean isUnreliable()
          Checks if this is an unreliable message.
 void setAgreed()
          Sets the message to be agreed.
 void setCausal()
          Sets the message to be causal.
 void setData(byte[] data)
          Sets the message's data to this array of bytes.
 void setFifo()
          Sets the message to be fifo.
 void setObject(java.io.Serializable object)
          Sets the message's data to this object, in serialized form.
 void setReliable()
          Sets the message to be reliable.
 void setSafe()
          Sets the message to be safe.
 void setSelfDiscard(boolean selfDiscard)
          If selfDiscard is true, sets the self discard flag for the message, otherwise clears the flag.
 void setServiceType(int serviceType)
          Sets the service type.
 void setType(short type)
          Set's the message type.
 void setUnreliable()
          Sets the message to be unreliable.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNRELIABLE_MESS

protected static final int UNRELIABLE_MESS
See Also:
Constant Field Values

RELIABLE_MESS

protected static final int RELIABLE_MESS
See Also:
Constant Field Values

FIFO_MESS

protected static final int FIFO_MESS
See Also:
Constant Field Values

CAUSAL_MESS

protected static final int CAUSAL_MESS
See Also:
Constant Field Values

AGREED_MESS

protected static final int AGREED_MESS
See Also:
Constant Field Values

SAFE_MESS

protected static final int SAFE_MESS
See Also:
Constant Field Values

REGULAR_MESS

protected static final int REGULAR_MESS
See Also:
Constant Field Values

SELF_DISCARD

protected static final int SELF_DISCARD
See Also:
Constant Field Values

REG_MEMB_MESS

protected static final int REG_MEMB_MESS
See Also:
Constant Field Values

TRANSITION_MESS

protected static final int TRANSITION_MESS
See Also:
Constant Field Values

CAUSED_BY_JOIN

protected static final int CAUSED_BY_JOIN
See Also:
Constant Field Values

CAUSED_BY_LEAVE

protected static final int CAUSED_BY_LEAVE
See Also:
Constant Field Values

CAUSED_BY_DISCONNECT

protected static final int CAUSED_BY_DISCONNECT
See Also:
Constant Field Values

CAUSED_BY_NETWORK

protected static final int CAUSED_BY_NETWORK
See Also:
Constant Field Values

MEMBERSHIP_MESS

protected static final int MEMBERSHIP_MESS
See Also:
Constant Field Values

REJECT_MESS

protected static final int REJECT_MESS
See Also:
Constant Field Values

JOIN_MESS

protected static final int JOIN_MESS
See Also:
Constant Field Values

LEAVE_MESS

protected static final int LEAVE_MESS
See Also:
Constant Field Values

KILL_MESS

protected static final int KILL_MESS
See Also:
Constant Field Values

GROUPS_MESS

protected static final int GROUPS_MESS
See Also:
Constant Field Values

CONTENT_DATA

private static final int CONTENT_DATA
See Also:
Constant Field Values

CONTENT_OBJECT

private static final int CONTENT_OBJECT
See Also:
Constant Field Values

CONTENT_DIGEST

private static final int CONTENT_DIGEST
See Also:
Constant Field Values

outgoing

private boolean outgoing

content

protected int content

serviceType

private int serviceType

groups

protected java.util.Vector groups

sender

private SpreadGroup sender

data

private byte[] data

type

private short type

endianMismatch

private boolean endianMismatch

membershipInfo

private MembershipInfo membershipInfo

digestBytes

protected java.io.ByteArrayOutputStream digestBytes

digestOutput

protected java.io.ObjectOutputStream digestOutput
Constructor Detail

SpreadMessage

protected SpreadMessage(int serviceType,
                        java.util.Vector groups,
                        SpreadGroup sender,
                        byte[] data,
                        short type,
                        boolean endianMismatch,
                        MembershipInfo membershipInfo)

SpreadMessage

public SpreadMessage()
Initializes a new outgoing SpreadMessage object. By default the message is reliable.

Method Detail

isIncoming

public boolean isIncoming()
Check if this is an incoming message. This is true if it has been received with SpreadConnection.receive().

Returns:
true if this in an incoming message

isOutgoing

public boolean isOutgoing()
Check if this is an outgoing message. This is true if this is a message being sent with SpreadConnection.multicast(SpreadMessage).

Returns:
true if this is an outgoing message

getServiceType

public int getServiceType()
Get the message's service type. The service type is a bitfield representing the type of message.

Returns:
the service-type

isRegular

public boolean isRegular()
Checks if this is a regular message. If true, the get*() functions can be used to obtain more information about the message.

Returns:
true if this is a regular message
See Also:
getGroups(), getSender(), getData(), getObject(), getDigest(), getType(), getEndianMismatch()

isRegular

protected static boolean isRegular(int serviceType)

isReject

public boolean isReject()
Checks if this is a rejected message. If true, the get*() methods can be used to get more information on which message or join/leave was rejected.

Returns:
true if this is a rejected message
See Also:
getGroups(), getSender(), getData(), getObject(), getDigest(), getType(), getEndianMismatch()

isReject

protected static boolean isReject(int serviceType)

isMembership

public boolean isMembership()
Checks if this is a membership message. If true, getMembershipInfo() can be used to get more information on the membership change.

Returns:
true if this is a membership message
See Also:
getMembershipInfo()

isMembership

protected static boolean isMembership(int serviceType)

isUnreliable

public boolean isUnreliable()
Checks if this is an unreliable message.

Returns:
true if this is an unreliable message

isReliable

public boolean isReliable()
Checks if this is a reliable message.

Returns:
true if this is a reliable message

isFifo

public boolean isFifo()
Checks if this is a fifo message.

Returns:
true if this is a fifo message

isCausal

public boolean isCausal()
Checks if this is a causal message.

Returns:
true if this is a causal message

isAgreed

public boolean isAgreed()
Checks if this is an agreed message.

Returns:
true if this is an agreed message

isSafe

public boolean isSafe()
Checks if this is a safe message.

Returns:
true if this is a safe message

isSelfDiscard

public boolean isSelfDiscard()
Checks if this is a self-discard message.

Returns:
true if this is a self-discard message

setServiceType

public void setServiceType(int serviceType)
Sets the service type. The service type is a bitfield representing the type of message.

Parameters:
serviceType - the new service type

setUnreliable

public void setUnreliable()
Sets the message to be unreliable.


setReliable

public void setReliable()
Sets the message to be reliable. This is the default type for a new outgoing message.


setFifo

public void setFifo()
Sets the message to be fifo.


setCausal

public void setCausal()
Sets the message to be causal.


setAgreed

public void setAgreed()
Sets the message to be agreed.


setSafe

public void setSafe()
Sets the message to be safe.


setSelfDiscard

public void setSelfDiscard(boolean selfDiscard)
If selfDiscard is true, sets the self discard flag for the message, otherwise clears the flag. If the self discard flag is set, the message will not be received at the connection it is multicast on.

Parameters:
selfDiscard - if true, set the self discard flag, if false, clear the self discard flag

getGroups

public SpreadGroup[] getGroups()
Gets an array containing the SpreadGroup's to which this message was sent.

Returns:
the groups to which this message was sent

getSender

public SpreadGroup getSender()
Gets the message sender's private group. This can be used to uniquely identify the sender on the connection this message was received from or to send a reply to the sender.


getData

public byte[] getData()
Gets the message data as an array of bytes. This can be used no matter how the message was sent, but is usually used when the message was sent using setData(byte[]) or from an application using the C library.

Returns:
the message data
See Also:
setData(byte[])

getObject

public java.lang.Object getObject()
                           throws SpreadException
Gets the message data as a java object. The message data should have been set using setObject(Serializable). Regardless of the type of object passed to setObject(Serializable), this method returns an object of type Object, so it must be cast to the correct type.

Returns:
the message data as an object
Throws:
SpreadException - if there is an error reading the object
See Also:
setObject(Serializable)

getDigest

public java.util.Vector getDigest()
                           throws SpreadException
Gets the message data as a digest. The message data should have been set using digest(Serializable). This method returns a Vector containing all of the objects passed to digest(Serializable), in the order they were passed.

Returns:
the message data as a list of objects
Throws:
SpreadException - if there is an error reading the objects
See Also:
digest(Serializable)

getType

public short getType()
Gets the message type. The message type is set with setType(short).

Returns:
the message type
See Also:
setType(short)

getEndianMismatch

public boolean getEndianMismatch()
Checks for an endian mismatch. If there is an endian mismatch between the machine that sent the message and the local machine, this is true. This is a signal to the application so that it can handle endian flips in its message data. Aside from the message data, spread handles all other endian mismatches itself (for example, the message type).

Returns:
true if there is an endian mismatch

addGroup

public void addGroup(SpreadGroup group)
Adds this group to the list this message will be sent to. When the message is multicast, all members of this group will receive it.

Parameters:
group - a group to send this message to

addGroups

public void addGroups(SpreadGroup[] groups)
Adds these groups to the list this message will be sent to. When the message is multicast, all members of these groups will receive it.

Parameters:
groups - a list of groups to send this message to

addGroup

public void addGroup(java.lang.String group)
Adds this group to the list this message will be sent to. When the message is multicast, all members of this group will receive it.

Parameters:
group - a group to send this message to

addGroups

public void addGroups(java.lang.String[] groups)
Adds these groups to the list this message will be sent to. When the message is multicast, all members of these groups will receive it.

Parameters:
groups - a list of groups to send this message to

setData

public void setData(byte[] data)
Sets the message's data to this array of bytes. This cancels any previous calls to setData(byte[]), setObject(Serializable), digest(Serializable).

Parameters:
data - the new message data
See Also:
getData()

setObject

public void setObject(java.io.Serializable object)
               throws SpreadException
Sets the message's data to this object, in serialized form. The object must support the Serializable interface to use this method. This cancels any previous calls to setData(byte[]), setObject(Serializable), digest(Serializable). This should not be used if an application using the C library needs to read this message.

Parameters:
object - the object to set the data to
Throws:
SpreadException
See Also:
getObject()

digest

public void digest(java.io.Serializable object)
            throws SpreadException
Adds this message to the digest. The object must support the Serializable interface to use this method. This cancels any previous calls to setData(byte[]) or setObject(Serializable). This should not be used if an application using the C library needs to read this message. When the message is sent, all of the objects that have been passed to this method get sent as the message data.

Parameters:
object - the object to add to the digets
Throws:
SpreadException
See Also:
getDigest()

setType

public void setType(short type)
Set's the message type. This is a 16-bit integer that can be used by the application to identify the message.

Parameters:
type - the message type
See Also:
getType()

getMembershipInfo

public MembershipInfo getMembershipInfo()
Get the membership info for this message. This should only be called if this is a membership message (isMembership() is true).

Returns:
the membership info for this message

clone

public java.lang.Object clone()
Creates a copy of this message.

Overrides:
clone in class java.lang.Object
Returns:
a copy of this message


Copyright © 2004 Spread Concepts LLC. All Rights Reserved.