diff --git a/src/main/java/vslab1/src/Request/Data/ReceivedJoinRequest.java b/src/main/java/vslab1/src/Request/Data/ReceivedJoinRequest.java index 799b8b3..41c904b 100644 --- a/src/main/java/vslab1/src/Request/Data/ReceivedJoinRequest.java +++ b/src/main/java/vslab1/src/Request/Data/ReceivedJoinRequest.java @@ -1,12 +1,12 @@ package vslab1.src.Request.Data; import vslab1.src.FileReaderWriter.FileReaderWriter; -import vslab1.src.FileReaderWriter.FileReaderWriter.EUpdateFlag; import vslab1.src.Peers.EOnlineState; import vslab1.src.Peers.Peer; import vslab1.src.Sending.SendingQueue; import vslab1.src.Sending.Data.EDataType; import vslab1.src.Sending.Data.PeerJoinedNotification; +import vslab1.src.Sending.Data.PeerNotification; /** * Received join request will trigger an update of peer that wants to join this @@ -31,10 +31,16 @@ public record ReceivedJoinRequest(Peer sender, Peer receiver) implements Request @Override public void execute(SendingQueue sendingQueue) { - FileReaderWriter.updatePeer(new Peer(sender.ipAddress(), sender.port(), null, EOnlineState.Online)); - + Peer newPeer = new Peer(sender.ipAddress(), sender.port(), null, EOnlineState.Online); + FileReaderWriter.updatePeer(newPeer); + // Send own information back to new peer. + sendingQueue.add(new PeerNotification(receiver, newPeer)); + // Notify other peers except the new peer about the new peer, which joined the network. FileReaderWriter.getPeers().forEach((peer) -> { - sendingQueue.add(new PeerJoinedNotification(peer, FileReaderWriter.getThisPeer(EUpdateFlag.DoNotUpdate))); + // Except the new peer + if (!peer.equals(newPeer)) { + sendingQueue.add(new PeerJoinedNotification(newPeer, peer)); + } }); } diff --git a/src/main/java/vslab1/src/Timeout/TimeoutThread.java b/src/main/java/vslab1/src/Timeout/TimeoutThread.java index 69abb25..e791ef6 100644 --- a/src/main/java/vslab1/src/Timeout/TimeoutThread.java +++ b/src/main/java/vslab1/src/Timeout/TimeoutThread.java @@ -31,8 +31,8 @@ public class TimeoutThread extends Thread implements Terminatable { String ipAddress = timeoutJob.peerToWaitFor().ipAddress(); int port = timeoutJob.peerToWaitFor().port(); Peer unreachablePeer = new Peer(ipAddress, port, null, EOnlineState.Offline); - FileReaderWriter.updatePeer(unreachablePeer); - System.out.println("Peer unreachable. IP: " + unreachablePeer.ipAddress() + " Port: " + unreachablePeer.port()); + //FileReaderWriter.updatePeer(unreachablePeer); + jobQueue.remove(timeoutJob); } } }