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

- Packages that use UDPTransport
  Package | Description
  --- | ---
  net.i2p.router.transport.udp | The UDP transport (also known as 'SSU' or Secure Semi-reliable UDP transport) for I2P, allowing I2P messages to be passed over UDP connections.

- - ### Uses of UDPTransport in net.i2p.router.transport.udp

    Fields in net.i2p.router.transport.udp declared as UDPTransport
    Modifier and Type | Field and Description
    --- | ---
    `protected UDPTransport` | PeerState.`_transport`

    Methods in net.i2p.router.transport.udp that return UDPTransport
    Modifier and Type | Method and Description
    --- | ---
    `(package private) UDPTransport` | PeerState.`getTransport()` Convenience for OutboundMessageState so it can fail itself

    Constructors in net.i2p.router.transport.udp with parameters of type UDPTransport
    Constructor and Description
    `EstablishmentManager(RouterContext ctx, UDPTransport transport)`
    `InboundEstablishState2(RouterContext ctx, UDPTransport transport, UDPPacket packet)` Start a new handshake with the given incoming packet, which must be a Session Request or Token Request.
    `InboundMessageFragments(RouterContext ctx, OutboundMessageFragments outbound, UDPTransport transport)`
    `IntroductionManager(RouterContext ctx, UDPTransport transport)`
    `MessageReceiver(RouterContext ctx, UDPTransport transport)`
    `OutboundEstablishState2(RouterContext ctx, UDPTransport transport, RemoteHostId claimedAddress, RemoteHostId remoteHostId, RouterIdentity remotePeer, boolean needIntroduction, SessionKey introKey, RouterAddress ra, UDPAddress addr)` Prepare to start a new handshake with the given peer.
    `OutboundMessageFragments(RouterContext ctx, UDPTransport transport)`
    `PacketBuilder2(RouterContext ctx, UDPTransport transport)` No state, all methods are thread-safe.
    `PacketHandler(RouterContext ctx, UDPTransport transport, EstablishmentManager establisher, InboundMessageFragments inbound, PeerTestManager testManager, IntroductionManager introManager)`
    `PeerState(RouterContext ctx, UDPTransport transport, InetSocketAddress addr, Hash remotePeer, boolean isInbound, int rtt)` For SSU2
    `PeerState2(RouterContext ctx, UDPTransport transport, InetSocketAddress remoteAddress, Hash remotePeer, boolean isInbound, int rtt, CipherState sendCha, CipherState rcvCha, long sendID, long rcvID, byte[] sendHdrKey1, byte[] sendHdrKey2, byte[] rcvHdrKey2)` If inbound, caller MUST immediately call setWeRelayToThemAs() (if nonzero) and sendAck0().
    `PeerStateDestroyed(RouterContext ctx, UDPTransport transport, PeerState2 peer)` This must be called after the first termination or termination ack was sent from PeerState2, so the next packet number is correct.
    `PeerStateDestroyed(RouterContext ctx, UDPTransport transport, RemoteHostId id, long sendID, long rcvID, CipherState sendCha, CipherState rcvCha, byte[] sendKey1, byte[] sendKey2, byte[] rcvKey2, int reason)` Direct from IES2, there was never a PS2.
    `PeerTestEvent(RouterContext ctx, UDPTransport udp, PeerTestManager ptmgr)`
    `PeerTestManager(RouterContext context, UDPTransport transport)` Have seen peer tests (as Alice) get stuck (_currentTest != null) so I've thrown some synchronizization on the methods; don't know the root cause or whether this fixes it
    `UDPEndpoint(RouterContext ctx, UDPTransport transport, int listenPort, InetAddress bindAddress)`
    `UDPReceiver(RouterContext ctx, UDPTransport transport, DatagramSocket socket, String name, SocketListener lsnr)`