## Uses of Class
net.i2p.data.i2np.I2NPMessageException

- Packages that use I2NPMessageException
  Package | Description
  --- | ---
  net.i2p.data.i2np | The Invisible Internet Network Protocol (I2NP) is only a part of how an application can send messages over the network.

- - ### Uses of I2NPMessageException in net.i2p.data.i2np

    Methods in net.i2p.data.i2np that throw I2NPMessageException
    Modifier and Type | Method and Description
    --- | ---
    `static I2NPMessage` | I2NPMessageImpl.`createMessage(I2PAppContext context, int type)` Yes, this is fairly ugly, but its the only place it ever happens.
    `static I2NPMessage` | I2NPMessageImpl.`fromRawByteArray(I2PAppContext ctx, byte[] buffer, int offset, int len, I2NPMessageHandler handler)` used by SSU only
    `int` | I2NPMessageImpl.`readBytes(byte[] data, int type, int offset)` Read the header, then read the rest into buffer, then call readMessage in the implemented message type
    `int` | I2NPMessage.`readBytes(byte[] data, int type, int offset)`
    `int` | I2NPMessageImpl.`readBytes(InputStream in, int type, byte[] buffer)` Read the header, then read the rest into buffer, then call readMessage in the implemented message type
    `int` | I2NPMessage.`readBytes(InputStream in, int type, byte[] buffer)` Read the body into the data structures, after the initial type byte, using the current class's format as defined by the I2NP specification
    `I2NPMessage` | I2NPMessageHandler.`readMessage(byte[] data)` Read an I2NPMessage from the stream and return the fully populated object.
    `int` | I2NPMessageHandler.`readMessage(byte[] data, int offset)`
    `void` | DatabaseLookupMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | VariableTunnelBuildReplyMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | DataMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | VariableTunnelBuildMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | GarlicMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | DatabaseStoreMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | TunnelBuildMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | TunnelDataMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | I2NPMessage.`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` | DeliveryStatusMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | TunnelBuildReplyMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | UnknownI2NPMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | DatabaseSearchReplyMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | TunnelGatewayMessage.`readMessage(byte[] data, int offset, int dataSize, int type)`
    `void` | I2NPMessageImpl.`readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler)`
    `void` | I2NPMessage.`readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler)`
    `void` | TunnelGatewayMessage.`readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler)`
    `I2NPMessage` | I2NPMessageHandler.`readMessage(InputStream in)` Read an I2NPMessage from the stream and return the fully populated object.
    `protected int` | DatabaseLookupMessage.`writeMessageBody(byte[] out, int curIndex)`
    `protected int` | VariableTunnelBuildReplyMessage.`writeMessageBody(byte[] out, int curIndex)`
    `protected int` | VariableTunnelBuildMessage.`writeMessageBody(byte[] out, int curIndex)`
    `protected int` | GarlicMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
    `protected int` | DatabaseStoreMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
    `protected abstract int` | I2NPMessageImpl.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index.
    `protected int` | TunnelBuildMessage.`writeMessageBody(byte[] out, int curIndex)`
    `protected int` | TunnelDataMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
    `protected int` | DeliveryStatusMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
    `protected int` | TunnelBuildReplyMessage.`writeMessageBody(byte[] out, int curIndex)`
    `protected int` | DatabaseSearchReplyMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
    `protected int` | TunnelGatewayMessage.`writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index