Class DataMessage

  • All Implemented Interfaces:
    I2NPMessage

    public class DataMessage
    extends FastI2NPMessageImpl
    Defines a message containing arbitrary bytes of data This is what goes in a GarlicClove. It was also previously used for generating test messages.
    Author:
    jrandom
    • Constructor Detail

    • Method Detail

      • getData

        public byte[] getData()
      • setData

        public void setData​(byte[] data)
        Throws:
        IllegalStateException - if data previously set, to protect saved checksum
      • getSize

        public int getSize()
      • readMessage

        public void readMessage​(byte[] data,
                                int offset,
                                int dataSize,
                                int type)
                         throws I2NPMessageException
        Description copied from interface: I2NPMessage
        Read the body into the data structures, after the initial type byte and the uniqueId / expiration, using the current class's format as defined by the I2NP specification
        Parameters:
        data - data to read from
        offset - where to start in the data array
        dataSize - how long into the data to read
        type - I2NP message type
        Throws:
        I2NPMessageException - if the stream doesn't contain a valid message that this class can read.
      • calculateWrittenLength

        protected int calculateWrittenLength()
        calculate the message body's length (not including the header and footer
        Specified by:
        calculateWrittenLength in class I2NPMessageImpl
      • writeMessageBody

        protected int writeMessageBody​(byte[] out,
                                       int curIndex)
        write the message body to the output array, starting at the given index
        Specified by:
        writeMessageBody in class I2NPMessageImpl
        Returns:
        the index into the array after the last byte written (NOT the length)
      • getType

        public int getType()
        Description copied from interface: I2NPMessage
        Return the unique identifier for this type of I2NP message, as defined in the I2NP spec
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object