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

- Packages that use I2NPMessageImpl
  Package | Description
  --- | ---
  net.i2p.data.i2np | This package defines the low-level messages sent between routers, called Invisible Internet Network Protocol (I2NP).

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

    Subclasses of I2NPMessageImpl in net.i2p.data.i2np
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DatabaseLookupMessage` Defines the message a router sends to another router to search for a key in the network database.
    `class` | `DatabaseSearchReplyMessage` Defines the message a router sends to another router in response to a search (DatabaseFindNearest or DatabaseLookup) when it doesn't have the value, specifying what routers it would search.
    `class` | `DatabaseStoreMessage` Defines the message a router sends to another router to test the network database reachability, as well as the reply message sent back.
    `class` | `DataMessage` Defines a message containing arbitrary bytes of data This is what goes in a GarlicClove.
    `class` | `DeliveryStatusMessage` Defines the message sent back in reply to a message when requested, containing the private ack id.
    `class` | `FastI2NPMessageImpl` Ignore, but save, the SHA-256 checksum in the full 16-byte header when read in.
    `class` | `GarlicMessage` Defines the wrapped garlic message
    `class` | `OutboundTunnelBuildReplyMessage` Sent from the OBEP to the tunnel creator via an inbound tunnel.
    `class` | `ShortTunnelBuildMessage` Variable size, small records.
    `class` | `ShortTunnelBuildReplyMessage` Internal use only, to convert an inbound STBM to a reply.
    `class` | `TunnelBuildMessage` The basic build message with 8 records.
    `class` | `TunnelBuildMessageBase` Base for TBM, TBRM, VTBM, VTBRM Retrofitted over them.
    `class` | `TunnelBuildReplyMessage` The basic build reply message with 8 records.
    `class` | `TunnelDataMessage` Defines the message sent between routers as part of the tunnel delivery The tunnel ID is changed in-place by TunnelParticipant.send(), so we can't reuse the checksum on output, but we still subclass FastI2NPMessageImpl so we don't verify the checksum on input...
    `class` | `TunnelGatewayMessage` Defines the message sent between one tunnel's endpoint and another's gateway.
    `class` | `UnknownI2NPMessage` This is similar to DataMessage or GarlicMessage but with a variable message type.
    `class` | `VariableTunnelBuildMessage` Variable number of records.
    `class` | `VariableTunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel.