Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18923/src/edu/harvard/syrah/pyxida/api
Modified Files:
ExternalAPI.java XMLRPC_API.java
Log Message:
Added support for an HTTP interface.
If you go to
http://nodename:55501
you'll get the current coord of the node.
Note that XMLRPC requests now need to be directed to
http://nodename:55501/xmlrpc
-- prp
Index: ExternalAPI.java
===================================================================
RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/ExternalAPI.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** ExternalAPI.java 6 Dec 2006 22:03:54 -0000 1.11
--- ExternalAPI.java 13 Dec 2006 14:23:12 -0000 1.12
***************
*** 6,9 ****
--- 6,10 ----
import edu.harvard.syrah.prp.Log;
+ import edu.harvard.syrah.prp.NetUtil;
import edu.harvard.syrah.pyxida.nc.NCManager;
import edu.harvard.syrah.pyxida.nc.lib.Coordinate;
***************
*** 13,19 ****
import edu.harvard.syrah.sbon.comm.AddressFactory;
import edu.harvard.syrah.sbon.comm.AddressIF;
! public class ExternalAPI implements ExternalAPIIF {
private static final Log log = new Log(ExternalAPI.class);
private NCManager ncManager;
--- 14,33 ----
import edu.harvard.syrah.sbon.comm.AddressFactory;
import edu.harvard.syrah.sbon.comm.AddressIF;
+ import edu.harvard.syrah.sbon.comm.http.HTTPCallbackHandler;
! public class ExternalAPI extends HTTPCallbackHandler implements ExternalAPIIF {
private static final Log log = new Log(ExternalAPI.class);
+
+ private static String HTTP_COORD_BEGIN =
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
+ + "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">"
+ + "<head>"
+ + "<title>Pyxida Node</title>"
+ + "</head>"
+ + "<body>";
+
+ private static String HTTP_COORD_END =
+ "</body>"
+ + "</html>";
private NCManager ncManager;
***************
*** 189,191 ****
--- 203,219 ----
}
+ @Override
+ protected void cb(CBResult result, AddressIF remoteAddr, String path, String requestData,
+ CB2<String, byte[]> cbResponse) {
+
+ Coordinate coord = ncManager.getLocalCoord();
+
+ String response =
+ HTTP_COORD_BEGIN
+ + "<a href=\"http://pyxida.sourceforge.net\"><img style=\"float: left; \" alt=\"Pyxida Logo\" src=\"http://pyxida.sourceforge.net/img/pyxida4-scaled.jpg\"/></a>"
+ + "Local Network Coordinate: " + coord + "\n"
+ + HTTP_COORD_END;
+ cbResponse.call(result, "text/html", NetUtil.toHTTPBytes(response));
+ }
+
}
Index: XMLRPC_API.java
===================================================================
RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/api/XMLRPC_API.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** XMLRPC_API.java 1 Dec 2006 17:19:51 -0000 1.4
--- XMLRPC_API.java 13 Dec 2006 14:23:12 -0000 1.5
***************
*** 1,4 ****
--- 1,5 ----
package edu.harvard.syrah.pyxida.api;
+ import edu.harvard.syrah.prp.Log;
import edu.harvard.syrah.sbon.async.Config;
import edu.harvard.syrah.sbon.async.CallbacksIF.CB0;
***************
*** 9,12 ****
--- 10,14 ----
public class XMLRPC_API implements APIInstanceIF {
+ private static final Log log = new Log(XMLRPC_API.class);
private static final String XMLRPC_OBJECT_NAME = "pyxida";
***************
*** 24,30 ****
apiComm = new XMLRPCComm();
int port = Integer.parseInt(Config.getProperty("pyxida.api.port", "55501"));
AddressIF apiAddress = AddressFactory.createServer(port);
! apiComm.registerHandler(XMLRPC_OBJECT_NAME, api);
!
apiComm.initServer(apiAddress, cbDone);
}
--- 26,34 ----
apiComm = new XMLRPCComm();
int port = Integer.parseInt(Config.getProperty("pyxida.api.port", "55501"));
+ log.debug("Using port=" + port);
AddressIF apiAddress = AddressFactory.createServer(port);
! apiComm.registerXMLRPCHandler(XMLRPC_OBJECT_NAME, api);
! apiComm.registerHandler("/", api);
!
apiComm.initServer(apiAddress, cbDone);
}
|