## net.i2p.data.i2np
Class TunnelCreateMessage

    java.lang.Object
      net.i2p.data.DataStructureImpl
          net.i2p.data.i2np.I2NPMessageImpl
              net.i2p.data.i2np.TunnelCreateMessage

All Implemented Interfaces:
  DataStructure, I2NPMessage

    public class TunnelCreateMessage

extends I2NPMessageImpl

Defines the message sent to a router to request that it participate in a tunnel using the included configuration settings.

Nested Class Summary

Nested classes/interfaces inherited from class net.i2p.data.i2np.I2NPMessageImpl
`I2NPMessageImpl.Builder`

Field Summary
`static long` `MAX_NONCE_VALUE`
`static int` `MESSAGE_TYPE`

Fields inherited from class net.i2p.data.i2np.I2NPMessageImpl
`_context, CHECKSUM_LENGTH, DEFAULT_EXPIRATION_MS`

Fields inherited from interface net.i2p.data.i2np.I2NPMessage
`MAX_ID_VALUE, MAX_SIZE`

Constructor Summary
`TunnelCreateMessage(I2PAppContext context)`

Method Summary
`protected int` `calculateWrittenLength()` calculate the message body's length (not including the header and footer
`boolean` `equals(java.lang.Object object)`
`Certificate` `getCertificate()`
`int` `getDurationSeconds()`
`boolean` `getIsGateway()`
`SessionKey` `getIVKey()`
`SessionKey` `getLayerKey()`
`Hash` `getNextRouter()`
`TunnelId` `getNextTunnelId()`
`long` `getNonce()`
`java.util.Properties` `getOptions()`
`Hash` `getReplyGateway()`
`SessionKey` `getReplyKey()`
`SessionTag` `getReplyTag()`
`TunnelId` `getReplyTunnel()`
`int` `getType()` Return the unique identifier for this type of I2NP message, as defined in the I2NP spec
`int` `hashCode()`
`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` `setCertificate(Certificate cert)`
`void` `setDurationSeconds(int seconds)`
`void` `setIsGateway(boolean isGateway)`
`void` `setIVKey(SessionKey key)`
`void` `setLayerKey(SessionKey key)`
`void` `setNextRouter(Hash routerIdentityHash)`
`void` `setNextTunnelId(TunnelId id)`
`void` `setNonce(long nonce)`
`void` `setOptions(java.util.Properties opts)`
`void` `setReplyGateway(Hash peer)`
`void` `setReplyKey(SessionKey key)`
`void` `setReplyTag(SessionTag tag)`
`void` `setReplyTunnel(TunnelId id)`
`byte[]` `toByteArray()`
`java.lang.String` `toString()`
`protected int` `writeMessageBody(byte[] data, int offset)` write the message body to the output array, starting at the given index

Methods inherited from class net.i2p.data.i2np.I2NPMessageImpl
`createMessage, fromRawByteArray, fromRawByteArray, getMessageExpiration, getMessageSize, getRawMessageSize, getUniqueId, read, readBytes, readBytes, readBytes, readMessage, registerBuilder, setMessageExpiration, setUniqueId, toByteArray, toRawByteArray, verifyUnwritten, writeBytes, written`

Methods inherited from class net.i2p.data.DataStructureImpl
`calculateHash, fromBase64, fromByteArray, read, toBase64`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface net.i2p.data.DataStructure
`calculateHash, fromBase64, fromByteArray, toBase64`

Field Detail

### MESSAGE_TYPE

    public static final int MESSAGE_TYPE

See Also:
  Constant Field Values

### MAX_NONCE_VALUE

    public static final long MAX_NONCE_VALUE

See Also:
  Constant Field Values

Constructor Detail

### TunnelCreateMessage

    public TunnelCreateMessage(I2PAppContext context)

Method Detail

### setNextRouter

    public void setNextRouter(Hash routerIdentityHash)

### getNextRouter

    public Hash getNextRouter()

### setNextTunnelId

    public void setNextTunnelId(TunnelId id)

### getNextTunnelId

    public TunnelId getNextTunnelId()

### setDurationSeconds

    public void setDurationSeconds(int seconds)

### getDurationSeconds

    public int getDurationSeconds()

### setLayerKey

    public void setLayerKey(SessionKey key)

### getLayerKey

    public SessionKey getLayerKey()

### setIVKey

    public void setIVKey(SessionKey key)

### getIVKey

    public SessionKey getIVKey()

### setCertificate

    public void setCertificate(Certificate cert)

### getCertificate

    public Certificate getCertificate()

### setReplyTag

    public void setReplyTag(SessionTag tag)

### getReplyTag

    public SessionTag getReplyTag()

### setReplyKey

    public void setReplyKey(SessionKey key)

### getReplyKey

    public SessionKey getReplyKey()

### setReplyTunnel

    public void setReplyTunnel(TunnelId id)

### getReplyTunnel

    public TunnelId getReplyTunnel()

### setReplyGateway

    public void setReplyGateway(Hash peer)

### getReplyGateway

    public Hash getReplyGateway()

### setNonce

    public void setNonce(long nonce)

### getNonce

    public long getNonce()

### setIsGateway

    public void setIsGateway(boolean isGateway)

### getIsGateway

    public boolean getIsGateway()

### getOptions

    public java.util.Properties getOptions()

### setOptions

    public void setOptions(java.util.Properties opts)

### readMessage

    public void readMessage(byte[] data,
                            int offset,
                            int dataSize,
                            int type)
                     throws I2NPMessageException,
                            java.io.IOException

  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.
    `java.io.IOException` - if there is a problem reading from the stream

### calculateWrittenLength

    protected int calculateWrittenLength()

  calculate the message body's length (not including the header and footer

  Specified by:
    `calculateWrittenLength` in class `I2NPMessageImpl`

### writeMessageBody

    protected int writeMessageBody(byte[] data,
                                   int offset)
                            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
  Throws:
    `I2NPMessageException`

### toByteArray

    public byte[] toByteArray()

  Specified by:
    `toByteArray` in interface `DataStructure`
  Overrides:
    `toByteArray` in class `I2NPMessageImpl`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `java.lang.Object`

### equals

    public boolean equals(java.lang.Object object)

  Overrides:
    `equals` in class `java.lang.Object`

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### 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