diff --git a/src/main/java/vslab1/src/Request/Data/ReceivedPeerJoinedNotification.java b/src/main/java/vslab1/src/Request/Data/ReceivedPeerJoinedNotification.java new file mode 100644 index 0000000..d65e522 --- /dev/null +++ b/src/main/java/vslab1/src/Request/Data/ReceivedPeerJoinedNotification.java @@ -0,0 +1,36 @@ +package vslab1.src.Request.Data; + +import vslab1.src.FileReaderWriter.FileReaderWriter; +import vslab1.src.Peers.Peer; +import vslab1.src.Sending.SendingQueue; +import vslab1.src.Sending.Data.EDataType; +import vslab1.src.Sending.Data.PeerNotification; + +/** + * Received peerJoined notification from friend of peer that joined. Updates information of received + * new peer to online and triggers peer response to peer that joined. + */ +public record ReceivedPeerJoinedNotification(Peer sender, Peer receiver) implements Requestable { + + @Override + public EDataType getType() { + return EDataType.PeerJoinedNotification; + } + + @Override + public Peer getSender() { + return sender; + } + + @Override + public Peer getReceiver() { + return receiver; + } + + @Override + public void execute(SendingQueue sendingQueue) { + FileReaderWriter.updatePeer(sender); + sendingQueue.add(new PeerNotification(receiver, sender)); + } + +} diff --git a/src/main/java/vslab1/src/Sending/Data/PeerJoinedNotification.java b/src/main/java/vslab1/src/Sending/Data/PeerJoinedNotification.java new file mode 100644 index 0000000..2b79761 --- /dev/null +++ b/src/main/java/vslab1/src/Sending/Data/PeerJoinedNotification.java @@ -0,0 +1,35 @@ +package vslab1.src.Sending.Data; + +import vslab1.src.Peers.Peer; + +/** + * Sent by friend of peer which sent a join request to all peers in the network. + * Logic, that sent to all peers realized in ReceivedJoinRequest. + */ +public record PeerJoinedNotification(Peer sender, Peer receiver) implements Sendable { + + @Override + public EDataType getType() { + return EDataType.PeerJoinedNotification; + } + + @Override + public Peer getSender() { + return sender; + } + + @Override + public Peer getReceiver() { + return receiver; + } + + @Override + public byte[] getMessage() { + String request = + "{\"peerJoined\":\"\"" + + "," + + "\"ipPort\":\"" + sender.ipAddress() + ":" + sender.port() + "\"}"; + return request.getBytes(); + } + +}