public void handle(PeerMessage event) { PeerAddress oldFriend; PeerAddress sender = event.getMSPeerSource(); PeerAddress newFriend = event.getNewFriend(); // add the sender address to the list of friends if (!friends.contains(sender)) { if (friends.size() == viewSize) { oldFriend = friends.get(rand.nextInt(viewSize)); friends.remove(oldFriend); fdUnregister(oldFriend); Snapshot.removeFriend(serverPeerAddress, oldFriend); } friends.addElement(sender); fdRegister(sender); Snapshot.addFriend(serverPeerAddress, sender); } // add the received new friend from the sender to the list of friends if (!friends.contains(newFriend) && !serverPeerAddress.equals(newFriend)) { if (friends.size() == viewSize) { oldFriend = friends.get(rand.nextInt(viewSize)); friends.remove(oldFriend); fdUnregister(oldFriend); Snapshot.removeFriend(serverPeerAddress, oldFriend); } friends.addElement(newFriend); fdRegister(newFriend); Snapshot.addFriend(serverPeerAddress, newFriend); } }