Skip to content

Commit

Permalink
Modify internal architecture to support easy parameterization.
Browse files Browse the repository at this point in the history
  • Loading branch information
Conor Flynn committed Oct 8, 2022
1 parent 2b3577a commit 6d21f64
Show file tree
Hide file tree
Showing 24 changed files with 482 additions and 460 deletions.
Binary file modified Data Engine/Documents/Internal Manual/Packet Spreadsheet.xlsx
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public Core() {

this.connect(out, crl, eng, str);

Response response = this.send("ENG", "STRT", "");
Response response = this.send("ENG", "STRT");
if(response.code() != 200)
Logger.terminate(response);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,17 @@ public Engine() {
super("engine", "ENG");
}

// source: source of the local stream to initialize
public Response processSTRT(Packet packet) {
// start output processes:
Response out_response = send("OUT", "STRT", "");
Response out_response = send("OUT", "STRT");
if(out_response.code() != 200)
return out_response;

// start local stream handler processes:
String lsh_type = Config.getProperty("stream", "local.stream.type");
if(!lsh_type.equals("null")) {
Response lsh_response = send("LSH", "INIT", lsh_type);
Response lsh_response = send("LSH", "INIT", "local_source", lsh_type);
if(lsh_response.code() != 200)
return lsh_response;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,13 @@ public static final void terminate(Response response) {
}

private static final String packetFormat(Packet packet) {
return String.format("[%s] [%-10s] PACKET - [%3s -> %3s] [%4s] [%s] [%s]",
return String.format("[%s] [%-10s] PACKET - [%3s -> %3s] [%4s] [%s]",
time(),
Thread.currentThread().getName(),
packet.getSender(),
packet.getTag(),
packet.getSubTag(),
packet.getData(),
packet.getSubData());
packet.getData());
}

private static final String responseFormat(Response response) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.framework.interfaces;

import java.util.HashMap;

/**
* Interface used for requiring components to have a unique hash based on the passed data.
* The hash does not require any standard formatting so long as it is unique.
Expand All @@ -13,8 +15,8 @@ public interface Hash {
* Unique hash based on the passed data for identification. Algorithm is recommended to be
* a salted SHA-512.
*
* @param data {@link String} which holds all data, primarily that used for authorization.
* @param data {@link HashMap<String, String>} which holds all data, primarily that used for authorization.
* @return {@link String} that contains the newly created hash.
*/
public String getHash(String data);
public String getHash(HashMap<String, String> data);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.framework.router;

import java.util.HashMap;

import org.core.logger.Logger;
import org.properties.Config;

Expand All @@ -19,8 +21,7 @@ public class Packet {
private final String sender;
private final String tag;
private final String sub_tag;
private final String data;
private final String sub_data;
private final HashMap<String, String> data;

/**
* Initializes a new {@link Packet} object.
Expand All @@ -29,14 +30,12 @@ public class Packet {
* @param tag Tag of the destination the {@link Packet} will be sent to.
* @param sub_tag Sub tag describing the action performed at the destination.
* @param data Data transmitted through the {@link Packet} for processing at the destination.
* @param sub_data Supporting data used for processing and transmitting from {@code data}. This parameter is optional.
*/
private Packet(Router router, String tag, String sub_tag, String data, String sub_data) {
private Packet(Router router, String tag, String sub_tag, HashMap<String, String> data) {
this.sender = router.getTag();
this.tag = tag;
this.sub_tag = sub_tag;
this.data = data;
this.sub_data = sub_data;
}

/**
Expand Down Expand Up @@ -66,22 +65,41 @@ public final String getSubTag() {
return sub_tag;
}

public final boolean containsKey(String key) {
return data.containsKey(key);
}

/**
* Data transmitted through the {@link Packet} for processing at the destination.
*
* @return String containing all data sent.
*/
public final String getData() {
public final HashMap<String, String> getData() {
return data;
}

/**
* Supporting data used for processing and transmitting from {@code data}.
* Retrieves data point stored within {@link Packet}.
*
* @return String containing all sub_data.
* @param key Key that the data point is stored under.
* @return {@link String} containing data stored.
*/
public final String getSubData() {
return sub_data;
public final String getData(String key) {
if(data.containsKey(key))
return data.get(key);

return null;
}

public final String validate(String... keys) {
if(keys == null)
return null;

for(String key : keys)
if(!data.containsKey(key) || data.get(key).equals(""))
return key;

return null;
}

/**
Expand All @@ -93,8 +111,11 @@ public final String getSubData() {
* @param data Data transmitted through the {@link Packet} for processing at the destination.
* @return New {@link Packet} object.
*/
public static Packet packet(Router router, String tag, String sub_tag, String data) {
Packet packet = new Packet(router, tag, sub_tag, data, "");
public static Packet packet(Router router, String tag, String sub_tag, HashMap<String, String> data) {
if(data == null)
return null;

Packet packet = new Packet(router, tag, sub_tag, data);
if(log)
Logger.log(packet);
return packet;
Expand All @@ -110,8 +131,15 @@ public static Packet packet(Router router, String tag, String sub_tag, String da
* @param sub_data Supporting data used for processing and transmitting from {@code data}.
* @return New {@link Packet} object.
*/
public static Packet packet(Router router, String tag, String sub_tag, String data, String sub_data) {
Packet packet = new Packet(router, tag, sub_tag, data, sub_data);
public static Packet packet(Router router, String tag, String sub_tag, String... data) {
if(data.length % 2 != 0)
return null;

HashMap<String, String> map = new HashMap<String, String>();
for(int i = 0; i < data.length; i+=2)
map.put(data[i], data[i + 1]);

Packet packet = new Packet(router, tag, sub_tag, map);
if(log)
Logger.log(packet);
return packet;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ public static Response response405(String router, String subtag) {
+ "is written properly.", router, subtag));
}

public static Response response407(String router, String tag, String sub_tag, String... data) {
return Response.create(407, String.format("Malformed packet when sending data from <%s> to <%s> using protocol "
+ "<%s>. Data does not contain an even amount of <key, value> pairs. Data <%s>.",
router, tag, sub_tag, Arrays.toString(data)));
}

public static Response response410(String router, String subtag) {
return Response.create(410, String.format("Router <%s> process <%s> is formatted incorrectly. Check to make sure the process' "
+ "method contains the proper format of <public final Response methodName(Packet)>.", router, subtag));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,15 @@ protected final Collection<String> connectedTags() {
* @param data Data transmitted through the {@link Packet} for processing at the destination.
* @return Integer representing the return code of the sent {@link Packet}.
*/
public final Response send(String tag, String sub_tag, String data) {
return send(tag, sub_tag, data, "");
public final Response send(String tag, String sub_tag, HashMap<String, String> data) {
if(manager == null)
return ResponseFactory.response400(this.getTag());

Packet packet = Packet.packet(this, tag, sub_tag, data);
if(packet == null)
return ResponseFactory.response407(this.tag, tag, sub_tag, data.toString());

return manager.send(packet);
}

/**
Expand All @@ -184,12 +191,15 @@ public final Response send(String tag, String sub_tag, String data) {
* @param sub_data Supporting data used for processing and transmitting from {@code data}. This parameter is optional.
* @return Integer representing the return code of the sent {@link Packet}.
*/
public final Response send(String tag, String sub_tag, String data, String sub_data) {
public final Response send(String tag, String sub_tag, String... data) {
if(manager == null)
return ResponseFactory.response400(this.getTag());

// create packet and push to receive method
Packet packet = Packet.packet(this, tag, sub_tag, data, sub_data);
Packet packet = Packet.packet(this, tag, sub_tag, data);
if(packet == null)
return ResponseFactory.response407(this.tag, tag, sub_tag, data);

return manager.send(packet);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public SocketDestination(String key, DataOutputStream out) {

public final synchronized boolean send(Packet packet) {
try {
out.write(packet.getData().getBytes());
out.write(packet.getData("data").getBytes());
out.write(10);
} catch (JSONException | IOException e) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,18 @@ public Response processSTRT(Packet packet) {
}

public Response processEDAT(Packet packet) {
if(packet.getSubData().equals("null"))
String destination = packet.getData("destination");
if(destination == null)
return ResponseFactory.response500("OutputHandler", "destination");

if(destination.equals("null"))
return ResponseFactory.response200();

if(!manager.containsDestination(packet.getSubData()))
return ResponseFactory.response471(packet.getSubData());
if(!manager.containsDestination(destination))
return ResponseFactory.response471(destination);

if(!manager.send(packet.getSubData(), packet))
return ResponseFactory.response472(packet.getSubData());
if(!manager.send(destination, packet))
return ResponseFactory.response472(destination);

return ResponseFactory.response200();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,10 @@ public Object[] producerListen() {
return new Object[] {true, ""};
}

protected final Response send(String tag, String sub_tag, String data) {
protected final Response send(String tag, String sub_tag, String... data) {
return handler.send(tag, sub_tag, data);
}

protected final Response send(String tag, String sub_tag, String data, String sub_data) {
return handler.send(tag, sub_tag, data, sub_data);
}

public final synchronized void add(OutputDestination destination) {
destinations.put(destination.getKey(), destination);
//destination.send(Packet.packet(handler, "", "", "Connected: " + destination.getKey()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

import org.framework.router.ResponseFactory;
import org.json.JSONObject;
import org.stream.external.connected.amberdata.AmberDataRequestHandler;
import org.stream.external.handler.ExternalStreamConnection;
import org.stream.external.handler.ExternalStreamManager;

Expand All @@ -17,7 +17,7 @@ public class AmberDataConnection extends ExternalStreamConnection {

private boolean authorized = false;

public AmberDataConnection(ExternalStreamManager manager, String data) {
public AmberDataConnection(ExternalStreamManager manager, HashMap<String, String> data) {
super(manager, data);
}

Expand All @@ -28,16 +28,6 @@ public String getUUID() {
public void init() {

}

@Override
public void defineSubscriptionTypes() {

}

@Override
public void defineRequestTypes() {
addRequestType("lending-latest");
}

public String getHash(String data) {
try {
Expand Down Expand Up @@ -65,7 +55,7 @@ public boolean authorize() {
.url("https://web3api.io/api/v2/market/defi/lending/exchanges/aave/latest")
.get()
.addHeader("Accept", "application/json")
.addHeader("x-api-key", data)
.addHeader("x-api-key", data.get("key"))
.build();

try {
Expand Down Expand Up @@ -114,14 +104,33 @@ public boolean start() {
public boolean stop() {
return false;
}


@Override
public String getHash(HashMap<String, String> data) {
// TODO Auto-generated method stub
return null;
}

@Override
public Object[] request(String destination, String data) {
return AmberDataRequestHandler.request(this.data, data);
public boolean containsSubscriptionType(String type) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean containsRequestType(String type) {
// TODO Auto-generated method stub
return false;
}

@Override
public Object[] request(HashMap<String, String> request) {
// TODO Auto-generated method stub
return null;
}

@Override
public Object[] request(String destination, String request, String date) {
public Object[] request(HashMap<String, String> request, String date) {
// TODO Auto-generated method stub
return null;
}
Expand Down
Loading

0 comments on commit 6d21f64

Please sign in to comment.