diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index c77880b4..312766aa 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -12,10 +12,6 @@ import java.util.Map; import java.util.Random; import java.util.logging.Logger; -import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Receiver; - -import util.BufferUtil; - public class Node { private final static Logger LOGGER = Logger.getLogger(Node.class.getName()); @@ -187,15 +183,24 @@ public class Node { } } - public boolean hasNeighbor(SocketAddress adr) { + public boolean hasNeighbor(SocketAddress addr) { for (SocketAddress n : neighbors) { - if (n.toString().equals(adr.toString())) { + if (n.toString().equals(addr.toString())) { return true; } } return false; } + public int getNeighborId(SocketAddress addr) { + for (int i = 0; i < neighbors.size(); i++) { + if (neighbors.get(i).toString().equals(addr.toString())) { + return i; + } + } + return -1; + } + public String getName() { return this.name; } @@ -263,13 +268,9 @@ public class Node { LOGGER.info(name + ": " + receivedFrom.toString() + " is leaving. Deleting..."); - // search the neighbor in the list and remove him. - for (int i = 0; i < neighbors.size(); i++) { - if (((InetSocketAddress) neighbors.get(i)) - .getPort() == ((InetSocketAddress) receivedFrom) - .getPort()) { - neighbors.remove(i); - } + int idToRemove = getNeighborId(receivedFrom); + if (idToRemove != -1) { + neighbors.remove(idToRemove); } ack_id = buf.getInt();