summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/replica/replica2/ObjectPacket.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-28 10:42:31 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-28 10:42:31 -0500
commit6a710c3943f2350f4575f8cb1898129ef3c7dfdd (patch)
treedc20bc0480e77a74f2176e5f0fed02ad2251a2cd /src/main/java/derms/replica/replica2/ObjectPacket.java
parent0cae203edc71b0285d2971f9124f24cb543b8e39 (diff)
downloadsoen423-6a710c3943f2350f4575f8cb1898129ef3c7dfdd.zip
rename assignment code replica package
Diffstat (limited to 'src/main/java/derms/replica/replica2/ObjectPacket.java')
-rw-r--r--src/main/java/derms/replica/replica2/ObjectPacket.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/derms/replica/replica2/ObjectPacket.java b/src/main/java/derms/replica/replica2/ObjectPacket.java
new file mode 100644
index 0000000..65b032f
--- /dev/null
+++ b/src/main/java/derms/replica/replica2/ObjectPacket.java
@@ -0,0 +1,33 @@
+package derms.replica.replica2;
+
+import java.io.*;
+import java.net.DatagramPacket;
+import java.net.SocketAddress;
+
+public class ObjectPacket {
+ public static DatagramPacket create(Serializable obj, SocketAddress remoteAddr) 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, remoteAddr);
+ }
+
+ public static <E> E deserialize(DatagramPacket pkt, Class<E> clazz) throws IOException {
+ ObjectInputStream objectStream;
+ try {
+ objectStream = new ObjectInputStream(
+ new ByteArrayInputStream(pkt.getData()));
+ } catch (Exception e) {
+ throw new IOException("failed to create input stream: "+e.getMessage());
+ }
+
+ try {
+ return clazz.cast(objectStream.readObject());
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+} \ No newline at end of file