/* * Created by IntelliJ IDEA. * User: rkinney * Date: Jul 23, 2002 * Time: 6:04:16 AM * To change template for new class use * Code Style | Class Templates options (Tools | IDE Options). */ package VASSAL.chat.peer2peer; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.FileWriter; import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Random; import VASSAL.chat.ChatServerConnection; import VASSAL.chat.Player; import VASSAL.chat.SimpleRoom; import VASSAL.chat.WelcomeMessageServer; import VASSAL.chat.messageboard.MessageBoard; public class ClientTest extends P2PClient implements Runnable, PropertyChangeListener { private static Random rng = new Random(); private int changeRoom; private int numRooms; private FileWriter log; public ClientTest(PeerPool pool, MessageBoard msgSvr, WelcomeMessageServer welcomer, int changeRoom, int numRooms, FileWriter log) { super(new TextClient.Encoder(), msgSvr, welcomer, pool); this.changeRoom = changeRoom; this.numRooms = numRooms; this.log = log; addPropertyChangeListener(ChatServerConnection.AVAILABLE_ROOMS, this); setConnected(true); new Thread(this).start(); } public void run() { while (true) { try { Thread.sleep(changeRoom * 1000); } catch (InterruptedException e) { } String newRoom = "Room" + (int) (numRooms * rng.nextFloat()); //$NON-NLS-1$ setRoom(new SimpleRoom(newRoom)); } } public void propertyChange(PropertyChangeEvent evt) { try { log.write("----------" + (new Date()) + "---------\n"); //$NON-NLS-1$ //$NON-NLS-2$ log.write(report((VASSAL.chat.Room[]) evt.getNewValue())); log.flush(); } // FIXME: review error message catch (IOException e) { e.printStackTrace(); } } public static String report(VASSAL.chat.Room[] r) { final StringBuilder buffer = new StringBuilder(); for (int i = 0; i < r.length; ++i) { buffer.append(r[i].getName() + ": "); //$NON-NLS-1$ List<Player> l = r[i].getPlayerList(); for (int j = 0; j < l.size(); ++j) { buffer.append(l.get(j)); if (j < l.size() - 1) { buffer.append(", "); //$NON-NLS-1$ } } buffer.append("\n"); //$NON-NLS-1$ } return buffer.toString(); } /* public static void main(String[] args) throws Exception { if (args.length == 0) { System.err.println("Usage: -module <module> -clients <clientCount> -rooms <roomCount> -wait <delay> -type <CGI|Proxy>"); System.exit(0); } Properties p = new ArgsParser(args).getProperties(); String modName = p.getProperty("module", "test"); boolean useProxy = "CGI".equals(p.getProperty("type", "Proxy")); int nClients = Integer.parseInt(p.getProperty("clients", "2")); int nRooms = Integer.parseInt(p.getProperty("rooms", "4")); int wait = Integer.parseInt(p.getProperty("wait", "10")); MessageBoard msgSvr = new MessageBoard() { public Message[] getMessages() { return new Message[0]; } public void postMessage(String msg) { } }; WelcomeMessageServer welcomer = new WelcomeMessageServer() { public Command getWelcomeMessage() { return new NullCommand(); } }; for (int i = 0; i < nClients; ++i) { Thread.sleep((int) (wait * 1000 * rng.nextFloat())); final String moduleName = modName; final String userName = "client" + i; PeerPoolInfo info = new PeerPoolInfo() { public String getModuleName() { return moduleName; } public String getUserName() { return userName; } }; PeerPool pool = new DirectPeerPool(); new ClientTest(pool, msgSvr, welcomer, wait, nRooms, new FileWriter("Log" + i)); } } */}