Class TunnelBuildMessageBase

java.lang.Object
net.i2p.data.i2np.I2NPMessageImpl
net.i2p.data.i2np.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
  • Field Details

  • Constructor Details

    • TunnelBuildMessageBase

      public TunnelBuildMessageBase(I2PAppContext context)
    • TunnelBuildMessageBase

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

    • setRecord

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

      public EncryptedBuildRecord getRecord(int index)
      Returns:
      may be null
    • getRecordCount

      public int getRecordCount()
      Since:
      0.7.12
    • calculateWrittenLength

      protected int calculateWrittenLength()
      Description copied from class: I2NPMessageImpl
      calculate the message body's length (not including the header and footer
      Specified by:
      calculateWrittenLength in class I2NPMessageImpl
    • 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.
    • writeMessageBody

      protected int writeMessageBody(byte[] out, int curIndex) throws I2NPMessageException
      Description copied from class: I2NPMessageImpl
      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)
      Throws:
      I2NPMessageException