/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.openejb.server.discovery;
import java.util.concurrent.CountDownLatch;
import java.util.HashSet;
import java.util.Set;
/**
* @version $Rev$ $Date$
*/
public class EchoNet {
public static void _main(String[] args) throws Exception {
MultipointServer a = new MultipointServer(1111, new Tracker.Builder().build()).start();
MultipointServer b = new MultipointServer(3333, new Tracker.Builder().build()).start();
a.connect(b);
b.connect(a);
a.connect(b);
b.connect(a);
a.connect(b);
b.connect(a);
a.connect(b);
b.connect(a);
}
public static void main(String[] args) throws Exception {
final int multiple = 1;
final int base = 2000;
// final int multiple = 1111;
// final int base = 1;
int servers = 50;
if (args.length > 0)
servers = Integer.parseInt(args[0]);
if (servers < 1) {
System.out.println("number of servers must be greater than zero");
return;
}
// get out of the 1000 port range
servers += base;
MultipointServer lastServer = null;
for (int i = base; i < servers; i++) {
MultipointServer newServer = new MultipointServer(multiple * i, new Tracker.Builder().build()).start();
if (lastServer != null)
newServer.connect(lastServer);
lastServer = newServer;
}
new CountDownLatch(1).await();
}
public static class Calc {
public static void main(String[] args) {
Set<Item> set = new HashSet<Item>();
int x = 150;
for (int i = 1; i <= x; i++) {
for (int j = 1; j <= x; j++) {
if (i == j) continue;
Item item = new Item(i, j);
boolean b = set.add(item);
// if (b) System.out.println("item = " + item);
}
}
// 100 4950
System.out.println(x + " ? " + 2 + " = " + set.size());
}
static class Item {
int a;
int b;
Item(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
Item set = (Item) o;
if (a == set.a && b == set.b) return true;
if (a == set.b && b == set.a) return true;
return false;
}
@Override
public int hashCode() {
return 1;
}
@Override
public String toString() {
return a + " " + b;
}
}
}
}