package com.cellbots.cellserv.server; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.cellbots.CellbotProtos; import com.cellbots.CellbotProtos.ControllerState; import com.cellbots.CellbotProtos.PhoneState; import com.cellbots.SchemaCellbotProtos; import com.dyuproject.protostuff.JsonIOUtil; import com.dyuproject.protostuff.Schema; public class RobotStateServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 6703781028562576421L; private static boolean useNumericFormat = false; public String getServletInfo() { return "Servlet for handeling communication with phone and sensor data"; } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String botID = ""; if(req.getParameter("BOTID") != null) { botID = req.getParameter("BOTID"); } Schema<com.cellbots.CellbotProtos.PhoneState> schema = new SchemaCellbotProtos.PhoneState.MessageSchema(); PhoneState ps = StateHolder.getInstance(botID).getPhoneState(); byte[] bytes; if (ps != null) { bytes = JsonIOUtil.toByteArray(ps, schema, useNumericFormat); res.getOutputStream().write(bytes); } } /** * Write survey results to output file in response to the POSTed form. Write a * "thank you" to the client. */ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // first, set the "content type" header of the response // res.setContentType("text/html"); try { CellbotProtos.PhoneState state = CellbotProtos.PhoneState.parseFrom(req.getInputStream()); String botID = ""; if(state.hasBotID()) { botID = state.getBotID(); } StateHolder.getInstance(botID).setPhoneState(state); if (StateHolder.getInstance(botID).newControllerStateAvailble()) { System.out.println("writing new controller msg"); ControllerState cs = StateHolder.getInstance(botID).getControllerState(); res.setStatus(HttpServletResponse.SC_OK); res.getOutputStream().write(cs.toByteArray()); } else { res.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } } catch (IOException e) { e.printStackTrace(); // toClient.println("A problem occured: could not write file: "+path + // "Please try again."); } } }