## Package net.i2p.router.transport.udp

Interface Summary
ACKBitfield: Generic means of SACK/NACK transmission for partially or fully received messages
MessageQueue: Base queue for messages not yet packetized
OutboundMessageFragments.ActiveThrottle
TimedWeightedPriorityMessageQueue.FailedListener

Class Summary
ACKSender: Blocking thread that is given peers by the inboundFragment pool, sending out any outstanding ACKs.
EstablishmentManager: Coordinate the establishment of new sessions - both inbound and outbound.
InboundEstablishState: Data for a new connection being established, where the remote peer has initiated the connection with us.
InboundMessageFragments: Organize the received data message fragments, feeding completed messages to the `MessageReceiver` and telling the `ACKSender` of new peers to ACK.
InboundMessageState: Hold the raw data fragments of an inbound message
IntroductionManager
MessageReceiver: Pull fully completed fragments off the `InboundMessageFragments` queue, parse 'em into I2NPMessages, and stick them on the `InNetMessagePool` by way of the `UDPTransport`.
OutboundEstablishState: Data for a new connection being established, where we initiated the connection with a remote peer.
OutboundMessageFragments: Coordinate the outbound fragments and select the next one to be built.
OutboundMessageState: Maintain the outbound fragmentation for resending
OutboundRefiller: Blocking thread to grab new messages off the outbound queue and plopping them into our active pool.
PacketBuilder: Big ol' class to do all our packet formatting.
PacketHandler: Pull inbound packets from the inbound receiver's queue, figure out what peer session they belong to (if any), authenticate and decrypt them with the appropriate keys, and push them to the appropriate handler.
PacketPusher: Blocking thread to grab new packets off the outbound fragment pool and toss 'em onto the outbound packet queue
PeerState: Contain all of the state about a UDP connection to a peer.
PeerTestManager
PeerTestState
RemoteHostId: Unique ID for a peer - its IP + port, all bundled into a tidy obj.
TimedWeightedPriorityMessageQueue: Weighted priority queue implementation for the outbound messages, coupled with code to fail messages that expire.
UDPAddress: basic helper to parse out peer info from a udp address
UDPEndpoint: Coordinate the low level datagram socket, managing the UDPSender and UDPReceiver
UDPEndpointTest
UDPFlooder
UDPPacket: Basic delivery unit containing the datagram.
UDPPacketReader: To read a packet, initialize this reader with the data and fetch out the appropriate fields.
UDPReceiver: Lowest level component to pull raw UDP datagrams off the wire as fast as possible, controlled by both the bandwidth limiter and the router's throttle.
UDPSender: Lowest level packet sender, pushes anything on its queue ASAP.
UDPTransport