From 6a2215a4910cddc38f87d93cc09b7d121033ae55 Mon Sep 17 00:00:00 2001 From: lutz Date: Sun, 25 Nov 2012 18:47:40 +0100 Subject: [PATCH] modified leave method. all nodes are linked circularly. --- ws2012/P2P/uebungen/4/src/node/Node.java | 32 ++++++------------------ 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index 71c25ebd..046b397a 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -100,31 +100,13 @@ public class Node { try { if (neighbors.size() > 2) { - if (i == 0) { - - putAddrInBuf(buf, neighbors.get(1)); - channel.send(buf, neighbors.get(i)); - - putAddrInBuf(buf, neighbors.get(neighbors.size() - 1)); - channel.send(buf, neighbors.get(i)); - - } else if (i == neighbors.size() - 1) { - - putAddrInBuf(buf, neighbors.get(0)); - channel.send(buf, neighbors.get(i)); - - putAddrInBuf(buf, neighbors.get(i - 1)); - channel.send(buf, neighbors.get(i)); - - } else { - - putAddrInBuf(buf, neighbors.get(i - 1)); - channel.send(buf, neighbors.get(i)); - - putAddrInBuf(buf, neighbors.get(i + 1)); - channel.send(buf, neighbors.get(i)); - } + 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)); @@ -261,4 +243,4 @@ public class Node { running = false; } } -} \ No newline at end of file +}