downloadimpl.java
来自「Azureus is a powerful, full-featured, cr」· Java 代码 · 共 1,049 行 · 第 1/2 页
JAVA
1,049 行
}
}
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(
TRTrackerResponse 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
stateChanged(
DownloadManagerState state,
DownloadManagerStateEvent event )
{
if ( event.getType() == DownloadManagerStateEvent.ET_ATTRIBUTE_CHANGED ){
String name = (String)event.getData();
if ( name.equals( DownloadManagerState.AT_CATEGORY )){
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( DownloadPropertyEvent.PT_TORRENT_ATTRIBUTE );
}
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()
{
TRTrackerClient 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 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().setMaxDownloadKBSpeed( kb<0?0:kb );
}
public int
getMaximumDownloadKBPerSecond()
{
return( download_manager.getStats().getMaxDownloadKBSpeed());
}
public int getUploadRateLimitBytesPerSecond() {
return download_manager.getStats().getUploadRateLimitBytesPerSecond();
}
public void setUploadRateLimitBytesPerSecond( int max_rate_bps ) {
download_manager.getStats().setUploadRateLimitBytesPerSecond( max_rate_bps );
}
public String
getSavePath()
{
return( download_manager.getTorrentSaveDirAndFile());
}
public void
requestTrackerAnnounce()
{
download_manager.checkTracker();
}
public byte[] getDownloadPeerId() {
return download_manager.getTrackerClient().getPeerId();
}
// Deprecated methods
public int getPriority() {
return 0;
}
public boolean isPriorityLocked() {
return false;
}
public void setPriority(int priority) {
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?