Class PeerDatabase

java.lang.Object
com.biglybt.core.peermanager.peerdb.PeerDatabase

public class PeerDatabase extends Object
  • Field Details

    • STARTUP_MIN_REBUILD_WAIT_TIME

      private static final int STARTUP_MIN_REBUILD_WAIT_TIME
      See Also:
    • STARTUP_MILLIS

      private static final int STARTUP_MILLIS
      See Also:
    • MIN_REBUILD_WAIT_TIME

      private static final int MIN_REBUILD_WAIT_TIME
      See Also:
    • MAX_DISCOVERED_PEERS

      private static final int MAX_DISCOVERED_PEERS
      See Also:
    • BLOOM_ROTATION_PERIOD

      private static final int BLOOM_ROTATION_PERIOD
      See Also:
    • BLOOM_FILTER_SIZE

      private static final int BLOOM_FILTER_SIZE
      See Also:
    • start_time

      private final long start_time
    • peer_connections

      private final HashMap peer_connections
    • discovered_peers

      private final TreeSet<PeerItem> discovered_peers
    • discovered_peers_non_pub

      private final TreeSet<PeerItem> discovered_peers_non_pub
    • map_mon

      private final AEMonitor map_mon
    • cached_peer_popularities

      private PeerItem[] cached_peer_popularities
    • popularity_pos

      private int popularity_pos
    • popularity_pos_non_pub

      private int popularity_pos_non_pub
    • last_rebuild_time

      private long last_rebuild_time
    • last_rotation_time

      private long last_rotation_time
    • self_peer

      private PeerItem self_peer
    • filter_one

      private BloomFilter filter_one
    • filter_two

      private BloomFilter filter_two
    • pex_count_last_time

      private long pex_count_last_time
    • pex_count_last

      private int pex_count_last
    • pex_used_count

      private int pex_used_count
    • total_peers_returned

      private int total_peers_returned
  • Constructor Details

    • PeerDatabase

      protected PeerDatabase()
  • Method Details

    • registerPeerConnection

      public PeerExchangerItem registerPeerConnection(PeerItem base_peer_item, PeerExchangerItem.Helper helper)
      Register a new peer connection with the database.
      Parameters:
      base_peer_item - key
      Returns:
      registered connection
    • deregisterPeerConnection

      protected void deregisterPeerConnection(PeerItem base_peer_key)
    • seedStatusChanged

      public void seedStatusChanged(PeerExchangerItem item)
    • addDiscoveredPeer

      public void addDiscoveredPeer(PeerItem peer)
      Add a potential peer obtained via tracker announce, DHT announce, plugin, etc.
      Parameters:
      peer - to add
    • setSelfPeer

      public void setSelfPeer(PeerItem self)
      Mark the given peer as ourself.
      Parameters:
      self - peer
    • getSelfPeer

      public PeerItem getSelfPeer()
      Get the peer item that represents ourself.
      Returns:
      self peer, or null if unknown
    • getDiscoveredPeers

      public PeerItem[] getDiscoveredPeers()
    • getDiscoveredPeers

      public PeerItem[] getDiscoveredPeers(String address)
    • getDiscoveredPeerCount

      public int getDiscoveredPeerCount()
    • getNextOptimisticConnectPeer

      public PeerItem getNextOptimisticConnectPeer(boolean non_public)
      Get the next potential peer for optimistic connect.
      Returns:
      peer to connect, or null of no optimistic peer available
    • getNextOptimisticConnectPeer

      private PeerItem getNextOptimisticConnectPeer(boolean non_public, int recursion_count)
    • getPeerFromPEX

      private PeerItem getPeerFromPEX(long now, boolean starting_up, boolean non_public)
    • getExchangedPeerCount

      public int getExchangedPeerCount()
    • getExchangedPeersUsed

      public int getExchangedPeersUsed()
    • getExchangedPeersSortedByLeastPopularFirst

      private PeerItem[] getExchangedPeersSortedByLeastPopularFirst()
    • getString

      public String getString()