## Uses of Interface
net.i2p.data.i2np.I2NPMessage

Packages that use I2NPMessage
net.i2p.data.i2np
net.i2p.router
net.i2p.router.message
net.i2p.router.networkdb
net.i2p.router.networkdb.kademlia
net.i2p.router.transport
net.i2p.router.transport.tcp: Implements the transport for communicating with other routers via TCP/IP.
net.i2p.router.transport.udp
net.i2p.router.tunnel
net.i2p.router.tunnel.pool

Uses of I2NPMessage in net.i2p.data.i2np

Classes in net.i2p.data.i2np that implement I2NPMessage
`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
`class` `DateMessage` Contains the sending router's current time, to sync (and verify sync)
`class` `DeliveryStatusMessage` Defines the message sent back in reply to a message when requested, containing the private ack id.
`class` `GarlicMessage` Defines the wrapped garlic message
`class` `I2NPMessageImpl` Defines the base message implementation.
`class` `TunnelBuildMessage`
`class` `TunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel
`class` `TunnelCreateMessage` Defines the message sent to a router to request that it participate in a tunnel using the included configuration settings.
`class` `TunnelCreateStatusMessage` Defines the message a router sends to another router in reply to a TunnelCreateMessage
`class` `TunnelDataMessage` Defines the message sent between routers as part of the tunnel delivery
`class` `TunnelGatewayMessage` Defines the message sent between one tunnel's endpoint and another's gateway.

Methods in net.i2p.data.i2np that return I2NPMessage
`I2NPMessage` `TunnelGatewayMessage.getMessage()`
`static I2NPMessage` `I2NPMessageImpl.fromRawByteArray(I2PAppContext ctx, byte[] buffer, int offset, int len)`
`static I2NPMessage` `I2NPMessageImpl.fromRawByteArray(I2PAppContext ctx, byte[] buffer, int offset, int len, I2NPMessageHandler handler)`
`static I2NPMessage` `I2NPMessageImpl.createMessage(I2PAppContext context, int type)` Yes, this is fairly ugly, but its the only place it ever happens.
`I2NPMessage` `I2NPMessageImpl.Builder.build(I2PAppContext ctx)` instantiate a new I2NPMessage to be populated shortly
`I2NPMessage` `I2NPMessageHandler.readMessage(java.io.InputStream in)` Read an I2NPMessage from the stream and return the fully populated object.
`I2NPMessage` `I2NPMessageHandler.lastRead()` clear the last message read from a byte array with an offset
`I2NPMessage` `I2NPMessageHandler.readMessage(byte[] data)` Read an I2NPMessage from the stream and return the fully populated object.
`I2NPMessage` `GarlicClove.getData()`

Methods in net.i2p.data.i2np with parameters of type I2NPMessage
`void` `TunnelGatewayMessage.setMessage(I2NPMessage msg)`
`void` `I2NPMessageReader.I2NPMessageEventListener.messageReceived(I2NPMessageReader reader, I2NPMessage message, long msToRead, int bytesRead)` Notify the listener that a message has been received from the given reader
`void` `GarlicClove.setData(I2NPMessage msg)`

Uses of I2NPMessage in net.i2p.router

Classes in net.i2p.router that implement I2NPMessage
`(package private) class` `SSUDemo.FooMessage` Just carry some data...

Methods in net.i2p.router that return I2NPMessage
`I2NPMessage` `OutNetMessage.getMessage()` Specifies the message to be sent

Methods in net.i2p.router with parameters of type I2NPMessage
`void` `ReplyJob.setMessage(I2NPMessage message)`
`void` `OutNetMessage.setMessage(I2NPMessage msg)`
`boolean` `MessageSelector.isMatch(I2NPMessage message)` Returns true if the received message matches the selector
`void` `MessageHistory.droppedOtherMessage(I2NPMessage message, Hash from)` We received another message we weren't waiting for and don't know how to handle
`int` `InNetMessagePool.add(I2NPMessage messageBody, RouterIdentity fromRouter, Hash fromRouterHash)` Add a new message to the pool, returning the number of messages in the pool so that the comm system can throttle inbound messages.
`int` `InNetMessagePool.handleReplies(I2NPMessage messageBody)`
`Job` `HandlerJobBuilder.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)` Create a new job to handle the received message.

Uses of I2NPMessage in net.i2p.router.message

Methods in net.i2p.router.message that return I2NPMessage
`I2NPMessage` `PayloadGarlicConfig.getPayload()`

Methods in net.i2p.router.message with parameters of type I2NPMessage
`void` `PayloadGarlicConfig.setPayload(I2NPMessage message)` Specify the I2NP message to be sent - if this is set, no other cloves can be included in this block
`void` `HandleGarlicMessageJob.handleClove(DeliveryInstructions instructions, I2NPMessage data)`
`void` `GarlicMessageReceiver.CloveReceiver.handleClove(DeliveryInstructions instructions, I2NPMessage data)`
`Job` `GarlicMessageHandler.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`

Constructors in net.i2p.router.message with parameters of type I2NPMessage
`SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, int timeoutMs, int priority)`
`SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority)`
`SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, Job onSend, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority)`

Uses of I2NPMessage in net.i2p.router.networkdb

Methods in net.i2p.router.networkdb with parameters of type I2NPMessage
`Job` `DatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`
`Job` `DatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`

Uses of I2NPMessage in net.i2p.router.networkdb.kademlia

Methods in net.i2p.router.networkdb.kademlia with parameters of type I2NPMessage
`boolean` `StoreMessageSelector.isMatch(I2NPMessage message)`
`void` `SearchUpdateReplyFoundJob.setMessage(I2NPMessage message)`
`boolean` `SearchMessageSelector.isMatch(I2NPMessage message)`
`Job` `FloodfillDatabaseStoreMessageHandler.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`
`Job` `FloodfillDatabaseLookupMessageHandler.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`

Uses of I2NPMessage in net.i2p.router.transport

Methods in net.i2p.router.transport with parameters of type I2NPMessage
`void` `TransportManager.messageReceived(I2NPMessage message, RouterIdentity fromRouter, Hash fromRouterHash)`
`void` `TransportImpl.messageReceived(I2NPMessage inMsg, RouterIdentity remoteIdent, Hash remoteIdentHash, long msToReceive, int bytesReceived)` Message received from the I2NPMessageReader - send it to the listener
`void` `TransportEventListener.messageReceived(I2NPMessage message, RouterIdentity fromRouter, Hash fromRouterHash)`
`java.util.List` `OutboundMessageRegistry.getOriginalMessages(I2NPMessage message)` Retrieve all messages that are waiting for the specified message.

Uses of I2NPMessage in net.i2p.router.transport.tcp

Methods in net.i2p.router.transport.tcp with parameters of type I2NPMessage
`void` `MessageHandler.messageReceived(I2NPMessageReader reader, I2NPMessage message, long msToRead, int size)`

Uses of I2NPMessage in net.i2p.router.transport.udp

Methods in net.i2p.router.transport.udp with parameters of type I2NPMessage
`void` `UDPTransport.messageReceived(I2NPMessage inMsg, RouterIdentity remoteIdent, Hash remoteIdentHash, long msToReceive, int bytesReceived)`
`(package private) void` `UDPTransport.send(I2NPMessage msg, PeerState peer)`
`boolean` `OutboundMessageState.initialize(I2NPMessage msg, PeerState peer)`
`boolean` `OutboundMessageState.initialize(OutNetMessage m, I2NPMessage msg)`

Uses of I2NPMessage in net.i2p.router.tunnel

Methods in net.i2p.router.tunnel with parameters of type I2NPMessage
`void` `TunnelGatewayZeroHop.add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Add a message to be sent down the tunnel (immediately forwarding it to the `InboundMessageDistributor` or `OutboundMessageDistributor`, as necessary).
`void` `TunnelGateway.add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Add a message to be sent down the tunnel, either sending it now (perhaps coallesced with other pending messages) or after a brief pause (_flushFrequency).
`void` `TunnelDispatcher.dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, Hash targetPeer)` We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetPeer when it reaches the endpoint.
`void` `TunnelDispatcher.dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, TunnelId targetTunnel, Hash targetPeer)` We are the outbound tunnel gateway (we created it), so wrap up this message with instructions to be forwarded to the targetTunnel on the targetPeer when it reaches the endpoint.
`void` `OutboundMessageDistributor.distribute(I2NPMessage msg, Hash target)`
`void` `OutboundMessageDistributor.distribute(I2NPMessage msg, Hash target, TunnelId tunnel)`
`void` `OutboundMessageDistributor.distribute(I2NPMessage msg, RouterInfo target, TunnelId tunnel)`
`void` `InboundMessageDistributor.distribute(I2NPMessage msg, Hash target)`
`void` `InboundMessageDistributor.distribute(I2NPMessage msg, Hash target, TunnelId tunnel)`
`void` `InboundMessageDistributor.handleClove(DeliveryInstructions instructions, I2NPMessage data)` Handle a clove removed from the garlic message
`void` `FragmentHandler.DefragmentedReceiver.receiveComplete(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Receive a fully formed I2NPMessage out of the tunnel

Constructors in net.i2p.router.tunnel with parameters of type I2NPMessage
`TunnelGateway.Pending(I2NPMessage message, Hash toRouter, TunnelId toTunnel)`
`TunnelGateway.Pending(I2NPMessage message, Hash toRouter, TunnelId toTunnel, long now)`

Uses of I2NPMessage in net.i2p.router.tunnel.pool

Methods in net.i2p.router.tunnel.pool with parameters of type I2NPMessage
`Job` `TunnelMessageHandlerBuilder.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`
`Job` `HandleTunnelCreateMessageJob.Builder.createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash)`

Constructors in net.i2p.router.tunnel.pool with parameters of type I2NPMessage
`SendGarlicMessageJob(RouterContext ctx, I2NPMessage payload, RouterInfo target, MessageSelector selector, ReplyJob onReply, Job onTimeout, SessionKey sentKey, java.util.Set sentTags)`