diff --git a/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStack.java b/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStack.java index bff10a89..3f5c8e27 100644 --- a/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStack.java +++ b/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStack.java @@ -72,49 +72,47 @@ class BufferedNetworkStack { byte messageType = receivedData[0]; String strReceived = new String(receivedData).toString().trim(); - System.out.println(messageType); - System.out.println(strReceived); + // System.out.println(messageType); + // System.out.println(strReceived); switch (messageType) { - case CMD_PUSH: - int size = Integer.valueOf(new Character(strReceived.charAt(1)) - .toString()); + case MessageType.CMD_PUSH: + int size = Integer.valueOf(strReceived.substring(1)); String info = BUF_SIZE + "," + stack.size(); - // stack.push(new Element(size)); - // Pick better ID + // TODO: Pick better ID int id = temp.size(); temp.add(id, new Element(size, id)); send(info, client); break; - case CMD_DATA: - int data_id = Integer.valueOf(new Character(strReceived - .charAt(1)).toString()); - int chunk_id = Integer.valueOf(new Character(strReceived - .charAt(2)).toString()); + case MessageType.CMD_DATA: + int session_id = Integer.valueOf(strReceived.charAt(1)); + int chunk_id = Integer.valueOf(strReceived.charAt(2)); String data = strReceived.substring(3); // System.out.println("Received chunk #" + chunk_id + // " of data #" - // + data_id + ": " + data); + // + session_id + ": " + data); - temp.get(data_id).cunks[chunk_id] = data; + temp.get(session_id).chunks[chunk_id] = data; - // stack.get(data_id).cunks[chunk_id] = data; - if (temp.get(data_id).isComplete()) { + if (temp.get(session_id).isComplete()) { // Move from temp stack - Element e = temp.get(data_id); + Element e = temp.get(session_id); + + // TODO: Element auch wirklich löschen aber dann ändern sich + // die IDs // temp.remove(e); stack.add(e.toString()); - // System.out.println("Moved " + e); + System.out.println("Moved " + e + " from temp to stack"); } break; - case CMD_POP: + case MessageType.CMD_POP: try { // Element popped = stack.pop(); // send(popped.toString(), client); @@ -136,7 +134,8 @@ class BufferedNetworkStack { } // clear buffer and make it ready to write - buf.clear(); + buf = ByteBuffer.allocate(BUF_SIZE); + // buf.clear(); } } diff --git a/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStackClient.java b/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStackClient.java index 23fa6338..626be28f 100644 --- a/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStackClient.java +++ b/ws2012/P2P/uebungen/2/p2p_ex2/src/buffered/BufferedNetworkStackClient.java @@ -56,13 +56,12 @@ public class BufferedNetworkStackClient { // first 2 bytes of each packet are metadata (session_id, chunk_id). int numChunks = (int) Math.ceil((s.length() * 1.0 / lenData)); - // System.out.println(numChunks); for (int chunkId = 0; chunkId < numChunks; chunkId++) { buf.flip(); buf.clear(); - buf.put(CMD_DATA); - buf.put(String.valueOf(sessionId).getBytes()); - buf.put(String.valueOf(chunkId).getBytes()); + buf.put(MessageType.CMD_DATA); + buf.put((byte) (sessionId)); + buf.put((byte) (chunkId)); int chunkStart = chunkId * lenData;