From 809f97de308f5c2eaf4bd84366728c44e240da3f Mon Sep 17 00:00:00 2001 From: senft-lap Date: Tue, 13 Nov 2012 16:30:08 +0100 Subject: [PATCH] Merged "clever" ID creation --- .../client/BufferedNetworkStackClient.java | 2 +- .../src/server/BufferedNetworkStack.java | 23 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ws2012/P2P/uebungen/2/p2p_ex2/src/client/BufferedNetworkStackClient.java b/ws2012/P2P/uebungen/2/p2p_ex2/src/client/BufferedNetworkStackClient.java index 840d3b5a..d281f397 100644 --- a/ws2012/P2P/uebungen/2/p2p_ex2/src/client/BufferedNetworkStackClient.java +++ b/ws2012/P2P/uebungen/2/p2p_ex2/src/client/BufferedNetworkStackClient.java @@ -9,7 +9,7 @@ import common.MessageType; import common.Util; public class BufferedNetworkStackClient { - protected static final long TIMEOUT = 3000; + protected static final long TIMEOUT = 5000; protected static final int BUF_SIZE = 2048; diff --git a/ws2012/P2P/uebungen/2/p2p_ex2/src/server/BufferedNetworkStack.java b/ws2012/P2P/uebungen/2/p2p_ex2/src/server/BufferedNetworkStack.java index 762d89e8..a769dcf8 100644 --- a/ws2012/P2P/uebungen/2/p2p_ex2/src/server/BufferedNetworkStack.java +++ b/ws2012/P2P/uebungen/2/p2p_ex2/src/server/BufferedNetworkStack.java @@ -17,6 +17,8 @@ public class BufferedNetworkStack { private DatagramChannel channel; private ByteBuffer buf; + // Size of reading buffer (in bytes) + // At least 10, because we have 9 bytes of metadata in every packet protected static final int BUF_SIZE = 1024; private Stack stack; @@ -83,11 +85,11 @@ public class BufferedNetworkStack { case MessageType.CMD_PUSH: int size = buf.getInt(); - int id = temp.size(); + int id = generateID(); int numChunks = Util.numChunks(BUF_SIZE, size); - temp.add(id, new Element(numChunks, id)); + temp.add(new Element(numChunks, id)); buf.flip(); buf.clear(); @@ -155,7 +157,7 @@ public class BufferedNetworkStack { default: received = new StringBuilder(); while (buf.hasRemaining()) { - int b = buf.get(); + byte b = buf.get(); received.append((char) b); System.out.println("Received " + (char) b); } @@ -177,6 +179,21 @@ public class BufferedNetworkStack { } } + private int generateID() { + for (int i = 0; i < Integer.MAX_VALUE; i++) { + boolean isUsed = false; + for (Element e : temp) { + if (i == e.id) { + isUsed = true; + } + } + if (!isUsed) { + return i; + } + } + return -1; + } + public static void main(String args[]) { try { new BufferedNetworkStack(9999);