From 9c70008c0034d7e32dd90b9a7e8b09abc5a59582 Mon Sep 17 00:00:00 2001 From: brutzman <brutzman@nps.edu> Date: Wed, 6 May 2020 16:57:12 -0700 Subject: [PATCH] initial implementation to handle pduLogEncoding, many TODO items! key milestone for Tobias thesis --- .../dis7/utilities/stream/PduRecorder.java | 58 +++++++++++++++++-- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java b/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java index a706e00819..868b5239df 100644 --- a/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java +++ b/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java @@ -28,6 +28,33 @@ public class PduRecorder implements PduReceiver public static final String COMMENT_MARKER = "#"; static String START_COMMENT_MARKER = COMMENT_MARKER + " Start, "; static String FINISH_COMMENT_MARKER = COMMENT_MARKER + " Finish, "; + + static final String ENCODING_BASE64 = "ENCODING_BASE64"; + static final String ENCODING_PLAINTEXT = "ENCODING_PLAINTEXT"; + static final String ENCODING_BINARY = "ENCODING_BINARY"; // TODO likely requires different code path + static final String ENCODING_XML = "ENCODING_XML"; // TODO, repeat Open-DIS version 4 effort + static final String ENCODING_EXI = "ENCODING_EXI"; // TODO, use Exificient or Nagasena libraries + static final String ENCODING_JSON = "ENCODING_JSON"; // TODO, repeat Open-DIS version 4 effort + static final String ENCODING_MAK_DATA_LOGGER = "ENCODING_MAK_DATA_LOGGER"; // verbose pretty-print. perhaps output only (MAK format itself is binary) + static final String ENCODING_WIRESHARK_DATA_LOGGER = "ENCODING_WIRESHARK_DATA_LOGGER"; // + static final String ENCODING_CDIS = "ENCODING_CDIS"; // future work based on new SISO standard + + private static String pduLogEncoding = ENCODING_PLAINTEXT; // TODO use Java enumerations, generalize/share across library + + /** + * TODO change this to enumeration type for strictness + * @return the pduLogEncoding + */ + public static String getEncoding() { + return pduLogEncoding; + } + + /** + * @param aEncoding the pduLogEncoding to set + */ + public static void setEncoding(String aEncoding) { + pduLogEncoding = aEncoding; + } private BufferedWriter bufferedWriter; private File logFile; @@ -79,7 +106,7 @@ public class PduRecorder implements PduReceiver Long startNanoTime = null; StringBuilder sb = new StringBuilder(); - Base64.Encoder base64Encoder = Base64.getEncoder(); + java.util.Base64.Encoder base64Encoder = Base64.getEncoder(); int pduCount = 0; boolean headerWritten = false; boolean doSave = true; @@ -98,10 +125,31 @@ public class PduRecorder implements PduReceiver //System.out.println("wrote time "+(packetRcvNanoTime - startNanoTime)); sb.setLength(0); - sb.append(base64Encoder.encodeToString(timeByteArray)); - sb.append(','); - byte[] buffsized = Arrays.copyOf(buff, len); - sb.append(base64Encoder.encodeToString(buffsized)); // TODO offer alternative encodings + byte[] buffsized; + + switch (pduLogEncoding) + { + case ENCODING_BASE64: + sb.append(base64Encoder.encodeToString(timeByteArray)); + sb.append(','); + buffsized = Arrays.copyOf(buff, len); + sb.append(base64Encoder.encodeToString(buffsized)); + break; + + case ENCODING_PLAINTEXT: + // by Tobias Brennenstuhl SPring 2020 + //sb.append(encdr.encodeToString(timeAr)); + sb.append(Arrays.toString(timeByteArray).replace(" ", "")); + sb.append(','); + buffsized = Arrays.copyOf(buff, len); + sb.append(Arrays.toString(buffsized).replace(" ", "")); + + sb.append(" # " + "TODO PDU type (number and name)"); + break; + + default: + System.err.println ("Encoding'" + pduLogEncoding + " not recognized or supported"); + } try { if (!headerWritten) { writeHeader(); -- GitLab