From 90ff3a0c91bf9f4a0b6bcfb534576d9aadd12a77 Mon Sep 17 00:00:00 2001 From: no-glue Date: Tue, 3 Mar 2015 13:31:12 +0100 Subject: [PATCH 1/8] message queue server --- .../websocket/example/EchoServerSync.java | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 src/main/java/com/pmeade/websocket/example/EchoServerSync.java diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java new file mode 100644 index 0000000..92fe313 --- /dev/null +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -0,0 +1,192 @@ +package com.pmeade.websocket.example; + +import com.pmeade.websocket.io.WebSocketServerOutputStream; +import com.pmeade.websocket.net.WebSocket; +import com.pmeade.websocket.net.WebSocketServerSocket; +import java.io.IOException; +import java.io.InputStream; +import java.net.ServerSocket; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.ListIterator; +import java.util.Queue; +import java.util.Arrays; + +/** + * @author pmeade + */ +public class EchoServerSync { + public static final int PORT = 8080; + + public static void main(String[] args) { + EchoServerSync echoServer = new EchoServerSync(); + try { + echoServer.doIt(); + } catch(Exception e) { + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + } + + public void doIt() throws Exception + { + ServerSocket serverSocket = new ServerSocket(PORT); + WebSocketServerSocket webSocketServerSocket + = new WebSocketServerSocket(serverSocket); + StringMessageQueue messageQueue = new StringMessageQueue(); + LinkedList connections = new LinkedList(); + ByteAccumulator buffer = new ByteAccumulator(); + new WebSocketConsumerThread(messageQueue, connections).start(); + while(finished == false) { + WebSocket socket = webSocketServerSocket.accept(); + connections.add(socket); + new WebSocketThread(socket, messageQueue, buffer).start(); + } + } + + public void finish() { + finished = true; + } + + private boolean finished = false; +} + +/** + * web socket producer thread + * accepts content from web sockets and places them in the queue + */ +class WebSocketThread extends Thread { + public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue, ByteAccumulator buffer) { + this.webSocket = socket; + this.messageQueue = messageQueue; + this.buffer = buffer; + } + + @Override + public void run() { + try { + InputStream wsis = webSocket.getInputStream(); + byte[] bufferContent; + int data = wsis.read(); + while (finished == false && data != -1) { + if(data == 10) { + buffer.add((byte)0); + bufferContent = new byte[buffer.size()]; + buffer.toNativeArray(bufferContent); + messageQueue.push(new String(bufferContent)); + buffer.clear(); + bufferContent = null; + } else { + buffer.add((byte)data); + } + data = wsis.read(); + } + } catch (IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } catch(InterruptedException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + try { + webSocket.close(); + } catch (IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + } + + public void finish() { + finished = true; + } + + private boolean finished = false; + + private final WebSocket webSocket; + private StringMessageQueue messageQueue; + private ByteAccumulator buffer; +} + +/** + * web socket consumer thread + * takes messages from message queue and sends them to clients + */ +class WebSocketConsumerThread extends Thread { + public WebSocketConsumerThread(StringMessageQueue messageQueue, LinkedList connections) { + this.messageQueue = messageQueue; + this.connections = connections; + } + public void run() { + String message = ""; + WebSocket webSocket = null; + WebSocketServerOutputStream wsos = null; + while(!finished) { + try { + message = messageQueue.pop(); + ListIterator listIterator = connections.listIterator(); + while(listIterator.hasNext()) { + webSocket = listIterator.next(); + wsos = webSocket.getOutputStream(); + wsos.writeString(message); + } + } catch(IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + catch(InterruptedException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + } + } + private StringMessageQueue messageQueue; + private LinkedList connections; + private boolean finished = false; +} + +/** + * message queue + * keeps received messages + */ +class StringMessageQueue { + private Queue q = new LinkedList(); + synchronized String pop() throws InterruptedException { + while(q.isEmpty()) { + wait(); + } + String value = q.remove(); + notifyAll(); + return value; + } + synchronized void push(String message) throws InterruptedException { + q.add(message); + notifyAll(); + } +} + +/** + * byte accumulator + * accumulates bytes received from clients + */ +class ByteAccumulator { + LinkedList buffer = new LinkedList(); + public void add(byte thing) { + buffer.add(thing); + } + public void toNativeArray(byte[] buff) { + for(int i = 0; i < buffer.size(); i++) { + buff[i] = buffer.get(i); + } + } + public int size() { + return buffer.size(); + } + public void clear() { + buffer.clear(); + } +} From 50130826a9cb1a32a6e6899a099b571d8b1e69a6 Mon Sep 17 00:00:00 2001 From: no-glue Date: Tue, 3 Mar 2015 13:42:17 +0100 Subject: [PATCH 2/8] moved web socket consumer thread to different file --- .../websocket/example/EchoServerSync.java | 40 +------------------ 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java index 92fe313..543288d 100644 --- a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -3,6 +3,7 @@ import com.pmeade.websocket.io.WebSocketServerOutputStream; import com.pmeade.websocket.net.WebSocket; import com.pmeade.websocket.net.WebSocketServerSocket; +import com.pmeade.websocket.example.WebSocketConsumerThread; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; @@ -110,45 +111,6 @@ public void finish() { private ByteAccumulator buffer; } -/** - * web socket consumer thread - * takes messages from message queue and sends them to clients - */ -class WebSocketConsumerThread extends Thread { - public WebSocketConsumerThread(StringMessageQueue messageQueue, LinkedList connections) { - this.messageQueue = messageQueue; - this.connections = connections; - } - public void run() { - String message = ""; - WebSocket webSocket = null; - WebSocketServerOutputStream wsos = null; - while(!finished) { - try { - message = messageQueue.pop(); - ListIterator listIterator = connections.listIterator(); - while(listIterator.hasNext()) { - webSocket = listIterator.next(); - wsos = webSocket.getOutputStream(); - wsos.writeString(message); - } - } catch(IOException e) { - finished = true; - System.err.println(e.getLocalizedMessage()); - e.printStackTrace(System.err); - } - catch(InterruptedException e) { - finished = true; - System.err.println(e.getLocalizedMessage()); - e.printStackTrace(System.err); - } - } - } - private StringMessageQueue messageQueue; - private LinkedList connections; - private boolean finished = false; -} - /** * message queue * keeps received messages From a34577c4478893b197aebf8fb6fc48020b096f40 Mon Sep 17 00:00:00 2001 From: no-glue Date: Tue, 3 Mar 2015 13:44:31 +0100 Subject: [PATCH 3/8] moved string message queue to different file --- .../websocket/example/EchoServerSync.java | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java index 543288d..78b343a 100644 --- a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -4,6 +4,7 @@ import com.pmeade.websocket.net.WebSocket; import com.pmeade.websocket.net.WebSocketServerSocket; import com.pmeade.websocket.example.WebSocketConsumerThread; +import com.pmeade.websocket.example.StringMessageQueue; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; @@ -111,26 +112,6 @@ public void finish() { private ByteAccumulator buffer; } -/** - * message queue - * keeps received messages - */ -class StringMessageQueue { - private Queue q = new LinkedList(); - synchronized String pop() throws InterruptedException { - while(q.isEmpty()) { - wait(); - } - String value = q.remove(); - notifyAll(); - return value; - } - synchronized void push(String message) throws InterruptedException { - q.add(message); - notifyAll(); - } -} - /** * byte accumulator * accumulates bytes received from clients From 4c5a1e07a289f45621903f1194b021f6875cc1ae Mon Sep 17 00:00:00 2001 From: no-glue Date: Tue, 3 Mar 2015 13:49:15 +0100 Subject: [PATCH 4/8] moved byte accumulator to different file --- .../websocket/example/ByteAccumulator.java | 24 +++++++++ .../websocket/example/EchoServerSync.java | 23 +-------- .../websocket/example/StringMessageQueue.java | 24 +++++++++ .../example/WebSocketConsumerThread.java | 51 +++++++++++++++++++ 4 files changed, 100 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/pmeade/websocket/example/ByteAccumulator.java create mode 100644 src/main/java/com/pmeade/websocket/example/StringMessageQueue.java create mode 100644 src/main/java/com/pmeade/websocket/example/WebSocketConsumerThread.java diff --git a/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java b/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java new file mode 100644 index 0000000..7ae4a52 --- /dev/null +++ b/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java @@ -0,0 +1,24 @@ +package com.pmeade.websocket.example; + +import java.util.LinkedList; +/** + * byte accumulator + * accumulates bytes received from clients + */ +class ByteAccumulator { + LinkedList buffer = new LinkedList(); + public void add(byte thing) { + buffer.add(thing); + } + public void toNativeArray(byte[] buff) { + for(int i = 0; i < buffer.size(); i++) { + buff[i] = buffer.get(i); + } + } + public int size() { + return buffer.size(); + } + public void clear() { + buffer.clear(); + } +} diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java index 78b343a..fa9ba95 100644 --- a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -5,6 +5,7 @@ import com.pmeade.websocket.net.WebSocketServerSocket; import com.pmeade.websocket.example.WebSocketConsumerThread; import com.pmeade.websocket.example.StringMessageQueue; +import com.pmeade.websocket.example.ByteAccumulator; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; @@ -111,25 +112,3 @@ public void finish() { private StringMessageQueue messageQueue; private ByteAccumulator buffer; } - -/** - * byte accumulator - * accumulates bytes received from clients - */ -class ByteAccumulator { - LinkedList buffer = new LinkedList(); - public void add(byte thing) { - buffer.add(thing); - } - public void toNativeArray(byte[] buff) { - for(int i = 0; i < buffer.size(); i++) { - buff[i] = buffer.get(i); - } - } - public int size() { - return buffer.size(); - } - public void clear() { - buffer.clear(); - } -} diff --git a/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java b/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java new file mode 100644 index 0000000..5a57540 --- /dev/null +++ b/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java @@ -0,0 +1,24 @@ +package com.pmeade.websocket.example; + +import java.util.LinkedList; +import java.util.Queue; + +/** + * message queue + * keeps received messages + */ +class StringMessageQueue { + private Queue q = new LinkedList(); + synchronized String pop() throws InterruptedException { + while(q.isEmpty()) { + wait(); + } + String value = q.remove(); + notifyAll(); + return value; + } + synchronized void push(String message) throws InterruptedException { + q.add(message); + notifyAll(); + } +} diff --git a/src/main/java/com/pmeade/websocket/example/WebSocketConsumerThread.java b/src/main/java/com/pmeade/websocket/example/WebSocketConsumerThread.java new file mode 100644 index 0000000..49bbbd7 --- /dev/null +++ b/src/main/java/com/pmeade/websocket/example/WebSocketConsumerThread.java @@ -0,0 +1,51 @@ +package com.pmeade.websocket.example; + +import com.pmeade.websocket.io.WebSocketServerOutputStream; +import com.pmeade.websocket.net.WebSocket; +import com.pmeade.websocket.net.WebSocketServerSocket; +import java.io.IOException; +import java.io.InputStream; +import java.net.ServerSocket; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.ListIterator; +import java.util.Queue; +import java.util.Arrays; +/** + * web socket consumer thread + * takes messages from message queue and sends them to clients + */ +public class WebSocketConsumerThread extends Thread { + public WebSocketConsumerThread(StringMessageQueue messageQueue, LinkedList connections) { + this.messageQueue = messageQueue; + this.connections = connections; + } + public void run() { + String message = ""; + WebSocket webSocket = null; + WebSocketServerOutputStream wsos = null; + while(!finished) { + try { + message = messageQueue.pop(); + ListIterator listIterator = connections.listIterator(); + while(listIterator.hasNext()) { + webSocket = listIterator.next(); + wsos = webSocket.getOutputStream(); + wsos.writeString(message); + } + } catch(IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + catch(InterruptedException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + } + } + private StringMessageQueue messageQueue; + private LinkedList connections; + private boolean finished = false; +} From 87d9d5dfcea5469b30d8c514de1845dbf0150a99 Mon Sep 17 00:00:00 2001 From: no-glue Date: Tue, 3 Mar 2015 16:32:01 +0100 Subject: [PATCH 5/8] start sync server --- start-echo-server-sync | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 start-echo-server-sync diff --git a/start-echo-server-sync b/start-echo-server-sync new file mode 100755 index 0000000..e035ef5 --- /dev/null +++ b/start-echo-server-sync @@ -0,0 +1,21 @@ +#!/bin/bash +# start-echo-server-sync +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#---------------------------------------------------------------------------- + +java -cp "target/classes:target/dependency/*" com.pmeade.websocket.example.EchoServerSync + +#---------------------------------------------------------------------------- +# end of start-echo-server From c9108f28a8abef3b52bd7b0be8872ffe16f0041b Mon Sep 17 00:00:00 2001 From: no-glue Date: Thu, 12 Mar 2015 15:53:36 +0100 Subject: [PATCH 6/8] public class example --- .../websocket/example/ByteAccumulator.java | 2 +- .../websocket/example/EchoServerSync.java | 60 +-------------- .../websocket/example/StringMessageQueue.java | 2 +- .../websocket/example/WebSocketThread.java | 75 +++++++++++++++++++ start-echo-server-sync | 2 +- 5 files changed, 79 insertions(+), 62 deletions(-) create mode 100644 src/main/java/com/pmeade/websocket/example/WebSocketThread.java diff --git a/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java b/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java index 7ae4a52..fbd53ef 100644 --- a/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java +++ b/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java @@ -5,7 +5,7 @@ * byte accumulator * accumulates bytes received from clients */ -class ByteAccumulator { +public class ByteAccumulator { LinkedList buffer = new LinkedList(); public void add(byte thing) { buffer.add(thing); diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java index fa9ba95..139a5cc 100644 --- a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -6,6 +6,7 @@ import com.pmeade.websocket.example.WebSocketConsumerThread; import com.pmeade.websocket.example.StringMessageQueue; import com.pmeade.websocket.example.ByteAccumulator; +import com.pmeade.websocket.example.WebSocketThread; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; @@ -53,62 +54,3 @@ public void finish() { private boolean finished = false; } - -/** - * web socket producer thread - * accepts content from web sockets and places them in the queue - */ -class WebSocketThread extends Thread { - public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue, ByteAccumulator buffer) { - this.webSocket = socket; - this.messageQueue = messageQueue; - this.buffer = buffer; - } - - @Override - public void run() { - try { - InputStream wsis = webSocket.getInputStream(); - byte[] bufferContent; - int data = wsis.read(); - while (finished == false && data != -1) { - if(data == 10) { - buffer.add((byte)0); - bufferContent = new byte[buffer.size()]; - buffer.toNativeArray(bufferContent); - messageQueue.push(new String(bufferContent)); - buffer.clear(); - bufferContent = null; - } else { - buffer.add((byte)data); - } - data = wsis.read(); - } - } catch (IOException e) { - finished = true; - System.err.println(e.getLocalizedMessage()); - e.printStackTrace(System.err); - } catch(InterruptedException e) { - finished = true; - System.err.println(e.getLocalizedMessage()); - e.printStackTrace(System.err); - } - try { - webSocket.close(); - } catch (IOException e) { - finished = true; - System.err.println(e.getLocalizedMessage()); - e.printStackTrace(System.err); - } - } - - public void finish() { - finished = true; - } - - private boolean finished = false; - - private final WebSocket webSocket; - private StringMessageQueue messageQueue; - private ByteAccumulator buffer; -} diff --git a/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java b/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java index 5a57540..373eabb 100644 --- a/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java +++ b/src/main/java/com/pmeade/websocket/example/StringMessageQueue.java @@ -7,7 +7,7 @@ * message queue * keeps received messages */ -class StringMessageQueue { +public class StringMessageQueue { private Queue q = new LinkedList(); synchronized String pop() throws InterruptedException { while(q.isEmpty()) { diff --git a/src/main/java/com/pmeade/websocket/example/WebSocketThread.java b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java new file mode 100644 index 0000000..d8568fa --- /dev/null +++ b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java @@ -0,0 +1,75 @@ +package com.pmeade.websocket.example; + +import com.pmeade.websocket.io.WebSocketServerOutputStream; +import com.pmeade.websocket.net.WebSocket; +import com.pmeade.websocket.net.WebSocketServerSocket; +import com.pmeade.websocket.example.WebSocketConsumerThread; +import com.pmeade.websocket.example.StringMessageQueue; +import com.pmeade.websocket.example.ByteAccumulator; +import java.io.IOException; +import java.io.InputStream; +import java.net.ServerSocket; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.ListIterator; +import java.util.Queue; +import java.util.Arrays; + +/** + * web socket producer thread + * accepts content from web sockets and places them in the queue + */ +public class WebSocketThread extends Thread { + public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue, ByteAccumulator buffer) { + this.webSocket = socket; + this.messageQueue = messageQueue; + this.buffer = buffer; + } + + @Override + public void run() { + try { + InputStream wsis = webSocket.getInputStream(); + byte[] bufferContent; + int data = wsis.read(); + while (finished == false && data != -1) { + if(data == 10) { + buffer.add((byte)0); + bufferContent = new byte[buffer.size()]; + buffer.toNativeArray(bufferContent); + messageQueue.push(new String(bufferContent)); + buffer.clear(); + bufferContent = null; + } else { + buffer.add((byte)data); + } + data = wsis.read(); + } + } catch (IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } catch(InterruptedException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + try { + webSocket.close(); + } catch (IOException e) { + finished = true; + System.err.println(e.getLocalizedMessage()); + e.printStackTrace(System.err); + } + } + + public void finish() { + finished = true; + } + + private boolean finished = false; + + private final WebSocket webSocket; + private StringMessageQueue messageQueue; + private ByteAccumulator buffer; +} diff --git a/start-echo-server-sync b/start-echo-server-sync index e035ef5..5878cdd 100755 --- a/start-echo-server-sync +++ b/start-echo-server-sync @@ -15,7 +15,7 @@ # along with this program. If not, see . #---------------------------------------------------------------------------- -java -cp "target/classes:target/dependency/*" com.pmeade.websocket.example.EchoServerSync +java -cp "$HOME/java_apps/websocket/target/classes:$HOME/java_apps/websocket/target/dependency/*" com.pmeade.websocket.example.EchoServerSync #---------------------------------------------------------------------------- # end of start-echo-server From 0a41e2e4825db2e49dce5713574b0b822db35745 Mon Sep 17 00:00:00 2001 From: no-glue Date: Thu, 12 Mar 2015 17:50:41 +0100 Subject: [PATCH 7/8] readline --- .../websocket/example/WebSocketThread.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/pmeade/websocket/example/WebSocketThread.java b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java index d8568fa..78501d4 100644 --- a/src/main/java/com/pmeade/websocket/example/WebSocketThread.java +++ b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java @@ -6,6 +6,7 @@ import com.pmeade.websocket.example.WebSocketConsumerThread; import com.pmeade.websocket.example.StringMessageQueue; import com.pmeade.websocket.example.ByteAccumulator; +import com.pmeade.websocket.io.LineInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; @@ -30,20 +31,11 @@ public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue, ByteAc public void run() { try { InputStream wsis = webSocket.getInputStream(); - byte[] bufferContent; - int data = wsis.read(); - while (finished == false && data != -1) { - if(data == 10) { - buffer.add((byte)0); - bufferContent = new byte[buffer.size()]; - buffer.toNativeArray(bufferContent); - messageQueue.push(new String(bufferContent)); - buffer.clear(); - bufferContent = null; - } else { - buffer.add((byte)data); - } - data = wsis.read(); + LineInputStream line = new LineInputStream(wsis); + String lineStr = ""; + while (finished == false) { + lineStr = line.readLine(); + messageQueue.push(lineStr); } } catch (IOException e) { finished = true; From ae9e9a6fb119fe8deede6d797ccd4a6343188bff Mon Sep 17 00:00:00 2001 From: no-glue Date: Thu, 12 Mar 2015 18:00:44 +0100 Subject: [PATCH 8/8] readline --- .../websocket/example/ByteAccumulator.java | 24 ------------------- .../websocket/example/EchoServerSync.java | 4 +--- .../websocket/example/WebSocketThread.java | 4 +--- 3 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/com/pmeade/websocket/example/ByteAccumulator.java diff --git a/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java b/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java deleted file mode 100644 index fbd53ef..0000000 --- a/src/main/java/com/pmeade/websocket/example/ByteAccumulator.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.pmeade.websocket.example; - -import java.util.LinkedList; -/** - * byte accumulator - * accumulates bytes received from clients - */ -public class ByteAccumulator { - LinkedList buffer = new LinkedList(); - public void add(byte thing) { - buffer.add(thing); - } - public void toNativeArray(byte[] buff) { - for(int i = 0; i < buffer.size(); i++) { - buff[i] = buffer.get(i); - } - } - public int size() { - return buffer.size(); - } - public void clear() { - buffer.clear(); - } -} diff --git a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java index 139a5cc..e1eae5f 100644 --- a/src/main/java/com/pmeade/websocket/example/EchoServerSync.java +++ b/src/main/java/com/pmeade/websocket/example/EchoServerSync.java @@ -5,7 +5,6 @@ import com.pmeade.websocket.net.WebSocketServerSocket; import com.pmeade.websocket.example.WebSocketConsumerThread; import com.pmeade.websocket.example.StringMessageQueue; -import com.pmeade.websocket.example.ByteAccumulator; import com.pmeade.websocket.example.WebSocketThread; import java.io.IOException; import java.io.InputStream; @@ -39,12 +38,11 @@ public void doIt() throws Exception = new WebSocketServerSocket(serverSocket); StringMessageQueue messageQueue = new StringMessageQueue(); LinkedList connections = new LinkedList(); - ByteAccumulator buffer = new ByteAccumulator(); new WebSocketConsumerThread(messageQueue, connections).start(); while(finished == false) { WebSocket socket = webSocketServerSocket.accept(); connections.add(socket); - new WebSocketThread(socket, messageQueue, buffer).start(); + new WebSocketThread(socket, messageQueue).start(); } } diff --git a/src/main/java/com/pmeade/websocket/example/WebSocketThread.java b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java index 78501d4..5ee05e1 100644 --- a/src/main/java/com/pmeade/websocket/example/WebSocketThread.java +++ b/src/main/java/com/pmeade/websocket/example/WebSocketThread.java @@ -21,10 +21,9 @@ * accepts content from web sockets and places them in the queue */ public class WebSocketThread extends Thread { - public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue, ByteAccumulator buffer) { + public WebSocketThread(WebSocket socket, StringMessageQueue messageQueue) { this.webSocket = socket; this.messageQueue = messageQueue; - this.buffer = buffer; } @Override @@ -63,5 +62,4 @@ public void finish() { private final WebSocket webSocket; private StringMessageQueue messageQueue; - private ByteAccumulator buffer; }