Merge branch 'master' into modular
This commit is contained in:
commit
15b9abbc4a
|
@ -0,0 +1,13 @@
|
||||||
|
Cortex: P2P in JavaScript
|
||||||
|
Dan Ballard (2010-2011) <dan@mindstab.net>
|
||||||
|
cortex.mindstab.net
|
||||||
|
|
||||||
|
Cortex is a P2P framework that runs without installation in your web browser. It's one small part Java Applet (HTTP server) and one large part JavaScript. The JavaScript is all the P2P networking code and utilities you need to get off the ground and go.
|
||||||
|
|
||||||
|
Cortex was a school project for CS from late 2009 and early 2010 that won second place in the BCNet "Broadband Innovation challenge". On top of the P2P network, a distributed processing system was written to further demonstrate that mature complicated applications can be written in JavaScript.
|
||||||
|
|
||||||
|
As happens with school projects, the Cortex code base was a bit of a mess when done due to massive time constraints and due dates. I am slowly trying to clean up the codebase now in my spare time.
|
||||||
|
|
||||||
|
Step 1 was the longpull branch which added a few nice graphics feedbacl tweeks to the java applet and greatly sped up communication by making it use AJAX longpull.
|
||||||
|
|
||||||
|
Step 2 is to modularize it to make it more extensible
|
|
@ -0,0 +1,63 @@
|
||||||
|
import java.applet.*;
|
||||||
|
//import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import javax.swing.Timer;
|
||||||
|
import java.awt.image.*;
|
||||||
|
|
||||||
|
import java.lang.*;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.*;
|
||||||
|
|
||||||
|
class Server implements Runnable {
|
||||||
|
|
||||||
|
private ServerSocket server;
|
||||||
|
|
||||||
|
private ResManager res;
|
||||||
|
private Applet applet;
|
||||||
|
|
||||||
|
public Server(ResManager r, String codeBase, Applet a) {
|
||||||
|
applet = a;
|
||||||
|
res = r;
|
||||||
|
res.putNodeData("originURL", codeBase);
|
||||||
|
res.reloadSite();
|
||||||
|
|
||||||
|
//res.alert("Loaded site");
|
||||||
|
|
||||||
|
boolean bound = false;
|
||||||
|
while(!bound)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
server = new ServerSocket(res.PORT);
|
||||||
|
bound = true;
|
||||||
|
} catch (IOException e) {
|
||||||
|
res.PORT++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
applet.repaint();
|
||||||
|
res.openDebugLog("me");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
//res.alert("running server");
|
||||||
|
while (!res.killSwitch) {
|
||||||
|
|
||||||
|
Socket sock = server.accept();
|
||||||
|
//res.alert("ACCEPTED!");
|
||||||
|
|
||||||
|
new Thread(new ConnHandler(sock, res)).start();
|
||||||
|
|
||||||
|
//handler.run();
|
||||||
|
//res.alert("RESTARTING LOOP");
|
||||||
|
}
|
||||||
|
server.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("IOException in init(): " + e.toString());
|
||||||
|
res.error( "IOException in init(): " + e.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
applet.repaint();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue