|
From: Peter P. <pr...@us...> - 2006-12-13 14:23:15
|
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); } |