📄 trtrackerserverfactoryimpl.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 + -