net.i2p.data.i2np

## Class OutboundTunnelBuildReplyMessage

- java.lang.Object
- - net.i2p.data.i2np.I2NPMessageImpl
  - - net.i2p.data.i2np.TunnelBuildMessageBase
    - - net.i2p.data.i2np.TunnelBuildReplyMessage
      - - net.i2p.data.i2np.OutboundTunnelBuildReplyMessage

- All Implemented Interfaces:
    I2NPMessage

      public class OutboundTunnelBuildReplyMessage
      extends TunnelBuildReplyMessage

  Sent from the OBEP to the tunnel creator via an inbound tunnel. Contains a variable number of encrypted records. This message must be garlic-encrypted to hide the contents from the OBGW. Preliminary, see proposal 157.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class net.i2p.data.i2np.I2NPMessageImpl

      `I2NPMessageImpl.Builder`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `MESSAGE_TYPE`
    `static int` | `SHORT_RECORD_SIZE`

    - ### Fields inherited from class net.i2p.data.i2np.TunnelBuildMessageBase

      `_records, MAX_RECORD_COUNT, RECORD_COUNT, RECORD_SIZE`

    - ### Fields inherited from class net.i2p.data.i2np.I2NPMessageImpl

      `_context, _expiration, _log, CHECKSUM_LENGTH, DEFAULT_EXPIRATION_MS, HEADER_LENGTH`

    - ### Fields inherited from interface net.i2p.data.i2np.I2NPMessage

      `MAX_ID_VALUE, MAX_SIZE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OutboundTunnelBuildReplyMessage(I2PAppContext context)` zero record count, will be set with readMessage()
    `OutboundTunnelBuildReplyMessage(I2PAppContext context, int records)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `calculateWrittenLength()` calculate the message body's length (not including the header and footer
    `int` | `getType()` Return the unique identifier for this type of I2NP message, as defined in the I2NP spec
    `void` | `readMessage(byte[] data, int offset, int dataSize, int type)` 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
    `void` | `setRecord(int index, EncryptedBuildRecord record)`
    `String` | `toString()`
    `protected int` | `writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index.

    - ### Methods inherited from class net.i2p.data.i2np.TunnelBuildMessageBase

      `getRecord, getRecordCount`

    - ### Methods inherited from class net.i2p.data.i2np.I2NPMessageImpl

      `createMessage, fromRawByteArray, fromRawByteArrayNTCP2, getMessageExpiration, getMessageSize, getRawMessageSize, getUniqueId, getUniqueId, readBytes, readBytes, readMessage, setMessageExpiration, setUniqueId, toByteArray, toByteArray, toByteArray, toRawByteArray, toRawByteArrayNTCP2`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### MESSAGE_TYPE

          public static final int MESSAGE_TYPE

      See Also:
        Constant Field Values

    - #### SHORT_RECORD_SIZE

          public static final int SHORT_RECORD_SIZE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### OutboundTunnelBuildReplyMessage

          public OutboundTunnelBuildReplyMessage(I2PAppContext context)

      zero record count, will be set with readMessage()

    - #### OutboundTunnelBuildReplyMessage

          public OutboundTunnelBuildReplyMessage(I2PAppContext context,
                                                 int records)

  - ### Method Detail

    - #### calculateWrittenLength

          protected int calculateWrittenLength()

      Description copied from class: `I2NPMessageImpl`
      calculate the message body's length (not including the header and footer
      Overrides:
        `calculateWrittenLength` in class `TunnelBuildMessageBase`

    - #### 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
      Specified by:
        `getType` in interface `I2NPMessage`
      Overrides:
        `getType` in class `TunnelBuildReplyMessage`

    - #### 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
      Specified by:
        `readMessage` in interface `I2NPMessage`
      Overrides:
        `readMessage` in class `TunnelBuildMessageBase`
      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.

    - #### setRecord

          public void setRecord(int index,
                                EncryptedBuildRecord record)

      Overrides:
        `setRecord` in class `TunnelBuildMessageBase`
      Parameters:
        `record` - must be ShortEncryptedBuildRecord or null
      Throws:
        `IllegalArgumentException` - on bad slot or record length.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `TunnelBuildReplyMessage`

    - #### 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.
      Overrides:
        `writeMessageBody` in class `TunnelBuildMessageBase`
      Returns:
        the index into the array after the last byte written (NOT the length)
      Throws:
        `I2NPMessageException`