Class TunnelGatewayMessage

All Implemented Interfaces:
I2NPMessage

public class TunnelGatewayMessage extends FastI2NPMessageImpl
Defines the message sent between one tunnel's endpoint and another's gateway. format: { tunnelId, sizeof(i2npMessage.toByteArray()), i2npMessage.toByteArray() }
  • Field Details

  • Constructor Details

    • TunnelGatewayMessage

      public TunnelGatewayMessage(I2PAppContext context)
  • Method Details

    • getTunnelId

      public TunnelId getTunnelId()
    • setTunnelId

      public void setTunnelId(TunnelId id)
      Throws:
      IllegalStateException - if id previously set, to protect saved checksum
    • getMessage

      public I2NPMessage getMessage()
      Warning, at the IBGW, where the message was read in, this will be an UnknownI2NPMessage. If you need a real message class, use UnknownI2NPMessage.convert(). Warning, will be null after message has been written. Note that if you change the expiration on the embedded message it will mess up the checksum of this message, so don't do that.
    • setMessage

      public void setMessage(I2NPMessage msg)
      Throws:
      IllegalStateException - if msg previously set, to protect saved checksum
    • 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
    • writeMessageBody

      protected int writeMessageBody(byte[] out, int curIndex) throws I2NPMessageException
      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
    • 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.
    • readMessage

      public void readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler) throws I2NPMessageException
      Note that for efficiency at the IBGW, this does not fully deserialize the included I2NP Message. It just puts it in an UnknownI2NPMessage.
      Specified by:
      readMessage in interface I2NPMessage
      Overrides:
      readMessage in class I2NPMessageImpl
      Parameters:
      handler - unused, may be null
      Throws:
      I2NPMessageException
    • 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
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object