📄 downloadimpl.java
字号:
throws DownloadRemovalVetoException
{
// no sync required, see update code
for (int i=0;i<removal_listeners.size();i++){
try{
((DownloadWillBeRemovedListener)removal_listeners.get(i)).downloadWillBeRemoved(this);
}catch( DownloadRemovalVetoException e ){
throw( e );
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
protected void
destroy()
{
download_manager.removeListener( this );
}
// DownloadManagerListener methods
public void
stateChanged(
DownloadManager manager,
int state )
{
int prev_state = latest_state;
latest_state = convertState(state);
// System.out.println("Plug:prev = " + prev_state + ", curr = " + latest_state );
boolean curr_forcedStart = isForceStart();
if ( prev_state != latest_state || latest_forcedStart != curr_forcedStart ){
latest_forcedStart = curr_forcedStart;
for (int i=0;i<listeners.size();i++){
try{
((DownloadListener)listeners.get(i)).stateChanged( this, prev_state, latest_state );
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
}
public void
downloadComplete(DownloadManager manager)
{
}
public void
completionChanged(
DownloadManager manager,
boolean bCompleted)
{
}
public void
positionChanged(
DownloadManager download,
int oldPosition,
int newPosition)
{
for (int i = 0; i < listeners.size(); i++) {
try {
((DownloadListener)listeners.get(i)).positionChanged(this, oldPosition, newPosition);
} catch (Throwable e) {
Debug.printStackTrace( e );
}
}
}
public void
addListener(
DownloadListener l )
{
try{
listeners_mon.enter();
List new_listeners = new ArrayList( listeners );
new_listeners.add(l);
listeners = new_listeners;
}finally{
listeners_mon.exit();
}
}
public void
removeListener(
DownloadListener l )
{
try{
listeners_mon.enter();
List new_listeners = new ArrayList(listeners);
new_listeners.remove(l);
listeners = new_listeners;
}finally{
listeners_mon.exit();
}
}
public DownloadAnnounceResult
getLastAnnounceResult()
{
return( last_announce_result );
}
public DownloadScrapeResult
getLastScrapeResult()
{
TRTrackerScraperResponse response = download_manager.getTrackerScrapeResponse();
last_scrape_result.setContent( response );
return( last_scrape_result );
}
public void
scrapeResult(
TRTrackerScraperResponse response )
{
last_scrape_result.setContent( response );
for (int i=0;i<tracker_listeners.size();i++){
try{
((DownloadTrackerListener)tracker_listeners.get(i)).scrapeResult( last_scrape_result );
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
public void
announceResult(
TRTrackerAnnouncerResponse response )
{
last_announce_result.setContent( response );
List tracker_listeners_ref = tracker_listeners;
for (int i=0;i<tracker_listeners_ref.size();i++){
try{
((DownloadTrackerListener)tracker_listeners_ref.get(i)).announceResult( last_announce_result );
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
public void
setAnnounceResult(
DownloadAnnounceResult result )
{
download_manager.setAnnounceResult( result );
}
public void
setScrapeResult(
DownloadScrapeResult result )
{
download_manager.setScrapeResult( result );
}
public void
stateChanged(
DownloadManagerState state,
DownloadManagerStateEvent event )
{
final int type = event.getType();
if ( type == DownloadManagerStateEvent.ET_ATTRIBUTE_WRITTEN ||
type == DownloadManagerStateEvent.ET_ATTRIBUTE_WILL_BE_READ ){
String name = (String)event.getData();
List property_listeners_ref = property_listeners;
final TorrentAttribute attr = convertAttribute( name );
if ( attr != null ){
for (int i=0;i<property_listeners_ref.size();i++){
try{
((DownloadPropertyListener)property_listeners_ref.get(i)).propertyChanged(
this,
new DownloadPropertyEvent()
{
public int
getType()
{
return( type==DownloadManagerStateEvent.ET_ATTRIBUTE_WRITTEN
?DownloadPropertyEvent.PT_TORRENT_ATTRIBUTE_WRITTEN
:DownloadPropertyEvent.PT_TORRENT_ATTRIBUTE_WILL_BE_READ );
}
public Object
getData()
{
return( attr );
}
});
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
}
}
public void
addPropertyListener(
DownloadPropertyListener l )
{
try{
tracker_listeners_mon.enter();
List new_property_listeners = new ArrayList( property_listeners );
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 )
{
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();
}
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 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( 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
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 void
requestTrackerAnnounce()
{
download_manager.checkTracker( false );
}
public void
requestTrackerAnnounce(
boolean immediate )
{
download_manager.checkTracker( immediate );
}
public void
requestTrackerScrape(
boolean immediate )
{
download_manager.scrapeTracker( 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 + -