⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trtrackerserverfactoryimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   TRTrackerServerFactoryImpl.java

package org.gudy.azureus2.core3.tracker.server.impl;

import com.aelitis.azureus.core.stats.AzureusCoreStats;
import com.aelitis.azureus.core.stats.AzureusCoreStatsProvider;
import com.aelitis.azureus.core.util.CopyOnWriteList;
import java.io.*;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;
import java.util.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.tracker.server.*;
import org.gudy.azureus2.core3.tracker.server.impl.dht.TRTrackerServerDHT;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.TRTrackerServerTCP;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.blocking.TRBlockingServer;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.nonblocking.TRNonBlockingServer;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.nonblocking.TRNonBlockingServerProcessor;
import org.gudy.azureus2.core3.tracker.server.impl.tcp.nonblocking.TRNonBlockingServerProcessorFactory;
import org.gudy.azureus2.core3.tracker.server.impl.udp.TRTrackerServerUDP;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.core3.util.AsyncController;

// Referenced classes of package org.gudy.azureus2.core3.tracker.server.impl:
//			TRTrackerServerImpl

public class TRTrackerServerFactoryImpl
{
	protected static class NonBlockingProcessor extends TRNonBlockingServerProcessor
	{

		protected ByteArrayOutputStream process(String input_header, String lowercase_input_header, String url_path, InetSocketAddress client_address, boolean announce_and_scrape_only, InputStream is, AsyncController async)
			throws IOException
		{
			ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
			processRequest(input_header, lowercase_input_header, url_path, client_address, announce_and_scrape_only, is, os, async);
			return os;
		}

		protected NonBlockingProcessor(TRTrackerServerTCP _server, SocketChannel _socket)
		{
			super(_server, _socket);
		}
	}


	protected static CopyOnWriteList servers = new CopyOnWriteList();
	protected static List listeners = new ArrayList();
	protected static AEMonitor class_mon = new AEMonitor("TRTrackerServerFactory");

	public TRTrackerServerFactoryImpl()
	{
	}

	public static TRTrackerServer create(String name, int protocol, int port, InetAddress bind_ip, boolean ssl, boolean apply_ip_filter, boolean main_tracker, boolean start_up_ready)
		throws TRTrackerServerException
	{
		TRTrackerServerImpl trtrackerserverimpl;
		class_mon.enter();
		TRTrackerServerImpl server;
		if (protocol == 1)
		{
			if (COConfigurationManager.getBooleanParameter("Tracker TCP NonBlocking") && main_tracker && !ssl)
				server = new TRNonBlockingServer(name, port, bind_ip, apply_ip_filter, start_up_ready, new TRNonBlockingServerProcessorFactory() {

					public TRNonBlockingServerProcessor create(TRTrackerServerTCP _server, SocketChannel _socket)
					{
						return new NonBlockingProcessor(_server, _socket);
					}

				});
			else
				server = new TRBlockingServer(name, port, bind_ip, ssl, apply_ip_filter, start_up_ready);
		} else
		if (protocol == 2)
		{
			if (ssl)
				throw new TRTrackerServerException("TRTrackerServerFactory: UDP doesn't support SSL");
			server = new TRTrackerServerUDP(name, port, start_up_ready);
		} else
		{
			server = new TRTrackerServerDHT(name, start_up_ready);
		}
		servers.add(server);
		for (int i = 0; i < listeners.size(); i++)
			((TRTrackerServerFactoryListener)listeners.get(i)).serverCreated(server);

		trtrackerserverimpl = server;
		class_mon.exit();
		return trtrackerserverimpl;
		Exception exception;
		exception;
		class_mon.exit();
		throw exception;
	}

	protected static void close(TRTrackerServerImpl server)
	{
		class_mon.enter();
		server.closeSupport();
		if (servers.remove(server))
		{
			for (int i = 0; i < listeners.size(); i++)
				((TRTrackerServerFactoryListener)listeners.get(i)).serverDestroyed(server);

		}
		class_mon.exit();
		break MISSING_BLOCK_LABEL_76;
		Exception exception;
		exception;
		class_mon.exit();
		throw exception;
	}

	public static void addListener(TRTrackerServerFactoryListener l)
	{
		class_mon.enter();
		listeners.add(l);
		for (Iterator it = servers.iterator(); it.hasNext(); l.serverCreated((TRTrackerServer)it.next()));
		class_mon.exit();
		break MISSING_BLOCK_LABEL_68;
		Exception exception;
		exception;
		class_mon.exit();
		throw exception;
	}

	public static void removeListener(TRTrackerServerFactoryListener l)
	{
		class_mon.enter();
		listeners.remove(l);
		class_mon.exit();
		break MISSING_BLOCK_LABEL_34;
		Exception exception;
		exception;
		class_mon.exit();
		throw exception;
	}

	static 
	{
		Set types = new HashSet();
		types.add("tracker.read.bytes.total");
		types.add("tracker.write.bytes.total");
		types.add("tracker.announce.count");
		types.add("tracker.announce.time");
		types.add("tracker.scrape.count");
		types.add("tracker.scrape.time");
		AzureusCoreStats.registerProvider(types, new AzureusCoreStatsProvider() {

			public void updateStats(Set types, Map values)
			{
				long read_bytes = 0L;
				long write_bytes = 0L;
				long announce_count = 0L;
				long announce_time = 0L;
				long scrape_count = 0L;
				long scrape_time = 0L;
				for (Iterator it = TRTrackerServerFactoryImpl.servers.iterator(); it.hasNext();)
				{
					TRTrackerServerStats stats = ((TRTrackerServer)it.next()).getStats();
					read_bytes += stats.getBytesIn();
					write_bytes += stats.getBytesOut();
					announce_count += stats.getAnnounceCount();
					announce_time += stats.getAnnounceTime();
					scrape_count += stats.getScrapeCount();
					scrape_time += stats.getScrapeTime();
				}

				if (types.contains("tracker.read.bytes.total"))
					values.put("tracker.read.bytes.total", new Long(read_bytes));
				if (types.contains("tracker.write.bytes.total"))
					values.put("tracker.write.bytes.total", new Long(write_bytes));
				if (types.contains("tracker.announce.count"))
					values.put("tracker.announce.count", new Long(announce_count));
				if (types.contains("tracker.announce.time"))
					values.put("tracker.announce.time", new Long(announce_time));
				if (types.contains("tracker.scrape.count"))
					values.put("tracker.scrape.count", new Long(scrape_count));
				if (types.contains("tracker.scrape.time"))
					values.put("tracker.scrape.time", new Long(scrape_time));
			}

		});
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -