diff --git a/ws2012/P2P/uebungen/4/src/node/Node.java b/ws2012/P2P/uebungen/4/src/node/Node.java index a73c199a..86c9ed1a 100644 --- a/ws2012/P2P/uebungen/4/src/node/Node.java +++ b/ws2012/P2P/uebungen/4/src/node/Node.java @@ -178,10 +178,13 @@ public class Node { } private void sendBroadcast(byte command, byte[] data) { - ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE); - // Random id? int packet_id = generator.nextInt(); + sendBroadcast(packet_id, command, data); + } + + private void sendBroadcast(int packet_id, byte command, byte[] data) { + ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE); buffer.put(MessageType.BROADCAST); buffer.putInt(packet_id); @@ -194,6 +197,8 @@ public class Node { byte[] packet = buffer.array(); for (SocketAddress n : neighbors) { + // TODO: by now, we also send the packet back to the node it was + // received from... try { channel.send(ByteBuffer.wrap(packet), n); } catch (IOException e) { @@ -350,6 +355,10 @@ public class Node { case MessageType.STATUS: InetSocketAddress originalSender = readIPFromBuffer(); + // Broadcast to my neighbors + sendBroadcast(packet_id, command, + addrToBytes(originalSender)); + LOGGER.log( Level.INFO, "{0}: received status broadcast packet from {1}. original sender: {2}",