Class PeerDatabase
- java.lang.Object
-
- com.biglybt.core.peermanager.peerdb.PeerDatabase
-
public class PeerDatabase extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private static int
BLOOM_FILTER_SIZE
private static int
BLOOM_ROTATION_PERIOD
private PeerItem[]
cached_peer_popularities
private java.util.TreeSet<PeerItem>
discovered_peers
private java.util.TreeSet<PeerItem>
discovered_peers_non_pub
private BloomFilter
filter_one
private BloomFilter
filter_two
private long
last_rebuild_time
private long
last_rotation_time
private AEMonitor
map_mon
private static int
MAX_DISCOVERED_PEERS
private static int
MIN_REBUILD_WAIT_TIME
private java.util.HashMap
peer_connections
private int
pex_count_last
private long
pex_count_last_time
private int
pex_used_count
private int
popularity_pos
private int
popularity_pos_non_pub
private PeerItem
self_peer
private long
start_time
private static int
STARTUP_MILLIS
private static int
STARTUP_MIN_REBUILD_WAIT_TIME
private int
total_peers_returned
-
Constructor Summary
Constructors Modifier Constructor Description protected
PeerDatabase()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDiscoveredPeer(PeerItem peer)
Add a potential peer obtained via tracker announce, DHT announce, plugin, etc.protected void
deregisterPeerConnection(PeerItem base_peer_key)
int
getDiscoveredPeerCount()
PeerItem[]
getDiscoveredPeers()
PeerItem[]
getDiscoveredPeers(java.lang.String address)
int
getExchangedPeerCount()
private PeerItem[]
getExchangedPeersSortedByLeastPopularFirst()
int
getExchangedPeersUsed()
PeerItem
getNextOptimisticConnectPeer(boolean non_public)
Get the next potential peer for optimistic connect.private PeerItem
getNextOptimisticConnectPeer(boolean non_public, int recursion_count)
private PeerItem
getPeerFromPEX(long now, boolean starting_up, boolean non_public)
PeerItem
getSelfPeer()
Get the peer item that represents ourself.java.lang.String
getString()
PeerExchangerItem
registerPeerConnection(PeerItem base_peer_item, PeerExchangerItem.Helper helper)
Register a new peer connection with the database.void
seedStatusChanged(PeerExchangerItem item)
void
setSelfPeer(PeerItem self)
Mark the given peer as ourself.
-
-
-
Field Detail
-
STARTUP_MIN_REBUILD_WAIT_TIME
private static final int STARTUP_MIN_REBUILD_WAIT_TIME
- See Also:
- Constant Field Values
-
STARTUP_MILLIS
private static final int STARTUP_MILLIS
- See Also:
- Constant Field Values
-
MIN_REBUILD_WAIT_TIME
private static final int MIN_REBUILD_WAIT_TIME
- See Also:
- Constant Field Values
-
MAX_DISCOVERED_PEERS
private static final int MAX_DISCOVERED_PEERS
- See Also:
- Constant Field Values
-
BLOOM_ROTATION_PERIOD
private static final int BLOOM_ROTATION_PERIOD
- See Also:
- Constant Field Values
-
BLOOM_FILTER_SIZE
private static final int BLOOM_FILTER_SIZE
- 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
-
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
-
-
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)
-
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(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()
-
-