diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index f84f34af..aca269ec 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -12,6 +12,8 @@ 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 { @@ -94,7 +96,7 @@ public class Node { return channel.socket().getLocalSocketAddress(); } - private void putAddrInBuf(ByteBuffer buf, SocketAddress addr) { + private void sendAddrTo(SocketAddress receiver, SocketAddress addr) { buf.clear(); InetSocketAddress a = (InetSocketAddress) addr; @@ -110,6 +112,11 @@ public class Node { // acks.get(ack_id).setBuf(BufferUtil.clone(buf)); buf.flip(); + try { + channel.send(buf, receiver); + } catch (IOException e) { + // TODO + } } /** @@ -121,21 +128,15 @@ public class Node { for (int i = 0; i < neighbors.size(); i++) { - try { - if (neighbors.size() > 2) { - int pred = ((i - 1) + neighbors.size()) % neighbors.size(); - int succ = (i + 1) % neighbors.size(); + if (neighbors.size() > 2) { + int pred = ((i - 1) + neighbors.size()) % neighbors.size(); + int succ = (i + 1) % neighbors.size(); - putAddrInBuf(buf, neighbors.get(succ)); - channel.send(buf, neighbors.get(i)); - putAddrInBuf(buf, neighbors.get(pred)); - channel.send(buf, neighbors.get(i)); - } else if (neighbors.size() == 2) { - putAddrInBuf(buf, neighbors.get(Math.abs(i - 1))); - channel.send(buf, neighbors.get(i)); - } - } catch (IOException e) { - e.printStackTrace(); + sendAddrTo(neighbors.get(i), neighbors.get(succ)); + + sendAddrTo(neighbors.get(i), neighbors.get(pred)); + } else if (neighbors.size() == 2) { + sendAddrTo(neighbors.get(i), neighbors.get(Math.abs(i - 1))); } buf.clear();