亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? externalseedplugin.java

?? 這是我模仿window自帶的小游戲掃雷編的,很簡單,只實現了掃雷的基本功能,現拿出來與大家分享!
?? JAVA
字號:
/*
 * Created on 15-Dec-2005
 * Created by Paul Gardner
 * Copyright (C) 2005, 2006 Aelitis, All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 * 
 * AELITIS, SAS au capital de 46,603.30 euros
 * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
 *
 */

package com.aelitis.azureus.plugins.extseed;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;

import org.gudy.azureus2.plugins.Plugin;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.download.Download;
import org.gudy.azureus2.plugins.download.DownloadManagerListener;
import org.gudy.azureus2.plugins.download.DownloadPeerListener;
import org.gudy.azureus2.plugins.logging.LoggerChannel;
import org.gudy.azureus2.plugins.logging.LoggerChannelListener;
import org.gudy.azureus2.plugins.peers.PeerManager;
import org.gudy.azureus2.plugins.torrent.Torrent;
import org.gudy.azureus2.plugins.ui.model.BasicPluginViewModel;
import org.gudy.azureus2.plugins.utils.*;

import com.aelitis.azureus.plugins.extseed.impl.getright.ExternalSeedReaderFactoryGetRight;
import com.aelitis.azureus.plugins.extseed.impl.webseed.ExternalSeedReaderFactoryWebSeed;

public class 
ExternalSeedPlugin
	implements Plugin, DownloadManagerListener
{
	private static ExternalSeedReaderFactory[]	factories = {
		new ExternalSeedReaderFactoryGetRight(),
		new ExternalSeedReaderFactoryWebSeed(),
	};
	
	private PluginInterface		plugin_interface;
	private LoggerChannel		log;
	
	private 		Random	random = new Random();
	
	private Map		download_map	= new HashMap();
	private Monitor	download_mon;
	
	public void
	initialize(
		PluginInterface	_plugin_interface )
	{
		plugin_interface	= _plugin_interface;
		
		plugin_interface.getPluginProperties().setProperty( "plugin.version", 	"1.0" );
		plugin_interface.getPluginProperties().setProperty( "plugin.name", 		"External Seed" );
				
		log	= plugin_interface.getLogger().getTimeStampedChannel( "External Seeds" );
		
		final BasicPluginViewModel	view_model = 
			plugin_interface.getUIManager().createBasicPluginViewModel( "Plugin.extseed.name" );

		
		view_model.getActivity().setVisible( false );
		view_model.getProgress().setVisible( false );
		
		log.addListener(
				new LoggerChannelListener()
				{
					public void
					messageLogged(
						int		type,
						String	content )
					{
						view_model.getLogArea().appendText( content + "\n" );
					}
					
					public void
					messageLogged(
						String		str,
						Throwable	error )
					{
						if ( str.length() > 0 ){
							view_model.getLogArea().appendText( str + "\n" );
						}
						
						StringWriter sw = new StringWriter();
						
						PrintWriter	pw = new PrintWriter( sw );
						
						error.printStackTrace( pw );
						
						pw.flush();
						
						view_model.getLogArea().appendText( sw.toString() + "\n" );
					}
				});		
		
		download_mon	= plugin_interface.getUtilities().getMonitor();
		
		Utilities utilities = plugin_interface.getUtilities();
		// XXX Would be better if we fired this off after (any) UI is complete,
		//     instead of a timer
		utilities.createTimer("ExternalPeerInitialize", Thread.MIN_PRIORITY).addEvent(
				utilities.getCurrentSystemTime() + 15000, new UTTimerEventPerformer() {
					public void perform(UTTimerEvent event) {
						plugin_interface.getDownloadManager().addListener(
								ExternalSeedPlugin.this);
					}
				});
		
		UTTimer timer = utilities.createTimer("ExternalPeerScheduler", true);
		timer.addPeriodicEvent(
				5000,
				new UTTimerEventPerformer()
				{
					public void
					perform(
						UTTimerEvent		event )
					{
						try{
							Iterator	it = download_map.values().iterator();
							
							while( it.hasNext()){
								
								List	peers = randomiseList((List)it.next());
								
								for (int i=0;i<peers.size();i++){
									
										// bail out early if the state changed for this peer
										// so one peer at a time gets a chance to activate
									
									if (((ExternalSeedPeer)peers.get(i)).checkConnection()){
										
										break;
									}
								}
							}
							
						}catch( Throwable e ){
							// we do this without holding the monitor as doing so causes potential
							// deadlock between download_mon and the connection's connection_mon
							
							// so ignore possible errors here that may be caused by concurrent
							// modification to the download_map ans associated lists. We are only
							// reading the data so errors will only be transient
						}
					}
				});
		
	}
	
	public void
	downloadAdded(
		Download	download )
	{
		Torrent	torrent = download.getTorrent();
		
		if ( torrent == null ){
			
			return;
		}
		
		List	peers = new ArrayList();
		
		for (int i=0;i<factories.length;i++){
			
			ExternalSeedReader[]	x = factories[i].getSeedReaders( this, download );
			
			for (int j=0;j<x.length;j++){
				
				ExternalSeedReader	reader = x[j];
				
				ExternalSeedPeer	peer = new ExternalSeedPeer( this, download, reader );
				
				peers.add( peer );
			}
		}
		
		addPeers( download, peers );
	}
		
	public void
	addSeed(
		Download	download,
		Map			config )
	{
		Torrent	torrent = download.getTorrent();
		
		if ( torrent == null ){
			
			return;
		}
		
		List	peers = new ArrayList();
		
		for (int i=0;i<factories.length;i++){
			
			ExternalSeedReader[]	x = factories[i].getSeedReaders( this, download, config );
			
			for (int j=0;j<x.length;j++){
				
				ExternalSeedReader	reader = x[j];
				
				ExternalSeedPeer	peer = new ExternalSeedPeer( this, download, reader );
				
				peers.add( peer );
			}
		}
		
		addPeers( download, peers );
	}
	
	protected void
	addPeers(
		final Download	download,
		List			_peers )
	{
		final List peers = new ArrayList();
		
		peers.addAll( _peers );
	
		if ( peers.size() > 0 ){
			
			boolean	add_listener = false;
			
			try{
				download_mon.enter();
				
				List	existing_peers = (List)download_map.get( download );
				
				if ( existing_peers == null ){
					
					add_listener	= true;
					
					existing_peers = new ArrayList();
					
					download_map.put( download, existing_peers );
				}
	
				Iterator	it = peers.iterator();
					
				while( it.hasNext()){
					
					ExternalSeedPeer	peer = (ExternalSeedPeer)it.next();
					
					boolean	skip = false;
					
					for (int j=0;j<existing_peers.size();j++){
						
						ExternalSeedPeer	existing_peer = (ExternalSeedPeer)existing_peers.get(j);
						
						if ( existing_peer.sameAs( peer )){
							
							skip	= true;
							
							break;
						}
					}

					if ( skip ){
						
						it.remove();
						
					}else{
						
						log( download.getName() + " found seed " + peer.getName());
						

						existing_peers.add( peer );
					}
				}
				
				
			}finally{
				
				download_mon.exit();
			}
			
			if ( add_listener ){
			
				download.addPeerListener(
					new DownloadPeerListener()
					{
						public void
						peerManagerAdded(
							Download		download,
							PeerManager		peer_manager )
						{
							List	existing_peers = getPeers();
	
							if ( existing_peers== null ){
								
								return;
							}
							
							for (int i=0;i<existing_peers.size();i++){
								
								ExternalSeedPeer	peer = (ExternalSeedPeer)existing_peers.get(i);
								
								peer.setManager( peer_manager );
							}
						}
						
						public void
						peerManagerRemoved(
							Download		download,
							PeerManager		peer_manager )
						{
							List	existing_peers = getPeers();
							
							if ( existing_peers== null ){
								
								return;
							}
							
							for (int i=0;i<existing_peers.size();i++){
								
								ExternalSeedPeer	peer = (ExternalSeedPeer)existing_peers.get(i);
								
								peer.setManager( null );
							}
						}
						
						protected List
						getPeers()
						{
							List	existing_peers = null;
							
							try{
								download_mon.enter();
								
								List	temp = (List)download_map.get( download );
								
								if ( temp != null ){
									
									existing_peers = new ArrayList( temp.size());
									
									existing_peers.addAll( temp );
								}
							}finally{
								
								download_mon.exit();
							}
							
							return( existing_peers );
						}
					});
			}else{
				
					// fix up newly added peers to current peer manager
				
				PeerManager	existing_pm = download.getPeerManager();
				
				if ( existing_pm != null ){
					
					for (int i=0;i<peers.size();i++){
						
						ExternalSeedPeer	peer = (ExternalSeedPeer)peers.get(i);

						if ( peer.getManager() == null ){
							
							peer.setManager( existing_pm );
						}
					}
				}
			}
		}
	}
	
	protected void
	removePeer(
		ExternalSeedPeer	peer )
	{
		Download	download = peer.getDownload();
		
		try{
			download_mon.enter();
		
			List	existing_peers = (List)download_map.get( download );

			if ( existing_peers != null ){
				
				if ( existing_peers.remove( peer )){
					
					log( download.getName() + " removed seed " + peer.getName());
				}
			}
		}finally{
			
			download_mon.exit();
		}
	}

	public void
	downloadRemoved(
		Download	download )
	{
		try{
			download_mon.enter();
			
			download_map.remove( download );
			
		}finally{
			
			download_mon.exit();
		}	
	}
	
	public void
	log(
		String		str )
	{
		log.log( str );
	}
	
	public void
	log(
		String		str,
		Throwable 	e )
	{
		log.log( str, e );
	}
	
	public PluginInterface
	getPluginInterface()
	{
		return( plugin_interface );
	}
	
	protected List
	randomiseList(
		List	l )
	{
		if ( l.size() < 2 ){
			
			return(l);
		}
		
		List	new_list = new ArrayList();
		
		for (int i=0;i<l.size();i++){
			
			new_list.add( random.nextInt(new_list.size()+1), l.get(i));
		}
		
		return( new_list );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品91一区二区| 自拍偷拍国产精品| 欧美亚洲免费在线一区| 成人福利电影精品一区二区在线观看| 青青草一区二区三区| 国产呦精品一区二区三区网站| 久久av资源站| 波波电影院一区二区三区| 国产suv精品一区二区三区| 免费在线观看一区| 亚洲风情在线资源站| 国产激情一区二区三区桃花岛亚洲| 香蕉乱码成人久久天堂爱免费| 精品美女一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲国产精品综合小说图片区| 国产精品久久久久一区| 国产精品久久久久久久久晋中| 国产视频一区在线播放| 国产精品久久久久久久久图文区| 国产精品福利影院| 亚洲卡通欧美制服中文| 五月开心婷婷久久| 精品一区二区三区影院在线午夜 | 国产在线精品一区二区三区不卡| 麻豆视频一区二区| 国产精品一区二区x88av| 成人免费视频一区二区| 日本电影欧美片| 日韩欧美国产三级| 亚洲视频一区二区在线| 肉肉av福利一精品导航| 国产成人自拍网| 欧美性猛片xxxx免费看久爱| 精品久久久久久久久久久久久久久久久 | 国产免费观看久久| 夜夜爽夜夜爽精品视频| 精品亚洲国产成人av制服丝袜| 国产91清纯白嫩初高中在线观看 | 欧美精品一区二区久久久| 国产精品麻豆欧美日韩ww| 亚洲成人动漫在线免费观看| 国产精品一区二区三区四区| 色婷婷久久综合| 久久久高清一区二区三区| 亚洲国产精品天堂| 成人精品国产福利| 欧美成人一区二区三区片免费| 中文字幕一区日韩精品欧美| 乱一区二区av| 精品视频在线视频| 国产精品久久久久久久久晋中 | 日韩av电影免费观看高清完整版在线观看| 国产一区999| 欧美精品乱人伦久久久久久| 国产精品国产精品国产专区不蜜| 激情亚洲综合在线| 欧美精品色综合| 一区二区三区四区在线播放| 成人av在线影院| 2024国产精品| 日本aⅴ亚洲精品中文乱码| 日本高清免费不卡视频| 国产精品免费网站在线观看| 精品一区二区免费| 日韩欧美不卡在线观看视频| 亚洲国产cao| 在线视频国产一区| 亚洲黄网站在线观看| 91蜜桃传媒精品久久久一区二区| 欧美大度的电影原声| 美女久久久精品| 日韩一区二区免费视频| 亚洲成精国产精品女| 欧美天堂亚洲电影院在线播放| 亚洲人成影院在线观看| aaa亚洲精品一二三区| 1024成人网| 91视视频在线直接观看在线看网页在线看| 国产三级三级三级精品8ⅰ区| 激情小说亚洲一区| 国产欧美日韩在线观看| 国产精品一品视频| 亚洲国产精品一区二区久久恐怖片 | 国产成人午夜99999| 国产欧美一区二区三区网站| 国产精品资源在线观看| 欧美国产1区2区| 成人aaaa免费全部观看| 亚洲欧美一区二区三区国产精品| 91蝌蚪porny九色| 亚洲一区精品在线| 欧美一级黄色大片| 国产丶欧美丶日本不卡视频| 成人免费在线播放视频| 欧美综合天天夜夜久久| 肉肉av福利一精品导航| 久久精品夜色噜噜亚洲aⅴ| www.色精品| 三级影片在线观看欧美日韩一区二区| 7777女厕盗摄久久久| 理论电影国产精品| 国产精品久久久久永久免费观看| 色88888久久久久久影院按摩| 天堂av在线一区| 精品国产91久久久久久久妲己| 精品综合免费视频观看| 亚洲欧美日韩系列| 欧美丰满高潮xxxx喷水动漫| 国产一区 二区| 亚洲成人资源网| 久久精品人人做人人爽人人| 91福利小视频| 国产乱码一区二区三区| 亚洲一本大道在线| 中文字幕精品一区二区三区精品| 欧美午夜一区二区| 国产精品一区二区三区99| 亚洲 欧美综合在线网络| 国产日韩欧美精品在线| 欧美色综合天天久久综合精品| 久久99这里只有精品| 一区二区视频在线看| 亚洲精品在线观看视频| 欧美丝袜丝交足nylons| 国产不卡高清在线观看视频| 手机精品视频在线观看| 自拍偷拍亚洲综合| 久久亚洲综合色一区二区三区| 欧美日韩视频第一区| 97aⅴ精品视频一二三区| 国内精品在线播放| 婷婷开心激情综合| 一区二区三区久久| 成人欧美一区二区三区小说| 精品久久久久久久久久久久久久久 | 一本在线高清不卡dvd| 国内久久精品视频| 精品在线免费观看| 天堂久久久久va久久久久| 亚洲少妇30p| 日韩一区欧美一区| 欧美高清一级片在线观看| 欧美成人精精品一区二区频| 欧美日韩国产成人在线免费| 在线国产电影不卡| 在线观看日韩电影| 欧美变态口味重另类| 91精品婷婷国产综合久久| 在线观看日韩一区| 色欧美88888久久久久久影院| 99久久伊人网影院| 99综合电影在线视频| av亚洲产国偷v产偷v自拍| 成人动漫在线一区| 91视频www| 欧美亚一区二区| 欧美日韩一区二区在线视频| 精品视频色一区| 欧美精品丝袜久久久中文字幕| 欧美日韩国产免费| 日韩一区二区电影在线| 日韩免费一区二区三区在线播放| 日韩视频永久免费| 国产色综合久久| 亚洲男人的天堂在线观看| 亚洲国产精品人人做人人爽| 日韩精品国产欧美| 蜜桃久久精品一区二区| 国产乱人伦偷精品视频不卡| 成人免费视频一区| 精品视频在线看| 2022国产精品视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日本va欧美va瓶| 国产精一品亚洲二区在线视频| 国产精品亚洲人在线观看| av色综合久久天堂av综合| 欧美天堂亚洲电影院在线播放| 日韩欧美的一区二区| 国产欧美日韩三区| 性欧美大战久久久久久久久| 久久精品国产精品亚洲综合| 成人丝袜18视频在线观看| 色哟哟国产精品免费观看| 欧美一区二区免费观在线| 国产日韩欧美亚洲| 日韩激情中文字幕| 成人免费福利片| 欧美精品久久99| 久久久91精品国产一区二区精品 | 欧美日韩免费观看一区三区| 精品日产卡一卡二卡麻豆| 综合欧美亚洲日本| 免费看欧美美女黄的网站| 99久久777色| 久久综合给合久久狠狠狠97色69| 伊人性伊人情综合网| 国产a区久久久| 91精品国产色综合久久ai换脸 |