From 1bfbb5c75d0d32d4656e48c2a4e59da91b11b5ed Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 14:49:39 +0100 Subject: [PATCH 1/3] Add: RawPacket record to store raw data about the incomming request --- .../dbis/cs108/casono/server/network/transport/RawPacket.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java new file mode 100644 index 0000000..72f929e --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java @@ -0,0 +1,4 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.transport; + +/** Transport object, created by the transport layer to store raw data about the request prior to any processing */ +public record RawPacket(int requestId, String payload) {} From 94a2e1f977beb96db56432e3d2738ae033787986 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 14:55:29 +0100 Subject: [PATCH 2/3] Add: Make interface and implementation use RawPacket --- .../network/transport/TcpTransport.java | 22 ++++++++++++------- .../network/transport/TransportLayer.java | 6 ++--- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TcpTransport.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TcpTransport.java index a7867d3..9a15f01 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TcpTransport.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TcpTransport.java @@ -27,24 +27,30 @@ public class TcpTransport implements TransportLayer { /** * Reads a string from the socket. * - * @return the read string + * @return the read RawPacket * @throws IOException if an I/O error occurs */ - public String read() throws IOException { + public RawPacket read() throws IOException { int length = in.readInt(); - byte[] payload = new byte[length]; - in.readFully(payload); - return new String(payload, StandardCharsets.UTF_8); + int requestId = in.readInt(); + byte[] rawPayload = new byte[length]; + in.readFully(rawPayload); + + String payload = new String(rawPayload, StandardCharsets.UTF_8); + return new RawPacket(requestId, payload); } /** * Writes a string to the socket. * - * @param payload the string to write + * @param data the RawPacket's data to write * @throws IOException if an I/O error occurs */ - public void write(String payload) throws IOException { - byte[] rawPayload = payload.getBytes(StandardCharsets.UTF_8); + public void write(RawPacket data) throws IOException { + int requestId = data.requestId(); + byte[] rawPayload = data.payload().getBytes(StandardCharsets.UTF_8); + + out.writeInt(requestId); out.writeInt(rawPayload.length); out.write(rawPayload); out.flush(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TransportLayer.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TransportLayer.java index 4bd9e36..0202ddf 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TransportLayer.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/TransportLayer.java @@ -7,10 +7,10 @@ public interface TransportLayer { /** * Reads data from the transport layer. * - * @return the read data as a string + * @return the read data as a RawPacket * @throws IOException if an I/O error occurs */ - String read() throws IOException; + RawPacket read() throws IOException; /** * Writes data to the transport layer. @@ -18,7 +18,7 @@ public interface TransportLayer { * @param data the data to write * @throws IOException if an I/O error occurs */ - void write(String data) throws IOException; + void write(RawPacket data) throws IOException; /** * Closes the transport layer. From 0bfcbe95b0943045b0b4791fd047a8c54ef71133 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 14:55:43 +0100 Subject: [PATCH 3/3] Style: Line length of JavaDoc comment --- .../cs108/casono/server/network/transport/RawPacket.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java index 72f929e..c5a1918 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/transport/RawPacket.java @@ -1,4 +1,7 @@ package ch.unibas.dmi.dbis.cs108.casono.server.network.transport; -/** Transport object, created by the transport layer to store raw data about the request prior to any processing */ +/** + * Transport object, created by the transport layer to store raw data about the request + * prior to any processing + */ public record RawPacket(int requestId, String payload) {}