## Uses of Class
net.i2p.router.transport.udp.UDPPacket

Packages that use UDPPacket
net.i2p.router.transport.udp: The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.

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

Methods in net.i2p.router.transport.udp that return UDPPacket
`static UDPPacket` `UDPPacket.acquire(I2PAppContext ctx, boolean inbound)`
`UDPPacket` `PacketBuilder.buildACK(PeerState peer, List<ACKBitfield> ackBitfields)` Build the ack packet.
`UDPPacket` `PacketBuilder.buildHolePunch(UDPPacketReader reader)` Sends an empty unauthenticated packet for hole punching
`UDPPacket` `PacketBuilder.buildPacket(OutboundMessageState state, int fragment, PeerState peer, List<Long> ackIdsRemaining, List<ACKBitfield> partialACKsRemaining)` This builds a data packet (PAYLOAD_TYPE_DATA).
`UDPPacket` `PacketBuilder.buildPeerTestFromAlice(InetAddress toIP, int toPort, SessionKey toIntroKey, long nonce, SessionKey aliceIntroKey)` Build a packet as if we are Alice and we either want Bob to begin a peer test or Charlie to finish a peer test.
`UDPPacket` `PacketBuilder.buildPeerTestFromAlice(InetAddress toIP, int toPort, SessionKey toCipherKey, SessionKey toMACKey, long nonce, SessionKey aliceIntroKey)`
`UDPPacket` `PacketBuilder.buildPeerTestToAlice(InetAddress aliceIP, int alicePort, SessionKey aliceIntroKey, SessionKey charlieIntroKey, long nonce)` Build a packet as if we are either Bob or Charlie and we are helping test Alice.
`UDPPacket` `PacketBuilder.buildPeerTestToBob(InetAddress bobIP, int bobPort, InetAddress aliceIP, int alicePort, SessionKey aliceIntroKey, long nonce, SessionKey bobCipherKey, SessionKey bobMACKey)` Build a packet as if we are Charlie sending Bob a packet verifying that we will help test Alice.
`UDPPacket` `PacketBuilder.buildPeerTestToCharlie(InetAddress aliceIP, int alicePort, SessionKey aliceIntroKey, long nonce, InetAddress charlieIP, int charliePort, SessionKey charlieCipherKey, SessionKey charlieMACKey)` Build a packet as if we are Bob sending Charlie a packet to help test Alice.
`UDPPacket` `PacketBuilder.buildPing(PeerState peer)` We use this for keepalive purposes.
`(package private) UDPPacket` `PacketBuilder.buildRelayIntro(RemoteHostId alice, PeerState charlie, UDPPacketReader.RelayRequestReader request)`
`UDPPacket` `PacketBuilder.buildRelayRequest(InetAddress introHost, int introPort, byte[] introKey, long introTag, SessionKey ourIntroKey, long introNonce, boolean encrypt)`
`UDPPacket[]` `PacketBuilder.buildRelayRequest(UDPTransport transport, OutboundEstablishState state, SessionKey ourIntroKey)` build intro packets for each of the published introducers
`(package private) UDPPacket` `PacketBuilder.buildRelayResponse(RemoteHostId alice, PeerState charlie, long nonce, SessionKey aliceIntroKey)`
`UDPPacket` `PacketBuilder.buildSessionConfirmedPacket(OutboundEstablishState state, int fragmentNum, int numFragments, byte[] identity)` Build a new SessionConfirmed packet for the given peer
`UDPPacket[]` `PacketBuilder.buildSessionConfirmedPackets(OutboundEstablishState state, RouterIdentity ourIdentity)` Build a new series of SessionConfirmed packets for the given peer, encrypting it as necessary.
`UDPPacket` `PacketBuilder.buildSessionCreatedPacket(InboundEstablishState state, int externalPort, SessionKey ourIntroKey)` Build a new SessionCreated packet for the given peer, encrypting it as necessary.
`UDPPacket` `PacketBuilder.buildSessionDestroyPacket(PeerState peer)` Build a destroy packet, which contains a header but no body.
`UDPPacket` `PacketBuilder.buildSessionRequestPacket(OutboundEstablishState state)` Build a new SessionRequest packet for the given peer, encrypting it as necessary.
`UDPPacket[]` `OutboundMessageFragments.getNextVolley()` Fetch all the packets for a message volley, blocking until there is a message which can be fully transmitted (or the transport is shut down).
`UDPPacket` `UDPEndpoint.receive()` Blocking call to receive the next inbound UDP packet from any peer.
`UDPPacket` `UDPReceiver.receiveNext()` Blocking call to retrieve the next inbound packet, or null if we have shut down.

Methods in net.i2p.router.transport.udp with parameters of type UDPPacket
`int` `UDPSender.add(UDPPacket packet)` Put it on the queue
`int` `UDPSender.add(UDPPacket packet, int blockTime)` Deprecated. use add(packet)
`void` `UDPPacketReader.initialize(UDPPacket packet)`
`(package private) int` `UDPTransport.send(UDPPacket packet)`
`int` `UDPEndpoint.send(UDPPacket packet)` Add the packet to the outobund queue to be sent ASAP (as allowed by the bandwidth limiter)