## net.i2p.data.i2np
Class UnknownI2NPMessage

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

All Implemented Interfaces:
  DataStructure, I2NPMessage

    public class UnknownI2NPMessage

extends I2NPMessageImpl

This is the same as DataMessage but with a variable message type. This is defined so routers can route messages they don't know about. We don't extend DataMessage so that any code that does (instanceof DataMessage) won't return true for this type. Load tests use DataMessage, for example. See InboundMessageDistributor. There is no setData() method, the only way to create one of these is to read it with readMessage() (i.e., it came from some other router)

Since:
  0.7.12

Nested Class Summary

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

Field Summary

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
`UnknownI2NPMessage(I2PAppContext context, int type)`

Method Summary
`protected int` `calculateWrittenLength()` calculate the message body's length (not including the header and footer
`boolean` `equals(Object object)`
`byte[]` `getData()` warning - only public for equals()
`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
`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.I2NPMessageImpl
`createMessage, fromRawByteArray, getMessageExpiration, getMessageSize, getRawMessageSize, getUniqueId, readBytes, readBytes, readBytes, readMessage, registerBuilder, setMessageExpiration, setUniqueId, toByteArray, toByteArray, toRawByteArray, writeBytes`

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`

Constructor Detail

### UnknownI2NPMessage

    public UnknownI2NPMessage(I2PAppContext context,
                              int type)

Parameters:
  `type` - 0-255

Method Detail

### getData

    public byte[] getData()

  warning - only public for equals()

### readMessage

    public void readMessage(byte[] data,
                            int offset,
                            int dataSize,
                            int type)
                     throws I2NPMessageException,
                            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.
    `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[] out,
                                   int curIndex)

  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

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

  Returns:
    0-255

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