summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-14 11:25:20 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-14 11:25:20 -0500
commit5e30d219b3dadd0ba113427af75d7e279a0832ee (patch)
tree459edccc052d09be32eede710ed863249d664576 /src/main/java
parent9125463c75c7eab851f6a281d71c625c7c8454ff (diff)
downloadsoen423-5e30d219b3dadd0ba113427af75d7e279a0832ee.zip
packet serializer routines
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/derms/net/Packet.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main/java/derms/net/Packet.java b/src/main/java/derms/net/Packet.java
new file mode 100644
index 0000000..68416d7
--- /dev/null
+++ b/src/main/java/derms/net/Packet.java
@@ -0,0 +1,25 @@
+package derms.net;
+
+import java.io.*;
+import java.net.DatagramPacket;
+import java.net.SocketAddress;
+
+public class Packet {
+ public static DatagramPacket encode(Serializable obj, SocketAddress dst) throws IOException {
+ ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+ ObjectOutputStream objStream = new ObjectOutputStream(byteStream);
+ objStream.writeObject(obj);
+ objStream.flush();
+ byte[] buf = byteStream.toByteArray();
+ objStream.close();
+ return new DatagramPacket(buf, buf.length, dst);
+ }
+
+ public static <T extends Serializable> T decode(DatagramPacket pkt, Class<T> clazz) throws IOException, ClassNotFoundException, ClassCastException {
+ ObjectInputStream objStream = new ObjectInputStream(
+ new ByteArrayInputStream(pkt.getData()));
+ T obj = clazz.cast(objStream.readObject());
+ objStream.close();
+ return obj;
+ }
+}