summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/replica/replica2/ResourceTransfer.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/ResourceTransfer.java
parent0cae203edc71b0285d2971f9124f24cb543b8e39 (diff)
downloadsoen423-6a710c3943f2350f4575f8cb1898129ef3c7dfdd.zip
rename assignment code replica package
Diffstat (limited to 'src/main/java/derms/replica/replica2/ResourceTransfer.java')
-rw-r--r--src/main/java/derms/replica/replica2/ResourceTransfer.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/derms/replica/replica2/ResourceTransfer.java b/src/main/java/derms/replica/replica2/ResourceTransfer.java
new file mode 100644
index 0000000..98750c7
--- /dev/null
+++ b/src/main/java/derms/replica/replica2/ResourceTransfer.java
@@ -0,0 +1,50 @@
+package derms.replica.replica2;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ResourceTransfer {
+ public static final int bufsize = 1024;
+
+ public static void send(Resource[] resources, SocketAddress remoteAddr) throws IOException {
+ DatagramSocket sock = new DatagramSocket();
+
+ for (Resource resource : resources) {
+ DatagramPacket pkt = ObjectPacket.create(resource, remoteAddr);
+ sock.send(pkt);
+ }
+
+ DatagramPacket pkt = ObjectPacket.create(new EndOfTransmission(), remoteAddr);
+ sock.send(pkt);
+ sock.close();
+ }
+
+ public static Resource[] receive(DatagramSocket sock) throws IOException {
+ List<Resource> resources = new ArrayList<Resource>();
+ byte[] buf = new byte[bufsize];
+ DatagramPacket response = new DatagramPacket(buf, buf.length);
+
+ for (;;) {
+ sock.receive(response);
+
+ Object obj = ObjectPacket.deserialize(response, Object.class);
+ if (obj.getClass() == EndOfTransmission.class) {
+ break;
+ }
+ try {
+ resources.add((Resource) obj);
+ } catch (Exception e) {
+ throw new IOException("expected Resource; got "+obj.getClass().toString());
+ }
+ }
+ Resource[] arr = new Resource[0];
+ return resources.toArray(arr);
+ }
+
+ private static class EndOfTransmission implements Serializable {}
+} \ No newline at end of file