Methods Summary |
---|
public static byte[] | createPeerID()
byte[] peerId = new byte[20];
byte[] version = Constants.VERSION_ID;
for (int i = 0; i < 8; i++) {
peerId[i] = version[i];
}
for (int i = 8; i < 20; i++) {
int pos = (int) ( Math.random() * chars.length());
peerId[i] = (byte)chars.charAt(pos);
}
// System.out.println( "generated new peer id:" + ByteFormatter.nicePrint(peerId));
return( peerId );
|
public static byte[] | createWebSeedPeerID()
byte[] peerId = new byte[20];
peerId[0] = '-";
peerId[1] = 'W";
peerId[2] = 'S";
for (int i = 3; i < 20; i++) {
int pos = (int) ( Math.random() * chars.length());
peerId[i] = (byte)chars.charAt(pos);
}
// System.out.println( "generated new peer id:" + ByteFormatter.nicePrint(peerId));
return( peerId );
|
public static boolean | ignorePeerPort(int port)
return( ignore_peer_ports.contains( "" + port ));
|
public static int | numNewConnectionsAllowed(PeerIdentityDataID data_id, int specific_max)Get the number of new peer connections allowed for the given data item,
within the configured per-torrent and global connection limits.
COConfigurationManager.addParameterListener(
CONFIG_MAX_CONN_PER_TORRENT,
new ParameterListener()
{
public void
parameterChanged(
String parameterName )
{
MAX_CONNECTIONS_PER_TORRENT = COConfigurationManager.getIntParameter(CONFIG_MAX_CONN_PER_TORRENT);
}
});
MAX_CONNECTIONS_PER_TORRENT = COConfigurationManager.getIntParameter(CONFIG_MAX_CONN_PER_TORRENT);
COConfigurationManager.addParameterListener(
CONFIG_MAX_CONN_TOTAL,
new ParameterListener()
{
public void
parameterChanged(
String parameterName )
{
MAX_CONNECTIONS_TOTAL = COConfigurationManager.getIntParameter(CONFIG_MAX_CONN_TOTAL);
}
});
MAX_CONNECTIONS_TOTAL = COConfigurationManager.getIntParameter(CONFIG_MAX_CONN_TOTAL);
int curConnPerTorrent = PeerIdentityManager.getIdentityCount( data_id );
int curConnTotal = PeerIdentityManager.getTotalIdentityCount();
// specific max here will default to the global per-torrent default if not explicitly set
// so we don't need to consider CONFIG_MAX_CONN_PER_TORRENT seperately
int PER_TORRENT_LIMIT = specific_max;
int perTorrentAllowed = -1; //default unlimited
if ( PER_TORRENT_LIMIT != 0 ) { //if limited
int allowed = PER_TORRENT_LIMIT - curConnPerTorrent;
if ( allowed < 0 ) allowed = 0;
perTorrentAllowed = allowed;
}
int totalAllowed = -1; //default unlimited
if ( MAX_CONNECTIONS_TOTAL != 0 ) { //if limited
int allowed = MAX_CONNECTIONS_TOTAL - curConnTotal;
if ( allowed < 0 ) allowed = 0;
totalAllowed = allowed;
}
int allowed = -1; //default unlimited
if ( perTorrentAllowed > -1 && totalAllowed > -1 ) { //if both limited
allowed = Math.min( perTorrentAllowed, totalAllowed );
}
else if ( perTorrentAllowed == -1 || totalAllowed == -1 ) { //if either unlimited
allowed = Math.max( perTorrentAllowed, totalAllowed );
}
return allowed;
|
private static void | readIgnorePeerPorts()
COConfigurationManager.addParameterListener(
"Ignore.peer.ports",
new ParameterListener()
{
public void
parameterChanged(
String parameterName )
{
readIgnorePeerPorts();
}
});
readIgnorePeerPorts();
// XXX Optimize me for ranges!!
String str = COConfigurationManager.getStringParameter( "Ignore.peer.ports" ).trim();
ignore_peer_ports.clear();
if ( str.length() > 0 ){
String[] ports = str.split("\\;");
if (ports != null && ports.length > 0) {
for (int i = 0; i < ports.length; i++) {
String port = ports[i];
int spreadPos = port.indexOf('-");
if (spreadPos > 0 && spreadPos < port.length() - 1) {
try {
int iMin = Integer.parseInt(port.substring(0, spreadPos).trim());
int iMax = Integer.parseInt(port.substring(spreadPos + 1).trim());
for (int j = iMin; j <= iMax; j++) {
ignore_peer_ports.add("" + j);
}
} catch (Exception e) {
}
} else {
ignore_peer_ports.add(port.trim());
}
}
}
}
|