Package com.biglybt.core.download.impl
Class DownloadManagerController
java.lang.Object
com.biglybt.core.logging.LogRelation
com.biglybt.core.download.impl.DownloadManagerController
- All Implemented Interfaces:
PEPeerManagerAdapter
,PeerManagerRegistrationAdapter
,SimpleTimer.TimerTickReceiver
public class DownloadManagerController
extends LogRelation
implements PEPeerManagerAdapter, PeerManagerRegistrationAdapter, SimpleTimer.TimerTickReceiver
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
protected class
protected class
class
(package private) static interface
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate BloomFilter
private long
private int
private long
private static final int
(package private) boolean
private static final int
private boolean
private boolean
(package private) final Object
private boolean
(package private) final AEMonitor
(package private) long
private final ListenerManager
(package private) static final ListenerManager
private final AEMonitor
private DiskManagerListener
private WeakReference
<DiskManagerPiece[]> private Object
private DiskManager
(package private) final DownloadManagerImpl
(package private) DownloadManagerState
private String
private int
private int
private static ExternalSeedPlugin
private static boolean
private Object
(package private) final AEMonitor
(package private) final DownloadManagerController.FileInfoFacadeSet
(package private) boolean
private boolean
(package private) final GlobalManagerStats
private final LinkedList
<ExternalSeedPeer> private static final int
private boolean
private static final int
private static final int
private WeakReference
<byte[]> private int
private static final int
private PEPeerManager
private PeerManagerRegistration
private boolean
private long
(package private) static long
private static final long
private static final long
private final AEMonitor
private int
(package private) final DownloadManagerStatsImpl
private int
(package private) static boolean
Fields inherited from interface com.biglybt.core.peermanager.PeerManagerRegistrationAdapter
AT_ACCEPTED, AT_ACCEPTED_PROBE, AT_DECLINED
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
DownloadManagerController
(DownloadManagerImpl _download_manager) -
Method Summary
Modifier and TypeMethodDescriptionint
activateRequest
(InetSocketAddress address) void
addDiskListener
(DownloadManagerDiskListener listener) void
addHTTPSeed
(String address, int port) void
void
void
addRateLimiter
(LimitedRateGroup group, boolean upload) private void
protected void
calculateCompleteness
(DiskManagerFileInfo[] active) boolean
void
dataBytesReceived
(PEPeer peer, int bytes) void
dataBytesSent
(PEPeer peer, int bytes) void
deactivateRequest
(InetSocketAddress address) protected void
destroy()
void
void
enqueueReadRequest
(PEPeer peer, DiskManagerReadRequest request, DiskManagerReadRequestListener listener) protected void
protected void
filePrioritiesChanged
(List files) boolean
filesExist
(boolean expected_to_be_allocated, boolean test_only) void
forceRecheck
(Map resume_data) void
generateEvidence
(IndentWriter writer, boolean full) int
int
See NetworkManager.CRYPTO_OVERRIDE constantslong
protected DiskManager
Deprecated.use getDiskManagerFileInfoSet() insteadint
int
String[]
protected String
protected int
protected int
int
static ExternalSeedPlugin
byte[]
int
getHashOverrideLocalPort
(boolean only_if_allocated) int[]
int[]
int
int
byte[]
protected PEPeerManager
int
int
int
Object[]
Query this class for a reference to another class that it may holdlong
getRateLimiters
(boolean upload) A short description of what your class holds that can be printed by the loggerprotected byte[]
getSecret2
(TOTorrent torrent) byte[][]
byte[][]
getSecrets
(int crypto_level) int
getState()
protected int
byte[]
int
byte[]
getTorrentInfoDict
(PEPeer peer) int
int
int
boolean
void
initializeDiskManager
(boolean open_for_seeding) protected void
initializeDiskManagerSupport
(int initialising_state, DiskManagerListener listener) protected boolean
isDownloadComplete
(boolean bIncludeDND) Determine if the download is complete, excluding DND files.protected boolean
boolean
boolean
boolean
boolean
isNetworkEnabled
(String network) boolean
boolean
isPeerSourceEnabled
(String peer_source) boolean
boolean
boolean
manualRoute
(NetworkConnection connection) void
permittedReceiveBytesUsed
(int bytes) void
permittedSendBytesUsed
(int bytes) void
priorityConnectionChanged
(boolean added) void
protocolBytesReceived
(PEPeer peer, int bytes) void
protocolBytesSent
(PEPeer peer, int bytes) protected void
void
void
removePeer
(PEPeer peer) void
removePiece
(PEPiece piece) void
removeRateLimiter
(LimitedRateGroup group, boolean upload) void
restartDownload
(boolean forceRecheck) Stops the current download, then restarts it again.void
protected void
setDiskManager
(DiskManager new_disk_manager, DiskManagerListener new_disk_manager_listener) protected void
void
protected void
setErrorState
(int type, String reason, int flags) protected void
private void
private void
setFailed
(DiskManager dm) protected void
protected void
void
setForceStart
(boolean _force_start) protected void
setInitialState
(int initial_state) void
setPieceCheckingEnabled
(boolean enabled) (package private) void
setState
(int _state, boolean _inform_changed) void
void
protected void
void
setStateSeeding
(boolean never_downloaded) protected void
private void
setSubState
(int ss) void
setTrackerRefreshDelayOverrides
(int percent) void
void
startDownload
(TRTrackerAnnouncer tracker_client) void
statsRequest
(PEPeer originator, Map request, Map reply) void
stopIt
(int _stateAfterStopping, boolean remove_torrent, boolean remove_data, boolean for_removal) void
tick
(long mono_now, int tick_count) Methods inherited from class com.biglybt.core.logging.LogRelation
propogatedRelationText, queryForClass
-
Field Details
-
STATE_FLAG_HASDND
private static final long STATE_FLAG_HASDND- See Also:
-
STATE_FLAG_COMPLETE_NO_DND
private static final long STATE_FLAG_COMPLETE_NO_DND- See Also:
-
skeleton_builds
static long skeleton_builds -
tracker_stats_exclude_lan
static boolean tracker_stats_exclude_lan -
ext_seed_plugin
-
ext_seed_plugin_tried
private static boolean ext_seed_plugin_tried -
LDT_DL_ADDED
private static final int LDT_DL_ADDED- See Also:
-
LDT_DL_REMOVED
private static final int LDT_DL_REMOVED- See Also:
-
disk_listeners_agregator
-
disk_listeners
-
disk_listeners_mon
-
control_mon
-
state_mon
-
facade_mon
-
download_manager
-
download_manager_state
DownloadManagerState download_manager_state -
stats
-
state_set_by_method
private volatile int state_set_by_method -
substate
private volatile int substate -
force_start
private volatile boolean force_start -
is_force_rechecking
private volatile boolean is_force_rechecking -
disk_manager_use_accessors
-
disk_manager_listener_use_accessors
-
disk_manager_pieces_snapshot_lock
-
disk_manager_pieces_snapshot
-
fileFacadeSet
-
files_facade_destroyed
boolean files_facade_destroyed -
cached_complete_excluding_dnd
private boolean cached_complete_excluding_dnd -
cached_has_dnd_files
private boolean cached_has_dnd_files -
cached_values_set
private boolean cached_values_set -
cached_networks
-
cached_networks_lock
-
peer_manager_registration
-
peer_manager
-
dm_attribute_listener
-
external_rate_limiters_cow_lock
-
external_rate_limiters_cow
-
errorDetail
-
errorType
private int errorType -
errorFlags
private int errorFlags -
global_stats
-
bInitialized
boolean bInitialized -
data_send_rate_at_close
long data_send_rate_at_close -
ACTIVATION_REBUILD_TIME
private static final int ACTIVATION_REBUILD_TIME- See Also:
-
BLOOM_SIZE
private static final int BLOOM_SIZE- See Also:
-
activation_bloom
-
activation_bloom_create_time
private volatile long activation_bloom_create_time -
activation_count
private volatile int activation_count -
activation_count_time
private volatile long activation_count_time -
piece_checking_enabled
private boolean piece_checking_enabled -
priority_connection_count
private long priority_connection_count -
HTTP_SEEDS_MAX
private static final int HTTP_SEEDS_MAX- See Also:
-
http_seeds
-
md_info_dict_size
private int md_info_dict_size -
md_info_dict_ref
-
MD_INFO_PEER_HISTORY_MAX
private static final int MD_INFO_PEER_HISTORY_MAX- See Also:
-
md_info_peer_history
-
-
Constructor Details
-
DownloadManagerController
-
-
Method Details
-
getExternalSeedPlugin
-
setDownloadManagerState
-
setInitialState
protected void setInitialState(int initial_state) -
startDownload
-
initializeDiskManager
public void initializeDiskManager(boolean open_for_seeding) -
initializeDiskManagerSupport
-
canForceRecheck
public boolean canForceRecheck() -
isForceRechecking
protected boolean isForceRechecking() -
forceRecheck
-
setPieceCheckingEnabled
public void setPieceCheckingEnabled(boolean enabled) -
stopIt
public void stopIt(int _stateAfterStopping, boolean remove_torrent, boolean remove_data, boolean for_removal) -
setStateWaiting
protected void setStateWaiting() -
setStateFinishing
public void setStateFinishing()- Specified by:
setStateFinishing
in interfacePEPeerManagerAdapter
-
setStateDownloading
public void setStateDownloading() -
setStateSeeding
public void setStateSeeding(boolean never_downloaded) - Specified by:
setStateSeeding
in interfacePEPeerManagerAdapter
-
isStateSeeding
public boolean isStateSeeding() -
setStateQueued
protected void setStateQueued() -
getState
public int getState() -
getSubState
protected int getSubState() -
setSubState
private void setSubState(int ss) -
setState
void setState(int _state, boolean _inform_changed) - Parameters:
_state
-_inform_changed
- trigger informStateChange (which may not trigger listeners if state hasn't changed since last trigger)
-
restartDownload
public void restartDownload(boolean forceRecheck) Stops the current download, then restarts it again.- Specified by:
restartDownload
in interfacePEPeerManagerAdapter
-
destroy
protected void destroy() -
saveTorrentState
public void saveTorrentState()- Specified by:
saveTorrentState
in interfacePEPeerManagerAdapter
-
isPeerSourceEnabled
- Specified by:
isPeerSourceEnabled
in interfacePeerManagerRegistrationAdapter
- Specified by:
isPeerSourceEnabled
in interfacePEPeerManagerAdapter
-
cacheNetworks
private void cacheNetworks() -
isNetworkEnabled
- Specified by:
isNetworkEnabled
in interfacePEPeerManagerAdapter
-
getEnabledNetworks
- Specified by:
getEnabledNetworks
in interfacePEPeerManagerAdapter
-
getSecrets
public byte[][] getSecrets()- Specified by:
getSecrets
in interfacePeerManagerRegistrationAdapter
-
getHashOverride
public byte[] getHashOverride()- Specified by:
getHashOverride
in interfacePeerManagerRegistrationAdapter
-
getPeerID
public byte[] getPeerID()- Specified by:
getPeerID
in interfacePeerManagerRegistrationAdapter
-
getNbPieces
public int getNbPieces()- Specified by:
getNbPieces
in interfacePeerManagerRegistrationAdapter
-
getHashOverrideLocalPort
public int getHashOverrideLocalPort(boolean only_if_allocated) - Specified by:
getHashOverrideLocalPort
in interfacePeerManagerRegistrationAdapter
-
getSecrets
public byte[][] getSecrets(int crypto_level) - Specified by:
getSecrets
in interfacePEPeerManagerAdapter
-
getSecret2
- Throws:
TOTorrentException
-
manualRoute
- Specified by:
manualRoute
in interfacePeerManagerRegistrationAdapter
-
getRandomSeed
public long getRandomSeed()- Specified by:
getRandomSeed
in interfacePEPeerManagerAdapter
-
addRateLimiter
-
getRateLimiters
-
removeRateLimiter
-
enqueueReadRequest
public void enqueueReadRequest(PEPeer peer, DiskManagerReadRequest request, DiskManagerReadRequestListener listener) - Specified by:
enqueueReadRequest
in interfacePEPeerManagerAdapter
-
activateRequest
- Specified by:
activateRequest
in interfacePeerManagerRegistrationAdapter
- Parameters:
address
-- Returns:
- one of the AT_ constants
-
deactivateRequest
- Specified by:
deactivateRequest
in interfacePeerManagerRegistrationAdapter
-
getTargetHash
public byte[] getTargetHash()- Specified by:
getTargetHash
in interfacePEPeerManagerAdapter
-
getTCPListeningPortNumber
public int getTCPListeningPortNumber()- Specified by:
getTCPListeningPortNumber
in interfacePEPeerManagerAdapter
-
getActivationCount
public int getActivationCount() -
getPeerManagerRegistration
- Specified by:
getPeerManagerRegistration
in interfacePEPeerManagerAdapter
-
isForceStart
public boolean isForceStart() -
setForceStart
public void setForceStart(boolean _force_start) -
setFailed
-
setFailed
-
setFailed
-
setErrorState
-
setFailed
-
setFailed
-
filesExist
public boolean filesExist(boolean expected_to_be_allocated, boolean test_only) -
getDiskManagerFileInfoSet
-
getDiskManagerFileInfo
Deprecated.use getDiskManagerFileInfoSet() instead -
fileInfoChanged
protected void fileInfoChanged() -
filePrioritiesChanged
-
calculateCompleteness
-
isDownloadComplete
protected boolean isDownloadComplete(boolean bIncludeDND) Determine if the download is complete, excluding DND files. This function is mostly cached when there is a DiskManager.- Returns:
- completion state
-
getPeerManager
-
getDiskManager
-
getDiskManagerPiecesSnapshot
-
getErrorDetail
-
getErrorType
protected int getErrorType() -
getErrorFlags
protected int getErrorFlags() -
setDiskManager
protected void setDiskManager(DiskManager new_disk_manager, DiskManagerListener new_disk_manager_listener) -
addDiskListener
-
removeDiskListener
-
getDiskListenerCount
public long getDiskListenerCount() -
getDisplayName
- Specified by:
getDisplayName
in interfacePEPeerManagerAdapter
-
getEffectiveUploadRateLimitBytesPerSecond
public int getEffectiveUploadRateLimitBytesPerSecond()- Specified by:
getEffectiveUploadRateLimitBytesPerSecond
in interfacePEPeerManagerAdapter
-
getUploadRateLimitBytesPerSecond
public int getUploadRateLimitBytesPerSecond()- Specified by:
getUploadRateLimitBytesPerSecond
in interfacePEPeerManagerAdapter
-
setUploadRateLimitBytesPerSecond
public void setUploadRateLimitBytesPerSecond(int b) - Specified by:
setUploadRateLimitBytesPerSecond
in interfacePEPeerManagerAdapter
-
getDownloadRateLimitBytesPerSecond
public int getDownloadRateLimitBytesPerSecond()- Specified by:
getDownloadRateLimitBytesPerSecond
in interfacePEPeerManagerAdapter
-
setDownloadRateLimitBytesPerSecond
public void setDownloadRateLimitBytesPerSecond(int b) - Specified by:
setDownloadRateLimitBytesPerSecond
in interfacePEPeerManagerAdapter
-
rateLimitChanged
protected void rateLimitChanged() -
getPermittedBytesToReceive
public int getPermittedBytesToReceive()- Specified by:
getPermittedBytesToReceive
in interfacePEPeerManagerAdapter
-
permittedReceiveBytesUsed
public void permittedReceiveBytesUsed(int bytes) - Specified by:
permittedReceiveBytesUsed
in interfacePEPeerManagerAdapter
-
getPermittedBytesToSend
public int getPermittedBytesToSend()- Specified by:
getPermittedBytesToSend
in interfacePEPeerManagerAdapter
-
permittedSendBytesUsed
public void permittedSendBytesUsed(int bytes) - Specified by:
permittedSendBytesUsed
in interfacePEPeerManagerAdapter
-
getMaxUploads
public int getMaxUploads()- Specified by:
getMaxUploads
in interfacePEPeerManagerAdapter
-
getMaxConnections
public int[] getMaxConnections()- Specified by:
getMaxConnections
in interfacePEPeerManagerAdapter
-
getMaxSeedConnections
public int[] getMaxSeedConnections()- Specified by:
getMaxSeedConnections
in interfacePEPeerManagerAdapter
-
getUploadPriority
public int getUploadPriority()- Specified by:
getUploadPriority
in interfacePEPeerManagerAdapter
-
getExtendedMessagingMode
public int getExtendedMessagingMode()- Specified by:
getExtendedMessagingMode
in interfacePeerManagerRegistrationAdapter
- Specified by:
getExtendedMessagingMode
in interfacePEPeerManagerAdapter
-
isPeerExchangeEnabled
public boolean isPeerExchangeEnabled()- Specified by:
isPeerExchangeEnabled
in interfacePEPeerManagerAdapter
-
getCryptoLevel
public int getCryptoLevel()Description copied from interface:PEPeerManagerAdapter
See NetworkManager.CRYPTO_OVERRIDE constants- Specified by:
getCryptoLevel
in interfacePEPeerManagerAdapter
- Returns:
-
isPeriodicRescanEnabled
public boolean isPeriodicRescanEnabled()- Specified by:
isPeriodicRescanEnabled
in interfacePEPeerManagerAdapter
-
getTrackerScrapeResponse
- Specified by:
getTrackerScrapeResponse
in interfacePEPeerManagerAdapter
-
getTrackerClientExtensions
- Specified by:
getTrackerClientExtensions
in interfacePEPeerManagerAdapter
-
setTrackerRefreshDelayOverrides
public void setTrackerRefreshDelayOverrides(int percent) - Specified by:
setTrackerRefreshDelayOverrides
in interfacePEPeerManagerAdapter
-
isNATHealthy
public boolean isNATHealthy()- Specified by:
isNATHealthy
in interfacePEPeerManagerAdapter
-
isMetadataDownload
public boolean isMetadataDownload()- Specified by:
isMetadataDownload
in interfacePEPeerManagerAdapter
-
getTorrentInfoDictSize
public int getTorrentInfoDictSize()- Specified by:
getTorrentInfoDictSize
in interfacePEPeerManagerAdapter
-
getTorrentInfoDict
- Specified by:
getTorrentInfoDict
in interfacePEPeerManagerAdapter
-
addPeer
- Specified by:
addPeer
in interfacePEPeerManagerAdapter
-
removePeer
- Specified by:
removePeer
in interfacePEPeerManagerAdapter
-
addPiece
- Specified by:
addPiece
in interfacePEPeerManagerAdapter
-
removePiece
- Specified by:
removePiece
in interfacePEPeerManagerAdapter
-
discarded
- Specified by:
discarded
in interfacePEPeerManagerAdapter
-
protocolBytesReceived
- Specified by:
protocolBytesReceived
in interfacePEPeerManagerAdapter
-
dataBytesReceived
- Specified by:
dataBytesReceived
in interfacePEPeerManagerAdapter
-
protocolBytesSent
- Specified by:
protocolBytesSent
in interfacePEPeerManagerAdapter
-
dataBytesSent
- Specified by:
dataBytesSent
in interfacePEPeerManagerAdapter
-
getPosition
public int getPosition()- Specified by:
getPosition
in interfacePEPeerManagerAdapter
-
tick
public void tick(long mono_now, int tick_count) - Specified by:
tick
in interfaceSimpleTimer.TimerTickReceiver
-
statsRequest
- Specified by:
statsRequest
in interfacePEPeerManagerAdapter
-
addHTTPSeed
- Specified by:
addHTTPSeed
in interfacePEPeerManagerAdapter
-
priorityConnectionChanged
public void priorityConnectionChanged(boolean added) - Specified by:
priorityConnectionChanged
in interfacePEPeerManagerAdapter
-
hasPriorityConnection
public boolean hasPriorityConnection()- Specified by:
hasPriorityConnection
in interfacePEPeerManagerAdapter
-
getDescription
- Specified by:
getDescription
in interfacePeerManagerRegistrationAdapter
-
getLogRelation
- Specified by:
getLogRelation
in interfacePEPeerManagerAdapter
-
getRelationText
Description copied from class:LogRelation
A short description of what your class holds that can be printed by the logger- Overrides:
getRelationText
in classLogRelation
- Returns:
-
getQueryableInterfaces
Description copied from class:LogRelation
Query this class for a reference to another class that it may hold- Overrides:
getQueryableInterfaces
in classLogRelation
- Returns:
- If found, the class desired. Otherwise, null.
-
generateEvidence
-