Class BuddyPluginTracker
- java.lang.Object
-
- com.biglybt.plugin.net.buddy.tracker.BuddyPluginTracker
-
- All Implemented Interfaces:
DownloadManagerListener
,DownloadPeerListener
,BuddyPluginAZ2TrackerListener
,BuddyPluginListener
public class BuddyPluginTracker extends java.lang.Object implements BuddyPluginListener, DownloadManagerListener, BuddyPluginAZ2TrackerListener, DownloadPeerListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
BuddyPluginTracker.buddyDownloadData
class
BuddyPluginTracker.BuddyTrackingData
private static class
BuddyPluginTracker.downloadData
private static class
BuddyPluginTracker.PartialBuddyData
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<Download>
actively_tracking
private static int
BUDDY_MAYBE
static int
BUDDY_NETWORK_IDLE
static int
BUDDY_NETWORK_INBOUND
static int
BUDDY_NETWORK_INOUTBOUND
static int
BUDDY_NETWORK_OUTBOUND
private static int
BUDDY_NO
private CopyOnWriteSet<Peer>
buddy_peers
private Average
buddy_receive_speed
private Average
buddy_send_speed
private TimerEventPeriodic
buddy_stats_timer
private static int
BUDDY_YES
private int
download_set_id
private java.util.Map<HashWrapper,Download>
full_id_map
private static int
FULL_ID_SIZE
private java.util.Set<Download>
last_processed_download_set
private int
last_processed_download_set_id
private CopyOnWriteList<BuddyPluginTrackerListener>
listeners
private int
network_status
private boolean
old_plugin_enabled
private boolean
old_seeding_only
private boolean
old_tracker_enabled
private java.util.Set<BuddyPluginBuddy>
online_buddies
private java.util.Map<java.lang.String,java.util.List<BuddyPluginBuddy>>
online_buddy_ips
private java.util.Map<java.lang.String,BuddyPluginTracker.PartialBuddyData>
partial_buddies
private static int
PARTIAL_PEER_CHECK_PERIOD
private static int
PARTIAL_PEER_CHECK_TICKS
private static java.lang.Object
PB_PEER_KEY
private static int
PEER_CHECK_INTERVAL
private static int
PEER_CHECK_PERIOD
private static int
PEER_CHECK_TICKS
private static java.lang.Object
PEER_DOWNLOAD_KEY
private static int
PEER_RECHECK_PERIOD
private static int
PEER_RECHECK_TICKS
private static java.lang.Object
PEER_STATS_KEY
private static java.lang.Object
PEER_UPLOAD_PRIORITY_KEY
private BuddyPlugin
plugin
private boolean
plugin_enabled
private static int
REPLY_TRACKER_ADD
private static int
REPLY_TRACKER_CHANGE
private static int
REPLY_TRACKER_STATUS
private static int
REPLY_TRACKER_SUMMARY
private static int
REQUEST_TRACKER_ADD
private static int
REQUEST_TRACKER_CHANGE
private static int
REQUEST_TRACKER_STATUS
private static int
REQUEST_TRACKER_SUMMARY
private static int
RETRY_SEND_MAX
private static int
RETRY_SEND_MIN
private boolean
seeding_only
private java.util.Map<HashWrapper,java.util.List<Download>>
short_id_map
private static int
SHORT_ID_SIZE
private TorrentAttribute
ta_networks
private static int
TRACK_CHECK_PERIOD
private static int
TRACK_CHECK_TICKS
private java.util.Set<Download>
tracked_downloads
private boolean
tracker_enabled
private boolean
tracker_so_enabled
-
Constructor Summary
Constructors Constructor Description BuddyPluginTracker(BuddyPlugin _plugin, BooleanParameter tracker_enable, BooleanParameter tracker_so_enable)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected BuddyPluginTracker.BuddyTrackingData
addBuddy(BuddyPluginBuddy buddy)
void
addListener(BuddyPluginTrackerListener l)
void
addPartialBuddy(Download download, Peer peer, boolean manual)
void
buddyAdded(BuddyPluginBuddy buddy)
protected BuddyPluginTracker.BuddyTrackingData
buddyAlive(BuddyPluginBuddy buddy)
void
buddyChanged(BuddyPluginBuddy buddy)
protected void
buddyDead(BuddyPluginBuddy buddy)
void
buddyRemoved(BuddyPluginBuddy buddy)
protected void
checkEnabledState()
private void
checkPartialPeers()
private void
checkPeers()
protected void
checkTracking()
protected void
doTracking()
void
downloadAdded(Download download)
void
downloadRemoved(Download download)
void
enabledStateChanged(boolean classic_enabled, boolean beta_enabled)
protected void
fireEnabledChanged(boolean enabled)
protected void
fireStateChange(int state)
protected BuddyPluginTracker.BuddyTrackingData
getBuddyData(BuddyPluginBuddy buddy)
java.lang.String
getDownloadsSummary(PartialBuddy pb)
long
getNetworkReceiveBytesPerSecond()
long
getNetworkSendBytesPerSecond()
int
getNetworkStatus()
java.util.List<PartialBuddy>
getPartialBuddies()
BuddyPluginTracker.BuddyTrackingData
getTrackingData(BuddyPluginBuddy buddy)
java.lang.String
getTrackingStatus(BuddyPluginBuddy buddy)
void
initialise()
void
initialised(boolean available)
protected int
isBuddy(Peer peer)
boolean
isEnabled()
boolean
isFullBuddy(Peer peer)
boolean
isPartialBuddy(Download download, Peer peer)
protected void
log(java.lang.String str)
protected void
log(java.lang.String str, boolean verbose)
protected void
log(java.lang.String str, java.lang.Throwable e)
protected void
markBuddyPeer(Download download, Peer peer, boolean is_partial)
void
messageFailed(BuddyPluginBuddy buddy, java.lang.Throwable cause)
void
messageLogged(java.lang.String str, boolean error)
java.util.Map<java.lang.String,java.lang.Object>
messageReceived(BuddyPluginBuddy buddy, java.util.Map<java.lang.String,java.lang.Object> message)
protected boolean
okToTrack(Download d)
void
peerManagerAdded(Download download, PeerManager peer_manager)
void
peerManagerRemoved(Download download, PeerManager peer_manager)
protected void
recheckPeers()
protected void
removeBuddy(BuddyPluginBuddy buddy)
void
removeListener(BuddyPluginTrackerListener l)
void
removePartialBuddy(Download download, Peer peer, boolean manual)
void
removePartialBuddy(PartialBuddy pb)
protected void
sendMessage(BuddyPluginBuddy buddy, int type, java.util.Map<java.lang.String,java.lang.Object> body)
void
tick(int tick_count)
protected void
trackDownload(Download download)
protected void
trackPeer(Download download, Peer peer)
protected void
trackPeers(Download download)
protected void
trackPeers(Download download, PeerManager pm)
protected void
unmarkBuddyPeer(Peer peer)
protected void
untrackDownload(Download download)
protected void
untrackPeers(Download download)
void
updated()
protected void
updateNetworkStatus()
protected void
updateSeedingMode()
-
-
-
Field Detail
-
PEER_DOWNLOAD_KEY
private static final java.lang.Object PEER_DOWNLOAD_KEY
-
PEER_UPLOAD_PRIORITY_KEY
private static final java.lang.Object PEER_UPLOAD_PRIORITY_KEY
-
PEER_STATS_KEY
private static final java.lang.Object PEER_STATS_KEY
-
PB_PEER_KEY
private static final java.lang.Object PB_PEER_KEY
-
BUDDY_NETWORK_IDLE
public static final int BUDDY_NETWORK_IDLE
- See Also:
- Constant Field Values
-
BUDDY_NETWORK_OUTBOUND
public static final int BUDDY_NETWORK_OUTBOUND
- See Also:
- Constant Field Values
-
BUDDY_NETWORK_INBOUND
public static final int BUDDY_NETWORK_INBOUND
- See Also:
- Constant Field Values
-
BUDDY_NETWORK_INOUTBOUND
public static final int BUDDY_NETWORK_INOUTBOUND
- See Also:
- Constant Field Values
-
TRACK_CHECK_PERIOD
private static final int TRACK_CHECK_PERIOD
- See Also:
- Constant Field Values
-
TRACK_CHECK_TICKS
private static final int TRACK_CHECK_TICKS
- See Also:
- Constant Field Values
-
PARTIAL_PEER_CHECK_PERIOD
private static final int PARTIAL_PEER_CHECK_PERIOD
- See Also:
- Constant Field Values
-
PARTIAL_PEER_CHECK_TICKS
private static final int PARTIAL_PEER_CHECK_TICKS
- See Also:
- Constant Field Values
-
PEER_CHECK_PERIOD
private static final int PEER_CHECK_PERIOD
- See Also:
- Constant Field Values
-
PEER_CHECK_TICKS
private static final int PEER_CHECK_TICKS
- See Also:
- Constant Field Values
-
PEER_RECHECK_PERIOD
private static final int PEER_RECHECK_PERIOD
- See Also:
- Constant Field Values
-
PEER_RECHECK_TICKS
private static final int PEER_RECHECK_TICKS
- See Also:
- Constant Field Values
-
PEER_CHECK_INTERVAL
private static final int PEER_CHECK_INTERVAL
- See Also:
- Constant Field Values
-
SHORT_ID_SIZE
private static final int SHORT_ID_SIZE
- See Also:
- Constant Field Values
-
FULL_ID_SIZE
private static final int FULL_ID_SIZE
- See Also:
- Constant Field Values
-
REQUEST_TRACKER_SUMMARY
private static final int REQUEST_TRACKER_SUMMARY
- See Also:
- Constant Field Values
-
REPLY_TRACKER_SUMMARY
private static final int REPLY_TRACKER_SUMMARY
- See Also:
- Constant Field Values
-
REQUEST_TRACKER_STATUS
private static final int REQUEST_TRACKER_STATUS
- See Also:
- Constant Field Values
-
REPLY_TRACKER_STATUS
private static final int REPLY_TRACKER_STATUS
- See Also:
- Constant Field Values
-
REQUEST_TRACKER_CHANGE
private static final int REQUEST_TRACKER_CHANGE
- See Also:
- Constant Field Values
-
REPLY_TRACKER_CHANGE
private static final int REPLY_TRACKER_CHANGE
- See Also:
- Constant Field Values
-
REQUEST_TRACKER_ADD
private static final int REQUEST_TRACKER_ADD
- See Also:
- Constant Field Values
-
REPLY_TRACKER_ADD
private static final int REPLY_TRACKER_ADD
- See Also:
- Constant Field Values
-
RETRY_SEND_MIN
private static final int RETRY_SEND_MIN
- See Also:
- Constant Field Values
-
RETRY_SEND_MAX
private static final int RETRY_SEND_MAX
- See Also:
- Constant Field Values
-
BUDDY_NO
private static final int BUDDY_NO
- See Also:
- Constant Field Values
-
BUDDY_MAYBE
private static final int BUDDY_MAYBE
- See Also:
- Constant Field Values
-
BUDDY_YES
private static final int BUDDY_YES
- See Also:
- Constant Field Values
-
plugin
private final BuddyPlugin plugin
-
ta_networks
private final TorrentAttribute ta_networks
-
plugin_enabled
private boolean plugin_enabled
-
tracker_enabled
private boolean tracker_enabled
-
seeding_only
private boolean seeding_only
-
tracker_so_enabled
private boolean tracker_so_enabled
-
old_plugin_enabled
private boolean old_plugin_enabled
-
old_tracker_enabled
private boolean old_tracker_enabled
-
old_seeding_only
private boolean old_seeding_only
-
network_status
private int network_status
-
online_buddies
private java.util.Set<BuddyPluginBuddy> online_buddies
-
online_buddy_ips
private java.util.Map<java.lang.String,java.util.List<BuddyPluginBuddy>> online_buddy_ips
-
partial_buddies
private java.util.Map<java.lang.String,BuddyPluginTracker.PartialBuddyData> partial_buddies
-
tracked_downloads
private java.util.Set<Download> tracked_downloads
-
download_set_id
private int download_set_id
-
last_processed_download_set
private java.util.Set<Download> last_processed_download_set
-
last_processed_download_set_id
private int last_processed_download_set_id
-
short_id_map
private java.util.Map<HashWrapper,java.util.List<Download>> short_id_map
-
full_id_map
private java.util.Map<HashWrapper,Download> full_id_map
-
actively_tracking
private java.util.Set<Download> actively_tracking
-
buddy_peers
private CopyOnWriteSet<Peer> buddy_peers
-
listeners
private CopyOnWriteList<BuddyPluginTrackerListener> listeners
-
buddy_stats_timer
private TimerEventPeriodic buddy_stats_timer
-
buddy_receive_speed
private Average buddy_receive_speed
-
buddy_send_speed
private Average buddy_send_speed
-
-
Constructor Detail
-
BuddyPluginTracker
public BuddyPluginTracker(BuddyPlugin _plugin, BooleanParameter tracker_enable, BooleanParameter tracker_so_enable)
-
-
Method Detail
-
initialise
public void initialise()
-
tick
public void tick(int tick_count)
-
getNetworkStatus
public int getNetworkStatus()
-
getNetworkReceiveBytesPerSecond
public long getNetworkReceiveBytesPerSecond()
-
getNetworkSendBytesPerSecond
public long getNetworkSendBytesPerSecond()
-
doTracking
protected void doTracking()
-
checkTracking
protected void checkTracking()
-
initialised
public void initialised(boolean available)
- Specified by:
initialised
in interfaceBuddyPluginListener
-
buddyAdded
public void buddyAdded(BuddyPluginBuddy buddy)
- Specified by:
buddyAdded
in interfaceBuddyPluginListener
-
buddyRemoved
public void buddyRemoved(BuddyPluginBuddy buddy)
- Specified by:
buddyRemoved
in interfaceBuddyPluginListener
-
buddyChanged
public void buddyChanged(BuddyPluginBuddy buddy)
- Specified by:
buddyChanged
in interfaceBuddyPluginListener
-
getBuddyData
protected BuddyPluginTracker.BuddyTrackingData getBuddyData(BuddyPluginBuddy buddy)
-
addBuddy
protected BuddyPluginTracker.BuddyTrackingData addBuddy(BuddyPluginBuddy buddy)
-
removeBuddy
protected void removeBuddy(BuddyPluginBuddy buddy)
-
isBuddy
protected int isBuddy(Peer peer)
-
getPartialBuddies
public java.util.List<PartialBuddy> getPartialBuddies()
-
isFullBuddy
public boolean isFullBuddy(Peer peer)
-
getDownloadsSummary
public java.lang.String getDownloadsSummary(PartialBuddy pb)
-
removePartialBuddy
public void removePartialBuddy(PartialBuddy pb)
-
messageLogged
public void messageLogged(java.lang.String str, boolean error)
- Specified by:
messageLogged
in interfaceBuddyPluginListener
-
enabledStateChanged
public void enabledStateChanged(boolean classic_enabled, boolean beta_enabled)
- Specified by:
enabledStateChanged
in interfaceBuddyPluginListener
-
updated
public void updated()
- Specified by:
updated
in interfaceBuddyPluginListener
-
isEnabled
public boolean isEnabled()
-
checkEnabledState
protected void checkEnabledState()
-
updateSeedingMode
protected void updateSeedingMode()
-
downloadAdded
public void downloadAdded(Download download)
- Specified by:
downloadAdded
in interfaceDownloadManagerListener
-
downloadRemoved
public void downloadRemoved(Download download)
- Specified by:
downloadRemoved
in interfaceDownloadManagerListener
-
trackDownload
protected void trackDownload(Download download)
-
untrackDownload
protected void untrackDownload(Download download)
-
trackPeers
protected void trackPeers(Download download)
-
peerManagerAdded
public void peerManagerAdded(Download download, PeerManager peer_manager)
- Specified by:
peerManagerAdded
in interfaceDownloadPeerListener
-
peerManagerRemoved
public void peerManagerRemoved(Download download, PeerManager peer_manager)
- Specified by:
peerManagerRemoved
in interfaceDownloadPeerListener
-
trackPeers
protected void trackPeers(Download download, PeerManager pm)
-
untrackPeers
protected void untrackPeers(Download download)
-
unmarkBuddyPeer
protected void unmarkBuddyPeer(Peer peer)
-
checkPartialPeers
private void checkPartialPeers()
-
checkPeers
private void checkPeers()
-
recheckPeers
protected void recheckPeers()
-
updateNetworkStatus
protected void updateNetworkStatus()
-
addListener
public void addListener(BuddyPluginTrackerListener l)
-
removeListener
public void removeListener(BuddyPluginTrackerListener l)
-
fireStateChange
protected void fireStateChange(int state)
-
fireEnabledChanged
protected void fireEnabledChanged(boolean enabled)
-
sendMessage
protected void sendMessage(BuddyPluginBuddy buddy, int type, java.util.Map<java.lang.String,java.lang.Object> body)
-
messageReceived
public java.util.Map<java.lang.String,java.lang.Object> messageReceived(BuddyPluginBuddy buddy, java.util.Map<java.lang.String,java.lang.Object> message)
- Specified by:
messageReceived
in interfaceBuddyPluginAZ2TrackerListener
-
messageFailed
public void messageFailed(BuddyPluginBuddy buddy, java.lang.Throwable cause)
- Specified by:
messageFailed
in interfaceBuddyPluginAZ2TrackerListener
-
buddyAlive
protected BuddyPluginTracker.BuddyTrackingData buddyAlive(BuddyPluginBuddy buddy)
-
buddyDead
protected void buddyDead(BuddyPluginBuddy buddy)
-
getTrackingData
public BuddyPluginTracker.BuddyTrackingData getTrackingData(BuddyPluginBuddy buddy)
-
getTrackingStatus
public java.lang.String getTrackingStatus(BuddyPluginBuddy buddy)
-
okToTrack
protected boolean okToTrack(Download d)
-
log
protected void log(java.lang.String str)
-
log
protected void log(java.lang.String str, boolean verbose)
-
log
protected void log(java.lang.String str, java.lang.Throwable e)
-
-