diff --git a/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java b/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java
index 7e0b081..0946d20 100644
--- a/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java
+++ b/embedded/src/main/java/com/olexyn/misp/embedded/RunAll.java
@@ -1,6 +1,6 @@
package com.olexyn.misp.embedded;
-import com.olexyn.misp.reverse.ReverseApp;
+import com.olexyn.misp.reverse.Reverse;
public class RunAll {
@@ -12,7 +12,7 @@ public class RunAll {
Thread.sleep(2000);
- Thread reverseT = new Thread(new ReverseApp());
+ Thread reverseT = new Thread(new Reverse());
reverseT.start();
}
diff --git a/overview.png b/overview.png
index 56871ee..b70d0b5 100644
Binary files a/overview.png and b/overview.png differ
diff --git a/overview.uxf b/overview.uxf
index 878b565..480732a 100644
--- a/overview.uxf
+++ b/overview.uxf
@@ -4,46 +4,21 @@
UMLClass
- 1210
- 480
+ 1250
+ 410
90
- 30
-
- inet
-lt=-
-
-
-
- UMLClass
-
- 810
- 480
- 120
70
-mobile
-modem
-
-
-
- UMLClass
-
- 980
- 480
- 100
- 30
-
- webhost
-lt=-
-layer=-1
+inet
+lt=-
UMLClass
- 1210
- 520
+ 1250
+ 750
90
30
@@ -54,8 +29,8 @@ bg=#90CAF9
UMLClass
- 980
- 520
+ 1020
+ 750
100
30
@@ -67,8 +42,8 @@ layer=-1
Relation
- 730
- 570
+ 770
+ 820
280
50
@@ -80,8 +55,8 @@ Generated by Loop
Relation
- 1060
- 610
+ 1100
+ 860
200
40
@@ -93,8 +68,8 @@ fg=#1E88E5
UMLClass
- 650
- 520
+ 690
+ 750
100
30
@@ -106,21 +81,21 @@ layer=-1
Relation
- 730
- 720
+ 770
+ 970
280
50
lt=<<<-
-GET (Ride)(Request)
+POST (Ride)(Request)
(Data)
260.0;20.0;10.0;20.0
Relation
- 1060
- 740
+ 1100
+ 990
200
40
@@ -132,8 +107,8 @@ fg=#1E88E5
Relation
- 730
- 780
+ 770
+ 1030
280
40
@@ -144,8 +119,8 @@ OK (Ride)
UMLClass
- 450
- 520
+ 490
+ 750
80
30
@@ -156,8 +131,8 @@ bg=#90CAF9
Relation
- 490
- 650
+ 530
+ 900
190
40
@@ -169,8 +144,8 @@ fg=#1E88E5
Relation
- 490
- 700
+ 530
+ 950
190
40
@@ -182,8 +157,8 @@ fg=#1E88E5
Relation
- 730
- 630
+ 770
+ 880
280
40
@@ -194,22 +169,23 @@ OK (Ride)(Request)
UMLClass
- 450
- 480
+ 490
+ 410
300
- 30
+ 70
- localhost
+
+localhost
lt=-
UMLClass
- 420
- 450
+ 460
+ 810
910
- 400
+ 280
lt=..
@@ -219,8 +195,8 @@ layer=-10
UMLClass
- 990
- 590
+ 1030
+ 840
80
40
@@ -233,13 +209,13 @@ transparency=0
UMLClass
- 660
- 590
+ 700
+ 840
80
- 60
+ 210
- Available
-Rides
+
+Ride
bg=#FFF59D
transparency=0
@@ -247,8 +223,8 @@ transparency=0
UMLClass
- 990
- 630
+ 1030
+ 880
80
110
@@ -262,36 +238,8 @@ layer=1
UMLClass
- 660
- 650
- 80
- 70
-
- Booked
-Rides
-bg=#E6EE9C
-transparency=0
-
-
-
- UMLClass
-
- 660
- 720
- 80
- 80
-
- Loaded
-Rides
-bg=#A5D6A7
-transparency=0
-
-
-
- UMLClass
-
- 990
- 740
+ 1030
+ 990
80
60
@@ -304,32 +252,32 @@ transparency=0
Relation
- 1240
- 540
+ 1280
+ 770
30
- 310
+ 320
lt=-
fg=#1E88E5
- 10.0;10.0;10.0;290.0
+ 10.0;10.0;10.0;300.0
Relation
- 480
- 540
+ 520
+ 770
30
- 310
+ 320
lt=-
fg=#1E88E5
- 10.0;10.0;10.0;290.0
+ 10.0;10.0;10.0;300.0
UMLClass
- 1240
- 630
+ 1280
+ 880
20
130
@@ -342,8 +290,8 @@ layer=4
UMLClass
- 480
- 670
+ 520
+ 920
20
50
@@ -356,27 +304,171 @@ layer=4
Relation
- 1020
- 540
+ 1060
+ 770
30
- 310
+ 320
lt=-
fg=#5E35B1
layer=-4
- 10.0;10.0;10.0;290.0
+ 10.0;10.0;10.0;300.0
Relation
+
+ 730
+ 770
+ 30
+ 320
+
+ lt=-
+fg=#5E35B1
+layer=-4
+ 10.0;10.0;10.0;300.0
+
+
+ UMLClass
+
+ 700
+ 590
+ 80
+ 50
+
+ Check
+Supply
+bg=#FFF59D
+transparency=0
+
+
+
+ UMLClass
+
+ 850
+ 410
+ 120
+ 70
+
+
+mobile
+modem
+
+
+
+ UMLClass
+
+ 1020
+ 410
+ 100
+ 70
+
+
+webhost
+lt=-
+layer=-1
+
+
+
+ UMLClass
+
+ 1020
+ 510
+ 100
+ 30
+
+ forward
+bg=#B39DDB
+layer=-1
+
+
+
+ UMLClass
690
- 540
+ 510
+ 100
+ 30
+
+ reverse
+bg=#B39DDB
+layer=-1
+
+
+
+ UMLClass
+
+ 460
+ 570
+ 910
+ 110
+
+
+lt=..
+layer=-10
+
+
+
+ UMLClass
+
+ 1030
+ 590
+ 80
+ 50
+
+ Available
+Rides
+bg=#FFF59D
+transparency=0
+
+
+
+ Relation
+
+ 1060
+ 530
+ 30
+ 150
+
+ lt=-
+fg=#5E35B1
+layer=-4
+ 10.0;10.0;10.0;130.0
+
+
+ Relation
+
+ 730
+ 530
30
- 310
+ 150
lt=-
fg=#5E35B1
layer=-4
- 10.0;10.0;10.0;290.0
+ 10.0;10.0;10.0;130.0
+
+
+ Relation
+
+ 770
+ 580
+ 280
+ 40
+
+ lt=<<<-
+POST (Available)
+ 260.0;20.0;10.0;20.0
+
+
+ Relation
+
+ 770
+ 610
+ 280
+ 40
+
+ lt=<<<.
+OK (# Available)
+ 10.0;20.0;260.0;20.0
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/CheckSuppyR.java b/reverse/src/main/java/com/olexyn/misp/reverse/CheckSuppyR.java
new file mode 100644
index 0000000..38d29b9
--- /dev/null
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/CheckSuppyR.java
@@ -0,0 +1,39 @@
+package com.olexyn.misp.reverse;
+
+import org.json.JSONObject;
+
+public class CheckSuppyR implements Runnable {
+
+ private int available;
+ public int CHECK_SUPPLY_INTERVAL = 100;
+
+ private Reverse reverse;
+
+ public CheckSuppyR(Reverse reverse) {
+ this.reverse = reverse;
+ }
+
+
+ @Override
+ public void run() {
+ while (true) {
+ JSONObject obj = new JSONObject().put("available", 0);
+
+ try {
+ String result = Tools.send("POST", reverse.FORWARD_URL, obj.toString());
+
+ JSONObject resultObj = new JSONObject(result);
+
+ available = resultObj.getInt("available");
+
+ Thread.sleep(CHECK_SUPPLY_INTERVAL);
+
+ } catch (Exception ignored) { }
+ }
+
+
+ }
+
+
+ public int getAvailable() { return available; }
+}
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/JourneyGenerator.java b/reverse/src/main/java/com/olexyn/misp/reverse/JourneyGenerator.java
new file mode 100644
index 0000000..a045a66
--- /dev/null
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/JourneyGenerator.java
@@ -0,0 +1,36 @@
+package com.olexyn.misp.reverse;
+
+
+public class JourneyGenerator implements Runnable {
+
+ public int OVERHEAD = 8;
+ public int CHECK_DEPLETION_INTERVAL = 500;
+ public int START_NEW_JOURNEY_INTERVAL = 100;
+
+ private Reverse reverse;
+ private CheckSuppyR checkSuppyR;
+
+ public JourneyGenerator(Reverse reverse , CheckSuppyR checkSuppyR) {
+ this.reverse = reverse;
+ this.checkSuppyR = checkSuppyR;
+ }
+
+
+
+ @Override
+ public void run() {
+
+ while (true) {
+ try {
+ Thread journeyT = new Thread(new JourneyR(reverse));
+ journeyT.setName("journeyT");
+ journeyT.start();
+
+ while (checkSuppyR.getAvailable() > OVERHEAD) { Thread.sleep(CHECK_DEPLETION_INTERVAL); }
+
+ Thread.sleep(START_NEW_JOURNEY_INTERVAL);
+
+ } catch (Exception ignored) { }
+ }
+ }
+}
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/JourneyR.java b/reverse/src/main/java/com/olexyn/misp/reverse/JourneyR.java
new file mode 100644
index 0000000..d08caad
--- /dev/null
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/JourneyR.java
@@ -0,0 +1,53 @@
+package com.olexyn.misp.reverse;
+
+import com.olexyn.misp.helper.Ride;
+
+import java.io.IOException;
+
+public class JourneyR implements Runnable {
+
+ private Reverse reverse;
+
+ public JourneyR(Reverse reverse) {
+ this.reverse = reverse;
+ }
+
+
+ @Override
+ public void run() {
+ try {
+ Ride _ride = sendPostRide();
+ _ride = sendGetRequest(_ride);
+ sendPostRideRequestData(_ride);
+ } catch (Exception ignored) { }
+ }
+
+
+ Ride sendPostRide() throws IOException {
+
+ final Ride ride = new Ride();
+
+ final String result = Tools.send("POST", reverse.FORWARD_URL, ride.json());
+
+ String _req = new Ride(result).getRequest();
+ String request = (_req == null) ? "" : _req;
+ ride.setRequest(request);
+
+ return ride;
+ }
+
+
+ Ride sendGetRequest(Ride ride) throws IOException {
+
+ final String result = Tools.send("GET", reverse.APP_URL, ride.getRequest());
+ ride.setData(result);
+
+ return ride;
+ }
+
+
+ void sendPostRideRequestData(Ride ride) throws IOException {
+
+ Tools.send("POST", reverse.FORWARD_URL, ride.json());
+ }
+}
\ No newline at end of file
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/README.md b/reverse/src/main/java/com/olexyn/misp/reverse/README.md
index 43d0100..b306e30 100644
--- a/reverse/src/main/java/com/olexyn/misp/reverse/README.md
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/README.md
@@ -1,3 +1,16 @@
-* Run from `ReverseApp` :
- * as `main()`
- * or as `Runnable` from somewhere else.
\ No newline at end of file
+#### Overview
+* `Reverse`
+ * Core
+ * Starts Threads
+ * Coordinates
+ * Launch from here
+ * as `main()`
+ * or as `Runnable` from somewhere else.
+* `CheckSupply`
+ * Runnable
+ * Asks *forward* about supply.
+* `Journey`
+ * Runnable
+ * Journey fo a `Ride` through the App.
+* `Tools`
+ * Performs the actual request.
\ No newline at end of file
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java
index 4308045..9725eb0 100644
--- a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java
@@ -1,117 +1,31 @@
package com.olexyn.misp.reverse;
-import com.olexyn.misp.helper.Ride;
-import org.json.JSONObject;
+public class Reverse implements Runnable {
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-
-public class Reverse {
-
-
- private int available;
public String FORWARD_URL = "http://localhost:8090/forward";
public String APP_URL = "http://localhost:8090/app";
- public void start() throws IOException {
-
- sendPostAvailable();
- sendPostRide();
-
-
- }
-
-
- void sendPostRide() throws IOException {
-
- final Ride ride = new Ride();
-
- final String result = send("POST", FORWARD_URL, ride.json());
-
-
-
-
-
-
- String _req = new Ride(result).getRequest();
- String request = (_req == null) ? "" : _req;
- ride.setRequest(request);
-
- sendGetRequest(ride);
- }
-
-
- void sendGetRequest(Ride ride) throws IOException {
+ public void start() {
- final String result = send("GET", APP_URL, ride.getRequest());
- ride.setData(result);
+ CheckSuppyR checkSuppyR = new CheckSuppyR(this);
- sendPostRideRequestData(ride);
- }
-
-
- void sendPostRideRequestData(Ride ride) throws IOException {
-
- send("POST", FORWARD_URL, ride.json());
-
- //sendPostRide();
+ Thread checkSupplyT = new Thread(checkSuppyR);
+ checkSupplyT.setName("checkSupplyT");
+ checkSupplyT.start();
+ Thread journeyGeneratorT = new Thread(new JourneyGenerator(this, checkSuppyR));
+ journeyGeneratorT.setName("journeyGeneratorT");
+ journeyGeneratorT.start();
}
- void sendPostAvailable() throws IOException {
- JSONObject obj = new JSONObject();
- obj.put("available", 0);
- String result = send("POST", FORWARD_URL, obj.toString());
- JSONObject resultObj = new JSONObject(result);
- available = resultObj.getInt("available");
-
- }
-
-
-
-
- private String send(String method, String urlString, String body) throws IOException {
+ public static void main(String... args) { new Reverse().start(); }
- URL url = new URL(urlString);
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setRequestMethod(method);
-
-
- boolean getToForward = method.equals("GET") && urlString.contains("forward");
-
- if (method.equals("POST") || getToForward) {
- connection.setDoOutput(true);
-
-
- DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
-
- if (body != null) {
- outputStream.writeBytes(body);
- }
-
- outputStream.flush();
- outputStream.close();
-
- }
-
-
- int i = connection.getResponseCode();
- BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- String out;
- StringBuilder sb = new StringBuilder();
- while ((out = in.readLine()) != null) { sb.append(out); }
- in.close();
- return sb.toString();
- }
+ @Override
+ public void run() { start(); }
}
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java b/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java
deleted file mode 100644
index 28d69e2..0000000
--- a/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.olexyn.misp.reverse;
-
-import java.io.IOException;
-
-public class ReverseApp implements Runnable {
-
-
- public static void main(String... args) throws IOException {
- new ReverseApp().doRun();
- }
-
-
- @Override
- public void run() {
-
- try {
- doRun();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
-
-
- private void doRun() throws IOException {
- Reverse reverse = new Reverse();
-
- reverse.FORWARD_URL = "http://localhost:8090/forward";
- reverse.APP_URL = "http://localhost:8090/app";
-
-
-
- reverse.start();
- }
-}
diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java b/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java
new file mode 100644
index 0000000..5fe3c03
--- /dev/null
+++ b/reverse/src/main/java/com/olexyn/misp/reverse/Tools.java
@@ -0,0 +1,46 @@
+package com.olexyn.misp.reverse;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class Tools {
+
+
+ static String send(String method, String urlString, String body) throws IOException {
+
+ URL url = new URL(urlString);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod(method);
+
+
+ boolean getToForward = method.equals("GET") && urlString.contains("forward");
+
+ if (method.equals("POST") || getToForward) {
+ connection.setDoOutput(true);
+
+
+ DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
+
+ if (body != null) {
+ outputStream.writeBytes(body);
+ }
+
+ outputStream.flush();
+ outputStream.close();
+
+ }
+
+
+ int i = connection.getResponseCode();
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String out;
+ StringBuilder sb = new StringBuilder();
+ while ((out = in.readLine()) != null) { sb.append(out); }
+ in.close();
+ return sb.toString();
+ }
+}