summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms')
-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;
+ }
+}