Class TunnelBuildMessageBase

  • All Implemented Interfaces:
    I2NPMessage
    Direct Known Subclasses:
    TunnelBuildMessage, TunnelBuildReplyMessage

    public abstract class TunnelBuildMessageBase
    extends I2NPMessageImpl
    Base for TBM, TBRM, VTBM, VTBRM Retrofitted over them. There's really no difference between the build and build reply. TBM and VBTM (but not TBRM and VTBRM?) messages are modified in-place by doing a single setRecord(), and retransmitted. Therefore they are NOT good candidates to use FastI2NPMessageImpl; the checksum would have to be invalidated with every setRecord(). Which we could do in TBM and VTBM but not TBRM and VTBRM, but keep it simple for now.
    Since:
    0.8.8
    • Constructor Detail

      • TunnelBuildMessageBase

        public TunnelBuildMessageBase​(I2PAppContext context)
      • TunnelBuildMessageBase

        protected TunnelBuildMessageBase​(I2PAppContext context,
                                         int records)
        Since:
        0.7.12
    • Method Detail

      • setRecord

        public void setRecord​(int index,
                              EncryptedBuildRecord record)
        Parameters:
        record - may be null
      • getRecordCount

        public int getRecordCount()
        Since:
        0.7.12
      • 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.