diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-11-14 11:25:20 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-11-14 11:25:20 -0500 |
| commit | 5e30d219b3dadd0ba113427af75d7e279a0832ee (patch) | |
| tree | 459edccc052d09be32eede710ed863249d664576 /src | |
| parent | 9125463c75c7eab851f6a281d71c625c7c8454ff (diff) | |
| download | soen423-5e30d219b3dadd0ba113427af75d7e279a0832ee.zip | |
packet serializer routines
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/derms/net/Packet.java | 25 |
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; + } +} |