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

Packages that use I2NPMessageException
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
`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` `VariableTunnelBuildMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `DataMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `DatabaseSearchReplyMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `TunnelBuildMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `UnknownI2NPMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `VariableTunnelBuildReplyMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `TunnelBuildReplyMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `DatabaseStoreMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `TunnelDataMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `TunnelGatewayMessage.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` `DatabaseLookupMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `GarlicMessage.readMessage(byte[] data, int offset, int dataSize, int type)`
`void` `I2NPMessageImpl.readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler)`
`void` `TunnelGatewayMessage.readMessage(byte[] data, int offset, int dataSize, int type, I2NPMessageHandler handler)`
`void` `I2NPMessage.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` `VariableTunnelBuildMessage.writeMessageBody(byte[] out, int curIndex)`
`protected abstract int` `I2NPMessageImpl.writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index.
`protected int` `DatabaseSearchReplyMessage.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` `VariableTunnelBuildReplyMessage.writeMessageBody(byte[] out, int curIndex)`
`protected int` `TunnelBuildReplyMessage.writeMessageBody(byte[] out, int curIndex)`
`protected int` `DatabaseStoreMessage.writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
`protected int` `TunnelDataMessage.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
`protected int` `DeliveryStatusMessage.writeMessageBody(byte[] out, int curIndex)` write the message body to the output array, starting at the given index
`protected int` `DatabaseLookupMessage.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