📄 downloadimpl.java
字号:
new_property_listeners.add( l );
property_listeners = new_property_listeners;
if ( property_listeners.size() == 1 ){
download_manager.getDownloadState().addListener( this );
}
}finally{
tracker_listeners_mon.exit();
}
}
public void
removePropertyListener(
DownloadPropertyListener l )
{
try{
tracker_listeners_mon.enter();
List new_property_listeners = new ArrayList( property_listeners );
new_property_listeners.remove( l );
property_listeners = new_property_listeners;
if ( property_listeners.size() == 0 ){
download_manager.getDownloadState().removeListener( this );
}
}finally{
tracker_listeners_mon.exit();
}
}
public void
torrentChanged()
{
TRTrackerAnnouncer client = download_manager.getTrackerClient();
if ( client != null ){
client.resetTrackerUrl(true);
}
}
public void
addTrackerListener(
DownloadTrackerListener l )
{
addTrackerListener(l, true);
}
public void
addTrackerListener(
DownloadTrackerListener l,
boolean immediateTrigger )
{
try{
tracker_listeners_mon.enter();
List new_tracker_listeners = new ArrayList( tracker_listeners );
new_tracker_listeners.add( l );
tracker_listeners = new_tracker_listeners;
if ( tracker_listeners.size() == 1 ){
download_manager.addTrackerListener( this );
}
}finally{
tracker_listeners_mon.exit();
}
if (immediateTrigger) {
l.announceResult( last_announce_result );
l.scrapeResult( last_scrape_result );
}
}
public void
removeTrackerListener(
DownloadTrackerListener l )
{
try{
tracker_listeners_mon.enter();
List new_tracker_listeners = new ArrayList( tracker_listeners );
new_tracker_listeners.remove( l );
tracker_listeners = new_tracker_listeners;
if ( tracker_listeners.size() == 0 ){
download_manager.removeTrackerListener( this );
}
}finally{
tracker_listeners_mon.exit();
}
}
public void
addDownloadWillBeRemovedListener(
DownloadWillBeRemovedListener l )
{
try{
removal_listeners_mon.enter();
List new_removal_listeners = new ArrayList( removal_listeners );
new_removal_listeners.add(l);
removal_listeners = new_removal_listeners;
}finally{
removal_listeners_mon.exit();
}
}
public void
removeDownloadWillBeRemovedListener(
DownloadWillBeRemovedListener l )
{
try{
removal_listeners_mon.enter();
List new_removal_listeners = new ArrayList( removal_listeners );
new_removal_listeners.remove(l);
removal_listeners = new_removal_listeners;
}finally{
removal_listeners_mon.exit();
}
}
public void
addPeerListener(
DownloadPeerListener l )
{
try{
peer_listeners_mon.enter();
List new_peer_listeners = new ArrayList( peer_listeners );
new_peer_listeners.add( l );
peer_listeners = new_peer_listeners;
if ( peer_listeners.size() == 1 ){
download_manager.addPeerListener( this );
}
}finally{
peer_listeners_mon.exit();
}
}
public void
removePeerListener(
DownloadPeerListener l )
{
try{
peer_listeners_mon.enter();
List new_peer_listeners = new ArrayList( peer_listeners );
new_peer_listeners.remove( l );
peer_listeners = new_peer_listeners;
if ( peer_listeners.size() == 0 ){
download_manager.removePeerListener( this );
}
}finally{
peer_listeners_mon.exit();
}
}
public boolean
activateRequest(
final int count )
{
DownloadActivationEvent event =
new DownloadActivationEvent()
{
public Download
getDownload()
{
return( DownloadImpl.this );
}
public int
getActivationCount()
{
return( count );
}
};
for (Iterator it=activation_listeners.iterator();it.hasNext();){
try{
DownloadActivationListener listener = (DownloadActivationListener)it.next();
if ( listener.activationRequested( event )){
return( true );
}
}catch( Throwable e ){
Debug.printStackTrace(e);
}
}
return( false );
}
public DownloadActivationEvent
getActivationState()
{
return( activation_state );
}
public void
addActivationListener(
DownloadActivationListener l )
{
try{
peer_listeners_mon.enter();
activation_listeners.add( l );
if ( activation_listeners.size() == 1 ){
download_manager.addActivationListener( this );
}
}finally{
peer_listeners_mon.exit();
}
}
public void
removeActivationListener(
DownloadActivationListener l )
{
try{
peer_listeners_mon.enter();
activation_listeners.remove( l );
if ( activation_listeners.size() == 0 ){
download_manager.removeActivationListener( this );
}
}finally{
peer_listeners_mon.exit();
}
}
public void
peerManagerAdded(
PEPeerManager manager )
{
if ( peer_listeners.size() > 0 ){
PeerManager pm = PeerManagerImpl.getPeerManager( manager);
for (int i=0;i<peer_listeners.size();i++){
((DownloadPeerListener)peer_listeners.get(i)).peerManagerAdded( this, pm );
}
}
}
public void
peerManagerRemoved(
PEPeerManager manager )
{
if ( peer_listeners.size() > 0 ){
PeerManager pm = PeerManagerImpl.getPeerManager( manager);
for (int i=0;i<peer_listeners.size();i++){
((DownloadPeerListener)peer_listeners.get(i)).peerManagerRemoved( this, pm );
}
}
}
public PeerManager
getPeerManager()
{
PEPeerManager pm = download_manager.getPeerManager();
if ( pm == null ){
return( null );
}
return( PeerManagerImpl.getPeerManager( pm));
}
public DiskManager
getDiskManager()
{
PeerManager pm = getPeerManager();
if ( pm != null ){
return( pm.getDiskManager());
}
return( null );
}
public DiskManagerFileInfo[]
getDiskManagerFileInfo()
{
org.gudy.azureus2.core3.disk.DiskManagerFileInfo[] info = download_manager.getDiskManagerFileInfo();
if ( info == null ){
return( new DiskManagerFileInfo[0] );
}
DiskManagerFileInfo[] res = new DiskManagerFileInfo[info.length];
for (int i=0;i<res.length;i++){
res[i] = new DiskManagerFileInfoImpl( this, info[i] );
}
return( res );
}
public void
peerAdded(
PEPeer peer )
{
}
public void
peerRemoved(
PEPeer peer )
{
}
public void
pieceAdded(
PEPiece piece )
{
}
public void
pieceRemoved(
PEPiece piece )
{
}
public void
setMaximumDownloadKBPerSecond(
int kb )
{
download_manager.getStats().setDownloadRateLimitBytesPerSecond( kb < 0 ? 0 : kb*1024 );
}
public int
getMaximumDownloadKBPerSecond()
{
return( download_manager.getStats().getDownloadRateLimitBytesPerSecond() /1024 );
}
public int getUploadRateLimitBytesPerSecond() {
return download_manager.getStats().getUploadRateLimitBytesPerSecond();
}
public void setUploadRateLimitBytesPerSecond( int max_rate_bps ) {
download_manager.getStats().setUploadRateLimitBytesPerSecond( max_rate_bps );
}
public int getSeedingRank() {
return download_manager.getSeedingRank();
}
public void setSeedingRank(int rank) {
download_manager.setSeedingRank(rank);
}
public String
getSavePath()
{
return( download_manager.getSaveLocation().toString());
}
public void
moveDataFiles(
File new_parent_dir )
throws DownloadException
{
try{
download_manager.moveDataFiles( new_parent_dir );
}catch( DownloadManagerException e ){
throw( new DownloadException("move operation failed", e ));
}
}
public void renameDownload(String new_name) throws DownloadException {
try {download_manager.renameDownload(new_name);}
catch (DownloadManagerException e) {
throw new DownloadException("rename operation failed", e);
}
}
public void
moveTorrentFile(
File new_parent_dir )
throws DownloadException
{
try{
download_manager.moveTorrentFile( new_parent_dir );
}catch( DownloadManagerException e ){
throw( new DownloadException("move operation failed", e ));
}
}
public File[] calculateDefaultPaths(boolean for_moving) {
return download_manager.calculateDefaultPaths(for_moving);
}
public boolean isInDefaultSaveDir() {
return download_manager.isInDefaultSaveDir();
}
public void
requestTrackerAnnounce()
{
download_manager.requestTrackerAnnounce( false );
}
public void
requestTrackerAnnounce(
boolean immediate )
{
download_manager.requestTrackerAnnounce( immediate );
}
public void
requestTrackerScrape(
boolean immediate )
{
download_manager.requestTrackerScrape( immediate );
}
public byte[] getDownloadPeerId() {
TRTrackerAnnouncer announcer = download_manager.getTrackerClient();
if(announcer == null) return null;
return announcer.getPeerId();
}
public boolean isMessagingEnabled() { return download_manager.isAZMessagingEnabled(); }
public void setMessagingEnabled( boolean enabled ) {
download_manager.setAZMessagingEnabled( enabled );
}
public void setSessionAuthenticator( SessionAuthenticator auth ) {
//TODO
}
// Deprecated methods
public int getPriority() {
return 0;
}
public boolean isPriorityLocked() {
return false;
}
public void setPriority(int priority) {
}
// Pass LogRelation off to core objects
/* (non-Javadoc)
* @see org.gudy.azureus2.core3.logging.LogRelation#getLogRelationText()
*/
public String getRelationText() {
return propogatedRelationText(download_manager);
}
/* (non-Javadoc)
* @see org.gudy.azureus2.core3.logging.LogRelation#getQueryableInterfaces()
*/
public Object[] getQueryableInterfaces() {
return new Object[] { download_manager };
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -