## 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' or Secure Semi-reliable UDP transport) for I2P, allowing I2P messages to be passed over UDP connections.
  net.i2p.router.web.helpers | Helpers and handlers for the router console user interface, with these classes supporting the webapp in routerconsole.war.

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

    Subclasses of PeerState in net.i2p.router.transport.udp
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PeerState2` Contain all of the state about a UDP connection to a peer.

    Methods in net.i2p.router.transport.udp that return PeerState
    Modifier and Type | Method and Description
    --- | ---
    `PeerState` | PeerTestState.`getBob()`
    `PeerState` | OutboundMessageState.`getPeer()`
    `(package private) PeerState` | UDPTransport.`getPeerState(Hash remotePeer)` get the state for the peer with the given ident, or null if no state exists
    `(package private) PeerState` | UDPTransport.`getPeerState(RemoteHostId hostInfo)` Retrieves the current connection state for a peer identified by their remote host and port.
    `(package private) PeerState` | UDPTransport.`pickTestPeer(PeerTestState.Role peerRole, int version, boolean isIPv6, RemoteHostId dontInclude)` Pick a Bob (if we are Alice) or a Charlie (if we are Bob).
    `(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 that return types with arguments of type PeerState
    Modifier and Type | Method and Description
    --- | ---
    `Collection<PeerState>` | UDPTransport.`getPeers()` For /peers UI only.
    `(package private) List<PeerState>` | UDPTransport.`getPeerStatesByIP(RemoteHostId hostInfo)` Get the states for all peers at the given remote host, ignoring port.

    Methods in net.i2p.router.transport.udp with parameters of type PeerState
    Modifier and Type | Method and Description
    --- | ---
    `void` | OutboundMessageFragments.`add(List<OutboundMessageState> states, PeerState peer)` Short circuit the OutNetMessage, letting us send multiple messages reliably and efficiently.
    `void` | OutboundMessageFragments.`add(OutboundMessageState state, PeerState peer)` Short circuit the OutNetMessage, letting us send the establish complete message reliably.
    `void` | IntroductionManager.`add(PeerState peer)`
    `void` | OutboundMessageFragments.`add(PeerState peer, int size)` Add the peer to the list of peers wanting to transmit something.
    `(package private) boolean` | UDPTransport.`addRemotePeerState(PeerState peer)` Adds a new peer state or replaces an existing one if the peer identity or address changes.
    `(package private) void` | UDPTransport.`changePeerPort(PeerState peer, int newPort)` Remove and add to peersByRemoteHost map
    `(package private) void` | OutboundMessageFragments.`dropPeer(PeerState peer)`
    `(package private) void` | UDPTransport.`dropPeer(PeerState peer, boolean shouldBanlist, String why)` This does not send a session destroy, caller must do that if desired.
    `static int` | PacketBuilder2.`getMaxAdditionalFragmentSize(PeerState peer, int numFragments, int curDataSize)` Will a packet to 'peer' that already has 'numFragments' fragments totalling 'curDataSize' bytes fit another fragment? This includes the 3 byte block overhead, but NOT the 5 byte followon fragment overhead.
    `static int` | PacketBuilder2.`getMaxDataSize(PeerState peer)` Calculates the maximum payload size that can be sent to this peer in a single data packet.
    `(package private) void` | PeerState.`loadFrom(PeerState oldPeer)` Transfer the basic activity/state from the old peer to the current peer SSU 1 or 2.
    `(package private) void` | EstablishmentManager.`receiveSessionDestroy(RemoteHostId from, PeerState state)` Got a SessionDestroy on an established conn SSU 2
    `void` | IntroductionManager.`remove(PeerState peer)`
    `boolean` | PeerTestManager.`runTest(PeerState bob)` The next few methods are for when we are Alice
    `(package private) void` | UDPTransport.`send(I2NPMessage msg, List<OutNetMessage> msgs, PeerState peer)` "injected" message from the EstablishmentManager, plus pending messages to send, so the messages may be bundled efficiently.
    `(package private) void` | UDPTransport.`send(I2NPMessage msg, PeerState peer)` "injected" message from the EstablishmentManager.
    `(package private) void` | UDPTransport.`send(List<I2NPMessage> msgs, PeerState peer)` "injected" messages from the EstablishmentManager.
    `(package private) void` | UDPTransport.`sendDestroy(PeerState peer, int reasonCode)` Send a session destroy message, bypassing OMF and PacketPusher.

    Constructors in net.i2p.router.transport.udp with parameters of type PeerState
    Constructor and Description
    `OutboundMessageState(I2PAppContext context, I2NPMessage msg, PeerState peer)` "injected" message from the establisher.
    `OutboundMessageState(I2PAppContext context, OutNetMessage m, PeerState peer)` Normal constructor.
    `PeerTestState(PeerTestState.Role role, PeerState bob, boolean isIPv6, long nonce, long now)`
    `SimpleBandwidthEstimator(I2PAppContext ctx, PeerState state)` Creates a new bandwidth estimator for the given peer.

  - ### Uses of PeerState in net.i2p.router.web.helpers

    Methods in net.i2p.router.web.helpers that return types with arguments of type PeerState
    Modifier and Type | Method and Description
    --- | ---
    `(package private) static Comparator<PeerState>` | UDPSorters.`getComparator(int sortFlags)`

    Methods in net.i2p.router.web.helpers with parameters of type PeerState
    Modifier and Type | Method and Description
    --- | ---
    `int` | UDPSorters.IdleInComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.IdleOutComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.RateInComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.RateOutComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.UptimeComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.SkewComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.CwndComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.SsthreshComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.RTTComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.RTOComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.MTUComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.SendCountComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.RecvCountComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.ResendComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.DupComparator.`compare(PeerState l, PeerState r)`
    `int` | UDPSorters.PeerComparator.`compare(PeerState l, PeerState r)`