# Interface ChannelMessage

All Superinterfaces:
  `Cloneable`, `Serializable`

All Known Implementing Classes:
  `ChannelData`

public interface ChannelMessage extends Serializable, Cloneable
Message that is passed through the interceptor stack after the data serialized in the Channel object and then passed down to the interceptor and eventually down to the ChannelSender component.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Shallow clone, what gets cloned depends on the implementation
  `Object`
  `deepclone()`
  Deep clone, all fields MUST get cloned
  `Member`
  `getAddress()`
  Get the address that this message originated from.
  `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. interceptors heavily depend on this id for message processing
  `void`
  `setAddress(Member member)`
  Sets the source or reply-to address of this message
  `void`
  `setMessage(XByteBuffer buf)`
  The byte buffer that contains the actual message payload
  `void`
  `setOptions(int options)`
  sets the option bits for this message
  `void`
  `setTimestamp(long timestamp)`
  Sets the timestamp of this message.

- ## Method Details

  - ### getAddress

    Member getAddress()
    Get the address that this message originated from. Almost always `Channel.getLocalMember(boolean)`. This would be set to a different address if the message was being relayed from a host other than the one that originally sent it.
    Returns:
      the source or reply-to address of this message

  - ### setAddress

    void setAddress(Member member)
    Sets the source or reply-to address of this message
    Parameters:
      `member` - Member

  - ### getTimestamp

    long getTimestamp()
    Timestamp of when the message was created.
    Returns:
      long timestamp in milliseconds

  - ### setTimestamp

    void setTimestamp(long timestamp)
    Sets the timestamp of this message.
    Parameters:
      `timestamp` - The timestamp

  - ### getUniqueId

    byte[] getUniqueId()
    Each message must have a globally unique Id. interceptors heavily depend on this id for message processing
    Returns:
      byte

  - ### setMessage

    void setMessage(XByteBuffer buf)
    The byte buffer that contains the actual message payload
    Parameters:
      `buf` - XByteBuffer

  - ### getMessage

    XByteBuffer getMessage()
    returns the byte buffer that contains the actual message payload
    Returns:
      XByteBuffer

  - ### getOptions

    int getOptions()
    The message options is a 32 bit flag set that triggers interceptors and message behavior.
    Returns:
      int - the option bits set for this message
    See Also:
      - `Channel.send(Member[], Serializable, int)`
      - `ChannelInterceptor.getOptionFlag()`

  - ### setOptions

    void setOptions(int options)
    sets the option bits for this message
    Parameters:
      `options` - int
    See Also:
      - `getOptions()`

  - ### clone

    Object clone()
    Shallow clone, what gets cloned depends on the implementation
    Returns:
      ChannelMessage

  - ### deepclone

    Object deepclone()
    Deep clone, all fields MUST get cloned
    Returns:
      ChannelMessage