+ rework messages.

pull/1/head
Ivan Olexyn 5 years ago
parent 7231b49672
commit f71be79fc7

@ -6,9 +6,10 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
@ -17,247 +18,180 @@ import java.util.List;
public class ClientServlet extends HttpServlet {
private static final String MISP_BRIDGE_URL = "http://localhost:9090/mispbridge/core";
protected static final String MISP_BRIDGE_URL = "http://localhost:9090/mispbridge/core";
public List<Ride> availableRides = new ArrayList<>();
public List<Ride> reservedRides = new ArrayList<>();
private List<Ride> newRequests = new ArrayList<>();
private List<Ride> forwardedRequests = new ArrayList<>();
private List<Ride> newData = new ArrayList<>();
private List<Ride> forwardedData = new ArrayList<>();
public List<Ride> pendingRequests = new ArrayList<>();
public List<Ride> pendingData = new ArrayList<>();
public ClientServlet() {
new DoClientThings().start(this);
}
// Thread : while AvailableRides < 256 , add Ride to AvailableRides , send POST (Ride) [DONE]
new Thread(new PostRideRunnable(this)).start();
// Thread : for Rides in ReservedRides, send GET (Ride)
new Thread(new GetRideRunnable(this)).start();
}
/**
* # send POST (Ride)
* Generated by Loop
*/
Ride sendPostRide(Ride oldRide) throws IOException, ServletException {
HttpURLConnection connection = ConnectionHelper.make("POST", MISP_BRIDGE_URL);
// send POST (Ride)
availableRides.add(oldRide);
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(oldRide.json());
outputStream.flush();
outputStream.close();
// handle OK (Ride)
// remove Ride from AvailableRides
// add Ride to ReservedRides
// handle OK (Ride)(Request)
// remove Ride from AvailableRides
// add Request to NewRequest
// send GET (Request)
// remove Ride from NewRequest
// add Ride to ForwardedRequest
// handle OK (Data)
// remove Ride from ForwardedRequest
// add Ride to NewData
// send GET (Ride)(Data)
// remove Ride from NewData
// add Ride to ForwardedData
// handle OK (EOL)
// remove Ride from ForwardedData
// add Ride to EOl
// # send POST (Ride)
// # send GET (Ride)
// # send GET (Request)
// # 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("<html><head><title>MispClient</title></head><body bgcolor=white>");
writer.println("</body></html>");
if (connection.getResponseCode() == 200) {
Ride parsedRide = ConnectionHelper.parseRide(connection);
if (parsedRide.equals(oldRide)) {
availableRides.remove(oldRide);
reservedRides.add(parsedRide);
return parsedRide;
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
}
private String make2ColumnRow(String one, String two) {
String sb = "<tr>" + "<td>" + one + "</td>" + "<td>" + two + "</td>" + "</tr>";
return sb;
return null;
}
private String sendGet() throws IOException {
URL url = new URL(MISP_BRIDGE_URL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// By default it is GET request
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", "USER_AGENT");
int responseCode = con.getResponseCode();
System.out.println("Sending get request : " + url);
System.out.println("Response code : " + responseCode);
// Reading response from input Stream
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuffer response = new StringBuffer();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
return response.toString();
//printing result from response
}
/**
* # send GET (Ride)
* Generated by Loop
*/
Ride sendGetRide(Ride oldRide) throws IOException {
Ride sendPostRide(Ride ride) throws IOException, ServletException {
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);
URL url = new URL(MISP_BRIDGE_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// prepare
connection.setRequestMethod("POST");
connection.setRequestProperty("User-Agent", "USER_AGENT");
connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
connection.setRequestProperty("Content-Type", "application/json");
availableRides.add(ride);
// send POST
// send GET (Ride)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.json());
outputStream.writeBytes(oldRide.json());
outputStream.flush();
outputStream.close();
// read OK
int responseCode = connection.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
// handle OK (Ride)(Request)
// remove Ride from ReservedRides
// add Ride to PendingRequests
// send GET (Request)
if (connection.getResponseCode() == 200) {
Ride parsedRide = ConnectionHelper.parseRide(connection);
if (parsedRide.getRequest() != null) {
reservedRides.remove(oldRide);
pendingRequests.add(parsedRide);
sendGetRequest(parsedRide);
return parsedRide;
}
in.close();
// process
availableRides.remove(ride);
reservedRides.add(ride);
return ride;
}
return null;
}
/**
* # send GET (Request) to App
*/
Ride sendGetRequest(Ride oldRide) throws IOException {
Ride sendGetRide(Ride ride) throws IOException {
// send FOO
// TODO make sure as many as possible tyes of requests can be forwarded.
URL url = new URL(MISP_BRIDGE_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// handle OK (Data)
// remove Ride from PendingRequests
// add Ride to PendingData
// send GET (Ride)(Data)
String data = "DATA";
pendingRequests.remove(oldRide);
Ride newRide = oldRide;
newRide.setData(data);
pendingData.add(newRide);
sendGetRideRequestData(newRide);
return newRide;
}
// 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");
/**
* # send GET (Ride)(Request)(Data)
*/
Ride sendGetRideRequestData(Ride oldRide) throws IOException {
// send POST
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);
// send GET (Ride)(Request)(Data)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.json());
outputStream.writeBytes(oldRide.json());
outputStream.flush();
outputStream.close();
// read OK
int responseCode = connection.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
// handle OK (EOL)
// remove Ride from PendingData
// add Ride to EOl
if (connection.getResponseCode() == 200) {
Ride shellIdRide = ConnectionHelper.parseRide(connection);
if (shellIdRide.getRideID() != null) {
pendingData.remove(oldRide);
}
in.close();
Ride rideRequest = new Ride(response.toString());
// process
// TODO add checks
reservedRides.remove(ride);
newRequests.add(rideRequest);
sendGetRequest(rideRequest.getRequest());
newRequests.remove(rideRequest);
forwardedRequests.add(rideRequest);
return ride;
}
return null;
}
Ride sendGetRequest(String request) throws IOException {
URL url = new URL(MISP_BRIDGE_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// prepare
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
// TODO replace
Ride ride = new Ride();
// send POST
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.json());
outputStream.flush();
outputStream.close();
}
// read OK
int responseCode = connection.getResponseCode();
/**
* While AvailableRides < 256 ,
* add Ride to AvailableRides ,
* send POST (Ride).
*/
class PostRideRunnable implements Runnable {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
ClientServlet clientServlet;
while ((output = in.readLine()) != null) {
response.append(output);
public PostRideRunnable(ClientServlet clientServlet) {
this.clientServlet = clientServlet;
}
in.close();
@Override
public void run() {
while (true) {
if (clientServlet.availableRides.size() < 1) {
try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException e) { e.printStackTrace(); }
}
try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); }
}
}
}
Ride rideRequest = new Ride(response.toString());
/**
* For Rides in ReservedRides,
* send GET (Ride).
*/
class GetRideRunnable implements Runnable {
ClientServlet clientServlet;
// process
// TODO add checks
reservedRides.remove(ride);
newRequests.add(ride);
return ride;
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(); }
}
}
}

@ -1,71 +0,0 @@
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(); }
}
}
}
}
Loading…
Cancel
Save