From ab4d1f37b081d3c36c50df52baaa58308895d616 Mon Sep 17 00:00:00 2001 From: WickedJack99 Date: Mon, 22 Apr 2024 15:57:34 +0200 Subject: [PATCH] Added Leave sendable and requestable. --- .../Data/ReceivedLeaveNotification.java | 33 +++++++++++++++++++ .../src/Sending/Data/LeaveNotification.java | 33 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/main/java/vslab1/src/Request/Data/ReceivedLeaveNotification.java create mode 100644 src/main/java/vslab1/src/Sending/Data/LeaveNotification.java diff --git a/src/main/java/vslab1/src/Request/Data/ReceivedLeaveNotification.java b/src/main/java/vslab1/src/Request/Data/ReceivedLeaveNotification.java new file mode 100644 index 0000000..29eee80 --- /dev/null +++ b/src/main/java/vslab1/src/Request/Data/ReceivedLeaveNotification.java @@ -0,0 +1,33 @@ +package vslab1.src.Request.Data; + +import vslab1.src.FileReaderWriter.FileReaderWriter; +import vslab1.src.Peers.EOnlineState; +import vslab1.src.Peers.Peer; +import vslab1.src.Sending.SendingQueue; +import vslab1.src.Sending.Data.EDataType; + +/** + * Received leave notification and sets peer online state in list to offline. + */ +public record ReceivedLeaveNotification(Peer sender, Peer receiver) implements Requestable { + + @Override + public EDataType getType() { + return EDataType.LeaveNotification; + } + + @Override + public Peer getSender() { + return sender; + } + + @Override + public Peer getReceiver() { + return receiver; + } + + @Override + public void execute(SendingQueue sendingQueue) { + FileReaderWriter.updatePeer(new Peer(sender.ipAddress(), sender.port(), null, EOnlineState.Offline)); + } +} diff --git a/src/main/java/vslab1/src/Sending/Data/LeaveNotification.java b/src/main/java/vslab1/src/Sending/Data/LeaveNotification.java new file mode 100644 index 0000000..bd8668b --- /dev/null +++ b/src/main/java/vslab1/src/Sending/Data/LeaveNotification.java @@ -0,0 +1,33 @@ +package vslab1.src.Sending.Data; + +import vslab1.src.Peers.Peer; + +/** + * Sent to all online peers if this peer goes offline. + */ +public record LeaveNotification(Peer sender, Peer receiver) implements Sendable { + + @Override + public EDataType getType() { + return EDataType.LeaveNotification; + } + + @Override + public Peer getSender() { + return sender; + } + + @Override + public Peer getReceiver() { + return receiver; + } + + @Override + public byte[] getMessage() { + String request = + "{\"leave\":\"\"" + + "," + + "\"ipPort\":\"" + sender.ipAddress() + ":" + sender.port() + "\"}"; + return request.getBytes(); + } +}