From 5e30d219b3dadd0ba113427af75d7e279a0832ee Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 14 Nov 2024 11:25:20 -0500 Subject: packet serializer routines --- src/main/java/derms/net/Packet.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/derms/net/Packet.java (limited to 'src/main') 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 decode(DatagramPacket pkt, Class clazz) throws IOException, ClassNotFoundException, ClassCastException { + ObjectInputStream objStream = new ObjectInputStream( + new ByteArrayInputStream(pkt.getData())); + T obj = clazz.cast(objStream.readObject()); + objStream.close(); + return obj; + } +} -- cgit v1.2.3