package colloid.http; import java.io.DataInput; import java.io.DataInputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import colloid.App; import javafx.application.Platform; import net.jxta.document.AdvertisementFactory; import net.jxta.exception.PeerGroupException; import net.jxta.id.IDFactory; import net.jxta.peer.PeerID; import net.jxta.peergroup.PeerGroup; import net.jxta.peergroup.PeerGroupID; import net.jxta.pipe.PipeID; import net.jxta.pipe.PipeService; import net.jxta.platform.NetworkConfigurator; import net.jxta.platform.NetworkManager; import net.jxta.protocol.PipeAdvertisement; import net.jxta.rendezvous.RendezVousService; import net.jxta.socket.JxtaServerSocket; public class Peer { private PeerServer server; private PeerClient client; protected boolean isRunning; protected NetworkManager networkManager; protected NetworkConfigurator networkConfigurator; protected PeerGroup peerGroup; public static final String name = "_peer-colloid-jxta"; public static final int tcpPort = 9714; // public static final PeerID PID = IDFactory.newPeerID(PeerGroupID.defaultNetPeerGroupID, name.getBytes()); // public static final File configurationFile = new File("." + System.getProperty("file.separator") + name); private static Peer instance; public Peer() { } public static Peer getInstance() { if (instance == null) { instance = new Peer(); } return instance; } protected void init() { if (Platform.isFxApplicationThread()) { initWithFx(); } else { Platform.runLater(new Runnable() { @Override public void run() { init(); } }); } } protected void initWithFx() { if (server == null) { server = PeerServer.init(); } if (client == null) { client = PeerClient.init(); } } public void run() { isRunning = true; init(); Platform.runLater(new Runnable() { @Override public void run() { init(); } }); new Thread(new Runnable() { @Override public void run() { start(); } }).start(); } protected void start() { server.start(); } public void stop() { if (isRunning) { server.stop(); client.stop(); log("Stop peer"); } } protected void connectedPeersInfo(RendezVousService TheRendezVous, String Name) { List<PeerID> theList = TheRendezVous.getLocalRendezVousView(); Iterator<PeerID> iter = theList.iterator(); int count = 0; while (iter.hasNext()) { count++; log("Peer connected to this rendezvous:\n\n" + iter.next().toString()); } if (count==0) { log("No peers connected to this rendezvous!"); } } public boolean isRunning() { return isRunning; } public void send(String combatlog) { client.send(combatlog); } private static void log(String message, Level level) { Logger.getLogger(Peer.class.getName()).log(level, message); } private static void log(String message) { log(message, Level.INFO); } /** * TODO * @param message * @param level */ public static void log(String name, String message, Level level) { App.getLogger().info(message); System.out.println(message); } }