package alma.logoot.network;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import alma.logoot.network.p2p.P2PLayer;
/**
* Servlet implementation class SendData
*/
public class SendData extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String SERVERADDR = "127.0.0.1";
/**
* Max number of host connected to the node.
*/
private static final int MAX_HOST = 100;
private static int id = 0;
static final int PORTSEND = 9992;
public static final int PORTCLIENT = 9990;
private P2PLayer p2p = P2PLayer.getInstance();
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if (action.equals("send")) {
send(request, response);
} else if (action.equals("register")) {
register(request, response);
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public void destroy() {
System.out.println("End servlet: " + getServletInfo());
super.destroy();
}
public void send(HttpServletRequest request, HttpServletResponse response) throws UnknownHostException, IOException {
String message = request.getParameter("message");
sendToLocalUser(message);
sendToP2PUser(message);
}
private void sendToP2PUser(String message) {
System.out.println("Send on P2P network: " + message);
p2p.sendMessage(message);
}
private void sendToLocalUser(String message) throws UnknownHostException,
IOException {
Socket clientSocket = new Socket(SERVERADDR, PORTSEND);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
outToServer.write(message.getBytes());
clientSocket.close();
System.out.println("NetworkServiceImple.send fin");
}
public void register(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// TODO: Get context from other client.
long idRegistration = p2p.getPeerID() * MAX_HOST + ++id;
response.setContentType("text/json;charset=utf-8;");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(idRegistration);
}
}