summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/replica2/ResourceTransfer.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-28 17:32:28 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-28 17:32:28 -0500
commitd267dd1dda606f0c56d8afaa7187485e60ebfd86 (patch)
treee1bca5933aa7e5e9793773057fd5616ff65a9eb8 /src/main/java/derms/replica2/ResourceTransfer.java
parent6654546671eea9f9becd32b3160a134802659cbc (diff)
downloadsoen423-d267dd1dda606f0c56d8afaa7187485e60ebfd86.zip
move replica2 to top level
Diffstat (limited to 'src/main/java/derms/replica2/ResourceTransfer.java')
-rw-r--r--src/main/java/derms/replica2/ResourceTransfer.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/derms/replica2/ResourceTransfer.java b/src/main/java/derms/replica2/ResourceTransfer.java
new file mode 100644
index 0000000..0ed17c5
--- /dev/null
+++ b/src/main/java/derms/replica2/ResourceTransfer.java
@@ -0,0 +1,50 @@
+package derms.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;
+
+class ResourceTransfer {
+ static final int bufsize = 1024;
+
+ 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();
+ }
+
+ 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