net.i2p.router.transport.udp

## Class IntroductionManager

- java.lang.Object
- - net.i2p.router.transport.udp.IntroductionManager

-      class IntroductionManager
      extends Object

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `IntroductionManager(RouterContext ctx, UDPTransport transport)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(PeerState peer)`
    `PeerState` | `get(long id)`
    `(package private) int` | `introducerCount()` Not as elaborate as pickInbound() above.
    `int` | `pickInbound(Properties ssuOptions, int howMany)` Grab a bunch of peers who are willing to be introducers for us that are locally known (duh) and have published their own SSU address (duh^2).
    `(package private) void` | `receiveRelayIntro(RemoteHostId bob, UDPPacketReader reader)`
    `(package private) void` | `receiveRelayRequest(RemoteHostId alice, UDPPacketReader reader)`
    `void` | `remove(PeerState peer)`
    `void` | `reset()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### IntroductionManager

          public IntroductionManager(RouterContext ctx,
                             UDPTransport transport)

  - ### Method Detail

    - #### reset

          public void reset()

    - #### add

          public void add(PeerState peer)

    - #### remove

          public void remove(PeerState peer)

    - #### get

          public PeerState get(long id)

    - #### pickInbound

          public int pickInbound(Properties ssuOptions,
                        int howMany)

      Grab a bunch of peers who are willing to be introducers for us that are locally known (duh) and have published their own SSU address (duh^2). The picked peers have their info tacked on to the ssuOptions parameter for use in the SSU RouterAddress. Try to use "good" peers (i.e. reachable, active) Also, ping all idle peers that were introducers in the last 2 hours, to keep the connection up, since the netDb can have quite stale information, and we want to keep our introducers valid.

    - #### introducerCount

          int introducerCount()

      Not as elaborate as pickInbound() above. Just a quick check to see how many volunteers we know, which the Transport uses to see if we need more.
      Returns:
        number of peers that have volunteered to introduce us

    - #### receiveRelayIntro

          void receiveRelayIntro(RemoteHostId bob,
                               UDPPacketReader reader)

    - #### receiveRelayRequest

          void receiveRelayRequest(RemoteHostId alice,
                                 UDPPacketReader reader)