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

- Packages that use PeerState
  Package | Description
  --- | ---
  net.i2p.router.transport.udp | The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.

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

    Methods in net.i2p.router.transport.udp that return PeerState
    Modifier and Type | Method and Description
    --- | ---
    `PeerState` | IntroductionManager.`get(long id)`
    `PeerState` | OutboundMessageState.`getPeer()`
    `PeerState` | UDPTransport.`getPeerState(Hash remotePeer)` get the state for the peer with the given ident, or null if no state exists
    `PeerState` | UDPTransport.`getPeerState(long relayTag)` get the state for the peer being introduced, or null if we aren't offering to introduce anyone with that tag.
    `(package private) PeerState` | UDPTransport.`getPeerState(RemoteHostId hostInfo)` get the state for the peer at the given remote host/port, or null if no state exists
    `(package private) PeerState` | UDPTransport.`pickTestPeer(RemoteHostId dontInclude)`
    `(package private) PeerState` | EstablishmentManager.`receiveData(OutboundEstablishState state)` A data packet arrived on an outbound connection being established, which means its complete (yay!).

    Methods in net.i2p.router.transport.udp with parameters of type PeerState
    Modifier and Type | Method and Description
    --- | ---
    `void` | ACKSender.`ackPeer(PeerState peer)` Add to the queue.
    `void` | IntroductionManager.`add(PeerState peer)`
    `void` | UDPFlooder.`addPeer(PeerState peer)`
    `(package private) boolean` | UDPTransport.`addRemotePeerState(PeerState peer)` add the peer info, returning true if it went in properly, false if it was rejected (causes include peer ident already connected, or no remote host info known
    `UDPPacket` | PacketBuilder.`buildACK(PeerState peer, List<ACKBitfield> ackBitfields)` Build the ack packet.
    `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.`buildPing(PeerState peer)` We use this for keepalive purposes.
    `(package private) UDPPacket` | PacketBuilder.`buildRelayIntro(RemoteHostId alice, PeerState charlie, UDPPacketReader.RelayRequestReader request)`
    `(package private) UDPPacket` | PacketBuilder.`buildRelayResponse(RemoteHostId alice, PeerState charlie, long nonce, SessionKey aliceIntroKey)`
    `UDPPacket` | PacketBuilder.`buildSessionDestroyPacket(PeerState peer)` Build a destroy packet, which contains a header but no body.
    `(package private) void` | OutboundMessageFragments.`dropPeer(PeerState peer)`
    `(package private) void` | UDPTransport.`dropPeer(PeerState peer, boolean shouldShitlist, String why)`
    `boolean` | OutboundMessageState.`initialize(I2NPMessage msg, PeerState peer)`
    `void` | PeerState.`loadFrom(PeerState oldPeer)` Transfer the basic activity/state from the old peer to the current peer
    `void` | InboundMessageFragments.`receiveData(PeerState from, UDPPacketReader.DataReader data)` Pull the fragments and ACKs out of the authenticated data packet
    `(package private) void` | EstablishmentManager.`receiveSessionDestroy(RemoteHostId from, PeerState state)` Got a SessionDestroy on an established conn
    `void` | IntroductionManager.`remove(PeerState peer)`
    `void` | UDPFlooder.`removePeer(PeerState peer)`
    `(package private) void` | UDPTransport.`send(I2NPMessage msg, PeerState peer)`
    `void` | OutboundMessageState.`setPeer(PeerState peer)`