~ save before overhaul.

pull/1/head
Ivan Olexyn 5 years ago
parent 8c33c46e7e
commit f6559a73de

@ -28,7 +28,7 @@
</dependency>
<dependency>
<groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId>
<artifactId>helper</artifactId>
<version>0.1</version>
<scope>compile</scope>
</dependency>

@ -53,6 +53,7 @@ public class Forward extends HttpServlet {
});
handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread");
handleGetRideRequestDataThread.start();
try {handleGetRideRequestDataThread.join(); } catch (InterruptedException ignored) { }
} else {
Thread handleGetRequestThread = new Thread(() -> {
@ -62,6 +63,7 @@ public class Forward extends HttpServlet {
});
handleGetRequestThread.setName("handleGetRequestThread");
handleGetRequestThread.start();
try {handleGetRequestThread.join(); } catch (InterruptedException ignored) { }
}
}
@ -78,26 +80,25 @@ public class Forward extends HttpServlet {
final Ride ride;
//final ServletInputStream in = request.getInputStream();
final String parsedRequest = null; //new String(in.readAllBytes());
byte[] foo =null;
try{
final String parsedRequest = null; //new String(in.readAllBytes());
byte[] foo = null;
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(byteOut);
objOut.writeObject(request);
int br =0;
int br = 0;
foo = byteOut.toByteArray();
objOut.close();
byteOut.close();
br=1;
br = 1;
}catch (IOException e){
int br =0;
} catch (IOException e) {
int br = 0;
}
int br =0;
int br = 0;
synchronized (available) {
while (available.size() < 1) {
@ -181,6 +182,7 @@ public class Forward extends HttpServlet {
});
handlePostRideThread.setName("handlePostRideThread");
handlePostRideThread.start();
try {handlePostRideThread.join(); } catch (InterruptedException ignored) { }
}
@ -191,8 +193,6 @@ public class Forward extends HttpServlet {
protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
String jsonPayload = IOUtils.toString(request.getReader());
final Ride ride = new Ride(jsonPayload);
@ -203,7 +203,7 @@ public class Forward extends HttpServlet {
// ID is final/threadsafe
while (!(booked.containsKey(ride.getID()))) {
Thread.sleep(50);
Thread.sleep(500);
}
synchronized (booked) {

@ -1,8 +1,8 @@
#!/bin/bash
version="0.1"
file="target/misp-helper-${version}.jar"
file="target/helper-${version}.jar"
groupId="com.olexyn.misp.helper"
artifactId="misp-helper"
artifactId="helper"

@ -1,6 +1,9 @@
package com.olexyn.misp.helper;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
public class WebPrint {
@ -30,31 +33,37 @@ public class WebPrint {
StringBuilder sb = new StringBuilder();
sb.append("<table style=\"width:100%\">");
JSONObject obj = new JSONObject(list.get(0));
Map<String,Object> map = obj.toMap();
sb.append("<tr>");
sb.append("<th>");
sb.append("URL");
sb.append("</th>");
sb.append("<th>");
sb.append("Method");
sb.append("</th>");
sb.append("<th>");
sb.append("Query");
sb.append("</th>");
for (Map.Entry<String,Object> entry : map.entrySet()){
sb.append("<th>");
sb.append( entry.getKey());
sb.append("</th>");
}
sb.append("</tr>");
for (String entry : list) {
String[] split = entry.split(SPLIT);
JSONObject line = new JSONObject(entry);
Map<String,Object> map2 = line.toMap();
sb.append("<tr>");
sb.append("<td>");
sb.append(split[0]);
sb.append("</td>");
sb.append("<td>");
sb.append(split[1]);
sb.append("</td>");
sb.append("<td>");
sb.append(split[2]);
sb.append("</td>");
for (Map.Entry<String,Object> entry2 : map2.entrySet()){
sb.append("<td>");
sb.append(entry2.getValue().toString());
sb.append("</td>");
}
sb.append("</tr>");
}
return sb.toString();

@ -28,7 +28,7 @@
</dependency>
<dependency>
<groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId>
<artifactId>helper</artifactId>
<version>0.1</version>
<scope>compile</scope>
</dependency>

@ -3,6 +3,7 @@ package com.olexyn.misp.mirror;
import com.olexyn.misp.helper.Ride;
import com.olexyn.misp.helper.WebPrint;
import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@ -17,7 +18,7 @@ import java.util.Map;
public class Mirror extends HttpServlet {
protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core";
private final List<String> list = new ArrayList<>();
@ -26,13 +27,16 @@ public class Mirror extends HttpServlet {
private void addRequest(HttpServletRequest request){
synchronized (list) {
StringBuffer sb = new StringBuffer();
sb.append(request.getRequestURL().toString());
sb.append(WebPrint.SPLIT);
sb.append(request.getMethod());
sb.append(WebPrint.SPLIT);
sb.append(request.getQueryString());
list.add(sb.toString());
JSONObject obj = new JSONObject();
obj.put("RequestURL", request.getRequestURL());
obj.put("RemoteAddr" , request.getRemoteAddr());
obj.put("Method", request.getMethod());
obj.put("Param", request.getParameterMap().toString());
obj.put("QueryString", request.getQueryString());
obj.put("ContextPath",request.getContextPath());
list.add(obj.toString());
}
}
// #######

@ -27,7 +27,7 @@
</dependency>
<dependency>
<groupId>com.olexyn.misp.helper</groupId>
<artifactId>misp-helper</artifactId>
<artifactId>helper</artifactId>
<version>0.1</version>
<scope>compile</scope>
</dependency>

@ -18,7 +18,8 @@ class GetRequestRunnable implements Runnable {
synchronized (reverse.booked) {
if (reverse.booked.size() > 0) {
final Ride ride = reverse.booked.entrySet().iterator().next().getValue();
try { reverse.sendGetRequest(ride); } catch (IOException ignored) {}
Thread t = new Thread(() -> { try { reverse.sendGetRequest(ride); } catch (IOException ignored) { } });
t.start();
}
}
}

@ -18,7 +18,8 @@ class GetRideRequestDataRunnable implements Runnable {
synchronized (reverse.loaded) {
if (reverse.loaded.size() > 0) {
final Ride ride = reverse.loaded.entrySet().iterator().next().getValue();
try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) {}
Thread t = new Thread(() -> { try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) { } });
t.start();
}
}
}

@ -14,9 +14,12 @@ class PostRideRunnable implements Runnable {
public void run() {
while (true) {
synchronized (reverse.available) {
if (reverse.available.size() < reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) {
for (int i = 0; i < reverse.AVAILABLE_RIDES_OVERHEAD; i++) {
try {reverse.sendPostRide();} catch (IOException ignored) {}
if (Reverse.AVAILABLE_RIDES < Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) {
for (int i = Reverse.AVAILABLE_RIDES; i < Reverse.AVAILABLE_RIDES_OVERHEAD; i++) {
Reverse.AVAILABLE_RIDES++;
Thread t = new Thread(() -> { try { reverse.sendPostRide(); } catch (IOException ignored) { } });
t.start();
}
}
}

@ -15,16 +15,17 @@ import java.util.Map;
public class Reverse {
public String FORWARD_URL = "http://localhost:8090/bridge";
public String FORWARD_URL = "http://localhost:8090/forward";
public String APP_URL = "http://localhost:8090/app";
public int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
public int AVAILABLE_RIDES_OVERHEAD = 2;
public static int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
public static int AVAILABLE_RIDES_OVERHEAD = 2;
public static int AVAILABLE_RIDES = 0;
public final Map<Long, Ride> available = new HashMap<>();
public final Map<Long, Ride> booked = new HashMap<>();
public final Map<Long, Ride> loaded = new HashMap<>();
final Map<Long, Ride> available = new HashMap<>();
final Map<Long, Ride> booked = new HashMap<>();
final Map<Long, Ride> loaded = new HashMap<>();
public void start() {
@ -46,13 +47,23 @@ public class Reverse {
final Ride ride = new Ride();
synchronized (available) { available.put(ride.getID(), ride); }
synchronized (available) {
available.put(ride.getID(), ride);
}
final String result = send("POST", FORWARD_URL, ride.json());
synchronized (available) {
AVAILABLE_RIDES--;
available.remove(ride.getID());
ride.setRequest(new Ride(result).getRequest());
String _parsed = new Ride(result).getRequest();
String request = _parsed==null ? "" : _parsed;
ride.setRequest(request);
}
synchronized (booked) { booked.put(ride.getID(), ride); }
@ -72,14 +83,19 @@ public class Reverse {
void sendGetRideRequestData(Ride ride) throws IOException {
synchronized (loaded) {loaded.remove(ride.getID()); }
send("GET", FORWARD_URL, ride.json());
synchronized (loaded) {loaded.remove(ride.getID()); }
}
private static String send(String method, String urlString, String body) throws IOException {
private String send(String method, String urlString, String body) throws IOException {
if (method.equals("GET")){
int br =0;
}
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(method);
@ -104,7 +120,6 @@ public class Reverse {
}
}

@ -22,8 +22,8 @@ public class ReverseApp implements Runnable {
reverse.FORWARD_URL = "http://localhost:8090/forward";
reverse.APP_URL = "http://localhost:8090/app";
reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
reverse.AVAILABLE_RIDES_OVERHEAD = 2;
Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1;
Reverse.AVAILABLE_RIDES_OVERHEAD = 2;
reverse.start();
}

Loading…
Cancel
Save