diff --git a/mispclient/src/ClientServlet.java b/mispclient/src/ClientServlet.java index f46af10..8c91b95 100644 --- a/mispclient/src/ClientServlet.java +++ b/mispclient/src/ClientServlet.java @@ -15,32 +15,32 @@ import java.util.ArrayList; import java.util.List; -public final class ClientServlet extends HttpServlet { +public class ClientServlet extends HttpServlet { private static final String MISP_BRIDGE_URL = "http://localhost:9090/mispbridge/core"; - private List availableRides = new ArrayList<>(); - private List reservedRides = new ArrayList<>(); + public List availableRides = new ArrayList<>(); + public List reservedRides = new ArrayList<>(); private List newRequests = new ArrayList<>(); private List forwardedRequests = new ArrayList<>(); private List newData = new ArrayList<>(); private List forwardedData = new ArrayList<>(); - public ClientServlet() { + new DoClientThings().start(this); + } + + + + + + + + - // Thread 1 - // get ride count from mispbridge - // while ride count < max - // add POST (Ride) to AvailableRides - // send POST (Ride) - // Thread 2 - // for Rides in ReservedRides, - // send GET (Ride) - } // handle OK (Ride) // remove Ride from AvailableRides @@ -73,47 +73,22 @@ public final class ClientServlet extends HttpServlet { // # send GET (Ride)(Data) - + @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); - writer.println(""); - writer.println(""); - writer.println("MispClient"); - writer.println(""); - writer.println(""); - writer.println(""); - writer.println(""); - writer.println(""); - writer.println(""); - writer.println(""); - writer.println(make2ColumnRow("foo", "bar")); - - - writer.println("
"); - writer.println(""); - writer.println(""); - writer.println("

Sample Application Servlet

"); - writer.println("This is the output of a servlet that is part of"); - writer.println("the Hello, World application."); - writer.println("
"); - writer.println(""); - writer.println(""); + writer.println("MispClient"); + writer.println(""); } + @Override + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + + } private String make2ColumnRow(String one, String two) { - StringBuilder sb = new StringBuilder(); - sb.append(""); - sb.append(""); - sb.append(one); - sb.append(""); - sb.append(""); - sb.append(two); - sb.append(""); - sb.append(""); - - return sb.toString(); + String sb = "" + "" + one + "" + "" + two + "" + ""; + return sb; } @@ -151,7 +126,7 @@ public final class ClientServlet extends HttpServlet { } - private void sendPostRide() throws IOException { + Ride sendPostRide(Ride ride) throws IOException, ServletException { URL url = new URL(MISP_BRIDGE_URL); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); @@ -162,7 +137,6 @@ public final class ClientServlet extends HttpServlet { connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); connection.setRequestProperty("Content-Type", "application/json"); - Ride ride = new Ride(); availableRides.add(ride); @@ -190,10 +164,11 @@ public final class ClientServlet extends HttpServlet { // process availableRides.remove(ride); reservedRides.add(ride); + return ride; } - private void sendGetRide(Ride ride) throws IOException { + Ride sendGetRide(Ride ride) throws IOException { URL url = new URL(MISP_BRIDGE_URL); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); @@ -205,8 +180,6 @@ public final class ClientServlet extends HttpServlet { connection.setRequestProperty("Content-Type", "application/json"); - - // send POST connection.setDoOutput(true); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); @@ -239,18 +212,16 @@ public final class ClientServlet extends HttpServlet { newRequests.remove(rideRequest); forwardedRequests.add(rideRequest); - + return ride; } - private void sendGetRequest(String request) throws IOException { + Ride sendGetRequest(String request) throws IOException { URL url = new URL(MISP_BRIDGE_URL); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // prepare connection.setRequestMethod("GET"); - connection.setRequestProperty("User-Agent", "USER_AGENT"); - connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); connection.setRequestProperty("Content-Type", "application/json"); @@ -285,6 +256,7 @@ public final class ClientServlet extends HttpServlet { // TODO add checks reservedRides.remove(ride); newRequests.add(ride); + return ride; } diff --git a/mispclient/src/DoClientThings.java b/mispclient/src/DoClientThings.java new file mode 100644 index 0000000..6a67422 --- /dev/null +++ b/mispclient/src/DoClientThings.java @@ -0,0 +1,71 @@ +import javax.servlet.ServletException; +import java.io.IOException; + +public class DoClientThings { + + + public void start(ClientServlet clientServlet) { + // Thread 1 + // while AvailableRides < 256 , add Ride to AvailableRides , send POST (Ride) [DONE] + Runnable postRideRunnable = new PostRideRunnable(clientServlet); + Thread postRideThread = new Thread(postRideRunnable); + postRideThread.start(); + + // Thread 2 + // for Rides in ReservedRides, send GET (Ride) [DONE] + Runnable getRideRunnable = new GetRideRunnable(clientServlet); + Thread getRideThread = new Thread(getRideRunnable); + getRideThread.start(); + } + + + /** + * While AvailableRides < 256 , + * add Ride to AvailableRides , + * send POST (Ride). + */ + private class PostRideRunnable implements Runnable { + + ClientServlet clientServlet; + + public PostRideRunnable(ClientServlet clientServlet) { + this.clientServlet = clientServlet; + } + + @Override + public void run() { + while (true) { + if (clientServlet.availableRides.size() < 256) { + try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException e) { e.printStackTrace(); } + } + try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } + } + } + } + + + /** + * For Rides in ReservedRides, + * send GET (Ride). + */ + private class GetRideRunnable implements Runnable { + ClientServlet clientServlet; + + public GetRideRunnable(ClientServlet clientServlet) { + this.clientServlet = clientServlet; + } + + @Override + public void run() { + while (true) { + for (Ride reservedRide : clientServlet.reservedRides) { + try {clientServlet.sendGetRide(reservedRide);} catch (IOException e) { e.printStackTrace(); } + } + try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } + } + } + } + +} + +