Class PeerDatabase


  • public class PeerDatabase
    extends java.lang.Object
    • Field Detail

      • STARTUP_MIN_REBUILD_WAIT_TIME

        private static final int STARTUP_MIN_REBUILD_WAIT_TIME
        See Also:
        Constant Field Values
      • start_time

        private final long start_time
      • peer_connections

        private final java.util.HashMap peer_connections
      • discovered_peers

        private final java.util.TreeSet<PeerItem> discovered_peers
      • discovered_peers_non_pub

        private final java.util.TreeSet<PeerItem> discovered_peers_non_pub
      • 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
      • 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 Detail

      • PeerDatabase

        protected PeerDatabase()
    • Method Detail

      • 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)
      • 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​(java.lang.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 java.lang.String getString()