Class ChannelData

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, ChannelMessage

    public class ChannelData
    extends java.lang.Object
    implements ChannelMessage
    The ChannelData 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
    • Constructor Summary

      Constructors 
      Constructor Description
      ChannelData()
      Creates an empty channel data with a new unique Id
      ChannelData​(boolean generateUUID)
      Create an empty channel data object
      ChannelData​(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 recreated
      java.lang.Object deepclone()
      Complete clone
      boolean equals​(java.lang.Object o)
      Compares to ChannelData objects, only compares on getUniqueId().equals(o.getUniqueId())
      void generateUUID()
      Generates a UUID and invokes setUniqueId
      Member getAddress()
      Returns the source or reply-to address
      static ChannelData getDataFromPackage​(byte[] b)  
      static ChannelData getDataFromPackage​(XByteBuffer xbuf)
      Deserializes a ChannelData object from a byte array
      byte[] getDataPackage()
      Serializes the ChannelData object into a byte[] array
      byte[] getDataPackage​(byte[] data, int offset)  
      int getDataPackageLength()  
      XByteBuffer getMessage()
      returns the byte buffer that contains the actual message payload
      int 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 processed
      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
      void setAddress​(Member address)
      Sets the source or reply-to address
      void setMessage​(XByteBuffer message)
      The byte buffer that contains the actual message payload
      void setOptions​(int options)
      Sets the message options.
      void setTimestamp​(long timestamp)
      Sets the timestamp of this message
      void setUniqueId​(byte[] uniqueId)  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • 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 id
        message - - message data
        timestamp - - 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 interface ChannelMessage
        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 interface ChannelMessage
        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 interface ChannelMessage
        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 interface ChannelMessage
        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 interface ChannelMessage
        Returns:
        Returns the uniqueId.
      • setUniqueId

        public void setUniqueId​(byte[] uniqueId)
        Parameters:
        uniqueId - The uniqueId to send.
      • getAddress

        public Member getAddress()
        Returns the source or reply-to address
        Specified by:
        getAddress in interface ChannelMessage
        Returns:
        Member
      • setAddress

        public void setAddress​(Member address)
        Sets the source or reply-to address
        Specified by:
        setAddress in interface ChannelMessage
        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 class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Compares to ChannelData objects, only compares on getUniqueId().equals(o.getUniqueId())
        Overrides:
        equals in class java.lang.Object
        Parameters:
        o - Object
        Returns:
        boolean
      • clone

        public ChannelData clone()
        Create a shallow clone, only the data gets recreated
        Specified by:
        clone in interface ChannelMessage
        Overrides:
        clone in class java.lang.Object
        Returns:
        ClusterData
      • deepclone

        public java.lang.Object deepclone()
        Complete clone
        Specified by:
        deepclone in interface ChannelMessage
        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 class java.lang.Object
      • bToS

        public static java.lang.String bToS​(byte[] data)