Class TunnelDataMessage

  • All Implemented Interfaces:
    I2NPMessage

    public class TunnelDataMessage
    extends FastI2NPMessageImpl
    Defines the message sent between routers as part of the tunnel delivery The tunnel ID is changed in-place by TunnelParticipant.send(), so we can't reuse the checksum on output, but we still subclass FastI2NPMessageImpl so we don't verify the checksum on input... because this is a high-usage class.
    • Constructor Detail

      • TunnelDataMessage

        public TunnelDataMessage​(I2PAppContext context)
    • Method Detail

      • getTunnelId

        public long getTunnelId()
      • setTunnelId

        public void setTunnelId​(long id)
        (correctly) Invalidates stored checksum
      • getTunnelIdObj

        public TunnelId getTunnelIdObj()
      • setTunnelId

        public void setTunnelId​(TunnelId id)
        (correctly) Invalidates stored checksum
      • getData

        public byte[] getData()
      • setData

        public void setData​(byte[] data)
        Throws:
        IllegalStateException - if data previously set, to protect saved checksum
      • 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
      • 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