Package org.apache.catalina.tribes.io
Class ChannelData
- java.lang.Object
-
- org.apache.catalina.tribes.io.ChannelData
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,ChannelMessage
public class ChannelData extends java.lang.Object implements ChannelMessage
TheChannelData
object is used to transfer a message through the channel interceptor stack and eventually out on a transport to be sent to another node. While the message is being processed by the different interceptors, the message data can be manipulated as each interceptor seems appropriate.- Author:
- Peter Rossbach
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static ChannelData[]
EMPTY_DATA_ARRAY
static boolean
USE_SECURE_RANDOM_FOR_UUID
-
Constructor Summary
Constructors Constructor Description ChannelData()
Creates an empty channel data with a new unique IdChannelData(boolean generateUUID)
Create an empty channel data objectChannelData(byte[] uniqueId, XByteBuffer message, long timestamp)
Creates a new channel data object with data
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.String
bToS(byte[] data)
ChannelData
clone()
Create a shallow clone, only the data gets recreatedjava.lang.Object
deepclone()
Complete cloneboolean
equals(java.lang.Object o)
Compares to ChannelData objects, only compares on getUniqueId().equals(o.getUniqueId())void
generateUUID()
Generates a UUID and invokes setUniqueIdMember
getAddress()
Returns the source or reply-to addressstatic ChannelData
getDataFromPackage(byte[] b)
static ChannelData
getDataFromPackage(XByteBuffer xbuf)
Deserializes a ChannelData object from a byte arraybyte[]
getDataPackage()
Serializes the ChannelData object into a byte[] arraybyte[]
getDataPackage(byte[] data, int offset)
int
getDataPackageLength()
XByteBuffer
getMessage()
returns the byte buffer that contains the actual message payloadint
getOptions()
The message options is a 32 bit flag set that triggers interceptors and message behavior.long
getTimestamp()
Timestamp of when the message was created.byte[]
getUniqueId()
Each message must have a globally unique Id.int
hashCode()
static boolean
sendAckAsync(int options)
Utility method, returns true if the options flag indicates that an ack is to be sent after the message has been received but not yet processedstatic boolean
sendAckSync(int options)
Utility method, returns true if the options flag indicates that an ack is to be sent after the message has been received and processedvoid
setAddress(Member address)
Sets the source or reply-to addressvoid
setMessage(XByteBuffer message)
The byte buffer that contains the actual message payloadvoid
setOptions(int options)
Sets the message options.void
setTimestamp(long timestamp)
Sets the timestamp of this messagevoid
setUniqueId(byte[] uniqueId)
java.lang.String
toString()
-
-
-
Field Detail
-
EMPTY_DATA_ARRAY
public static final ChannelData[] EMPTY_DATA_ARRAY
-
USE_SECURE_RANDOM_FOR_UUID
public static volatile boolean USE_SECURE_RANDOM_FOR_UUID
-
-
Constructor Detail
-
ChannelData
public ChannelData()
Creates an empty channel data with a new unique Id- See Also:
ChannelData(boolean)
-
ChannelData
public ChannelData(boolean generateUUID)
Create an empty channel data object- Parameters:
generateUUID
- boolean - if true, a unique Id will be generated
-
ChannelData
public ChannelData(byte[] uniqueId, XByteBuffer message, long timestamp)
Creates a new channel data object with data- Parameters:
uniqueId
- - unique message idmessage
- - message datatimestamp
- - message timestamp
-
-
Method Detail
-
getMessage
public XByteBuffer getMessage()
Description copied from interface:ChannelMessage
returns the byte buffer that contains the actual message payload- Specified by:
getMessage
in interfaceChannelMessage
- Returns:
- Returns the message byte buffer
-
setMessage
public void setMessage(XByteBuffer message)
Description copied from interface:ChannelMessage
The byte buffer that contains the actual message payload- Specified by:
setMessage
in interfaceChannelMessage
- Parameters:
message
- The message to send.
-
getTimestamp
public long getTimestamp()
Description copied from interface:ChannelMessage
Timestamp of when the message was created.- Specified by:
getTimestamp
in interfaceChannelMessage
- Returns:
- Returns the timestamp.
-
setTimestamp
public void setTimestamp(long timestamp)
Description copied from interface:ChannelMessage
Sets the timestamp of this message- Specified by:
setTimestamp
in interfaceChannelMessage
- Parameters:
timestamp
- The timestamp to send
-
getUniqueId
public byte[] getUniqueId()
Description copied from interface:ChannelMessage
Each message must have a globally unique Id. interceptors heavily depend on this id for message processing- Specified by:
getUniqueId
in interfaceChannelMessage
- Returns:
- Returns the uniqueId.
-
setUniqueId
public void setUniqueId(byte[] uniqueId)
- Parameters:
uniqueId
- The uniqueId to send.
-
getOptions
public int getOptions()
Description copied from interface:ChannelMessage
The message options is a 32 bit flag set that triggers interceptors and message behavior.- Specified by:
getOptions
in interfaceChannelMessage
- Returns:
- returns the message options see org.apache.catalina.tribes.Channel#sendMessage(org.apache.catalina.tribes.Member[], java.io.Serializable, int)
- See Also:
Channel.send(Member[], Serializable, int)
,ChannelInterceptor.getOptionFlag()
-
setOptions
public void setOptions(int options)
Sets the message options.- Specified by:
setOptions
in interfaceChannelMessage
- Parameters:
options
- the message options- See Also:
ChannelMessage.getOptions()
-
getAddress
public Member getAddress()
Returns the source or reply-to address- Specified by:
getAddress
in interfaceChannelMessage
- Returns:
- Member
-
setAddress
public void setAddress(Member address)
Sets the source or reply-to address- Specified by:
setAddress
in interfaceChannelMessage
- Parameters:
address
- Member
-
generateUUID
public void generateUUID()
Generates a UUID and invokes setUniqueId
-
getDataPackageLength
public int getDataPackageLength()
-
getDataPackage
public byte[] getDataPackage()
Serializes the ChannelData object into a byte[] array- Returns:
- byte[]
-
getDataPackage
public byte[] getDataPackage(byte[] data, int offset)
-
getDataFromPackage
public static ChannelData getDataFromPackage(XByteBuffer xbuf)
Deserializes a ChannelData object from a byte array- Parameters:
xbuf
- byte[]- Returns:
- ChannelData
-
getDataFromPackage
public static ChannelData getDataFromPackage(byte[] b)
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
Compares to ChannelData objects, only compares on getUniqueId().equals(o.getUniqueId())- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
- Object- Returns:
- boolean
-
clone
public ChannelData clone()
Create a shallow clone, only the data gets recreated- Specified by:
clone
in interfaceChannelMessage
- Overrides:
clone
in classjava.lang.Object
- Returns:
- ClusterData
-
deepclone
public java.lang.Object deepclone()
Complete clone- Specified by:
deepclone
in interfaceChannelMessage
- Returns:
- ClusterData
-
sendAckSync
public static boolean sendAckSync(int options)
Utility method, returns true if the options flag indicates that an ack is to be sent after the message has been received and processed- Parameters:
options
- int - the options for the message- Returns:
- boolean
- See Also:
Channel.SEND_OPTIONS_USE_ACK
,Channel.SEND_OPTIONS_SYNCHRONIZED_ACK
-
sendAckAsync
public static boolean sendAckAsync(int options)
Utility method, returns true if the options flag indicates that an ack is to be sent after the message has been received but not yet processed- Parameters:
options
- int - the options for the message- Returns:
- boolean
- See Also:
Channel.SEND_OPTIONS_USE_ACK
,Channel.SEND_OPTIONS_SYNCHRONIZED_ACK
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
bToS
public static java.lang.String bToS(byte[] data)
-
-