diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java index c61399196..040a917e3 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleReader.java @@ -1,9 +1,6 @@ package net.sourceforge.guacamole.io; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -22,6 +19,9 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction; * along with this program. If not, see . */ +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction; + /** * Provides abstract and raw character read access to a stream of Guacamole * instructions. diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java index 71ceb6b6e..a4bb7c041 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/GuacamoleWriter.java @@ -1,9 +1,6 @@ package net.sourceforge.guacamole.io; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -22,6 +19,9 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction; * along with this program. If not, see . */ +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction; + /** * Provides abstract and raw character write access to a stream of Guacamole * instructions. diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java index 66638b1ca..7443d56c8 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/ReaderGuacamoleReader.java @@ -1,12 +1,6 @@ package net.sourceforge.guacamole.io; -import java.io.IOException; -import java.io.Reader; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -25,6 +19,12 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; * along with this program. If not, see . */ +import java.io.IOException; +import java.io.Reader; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; + /** * A GuacamoleReader which wraps a standard Java Reader, using that Reader as * the Guacamole instruction stream. @@ -54,6 +54,17 @@ public class ReaderGuacamoleReader implements GuacamoleReader { @Override public char[] read() throws GuacamoleException { + // If data was previously read via readInstruction(), return remaining + // data instead of reading more. + if (instructionBuffer != null) { + + char[] chunk = new char[instructionBuffer.length - instructionStart]; + System.arraycopy(instructionBuffer, instructionStart, chunk, 0, chunk.length); + instructionBuffer = null; + + return chunk; + } + try { // While we're blocking, or input is available diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java index cfa8a6d0f..78f425519 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/io/WriterGuacamoleWriter.java @@ -1,11 +1,6 @@ package net.sourceforge.guacamole.io; -import java.io.IOException; -import java.io.Writer; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -24,6 +19,11 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction; * along with this program. If not, see . */ +import java.io.IOException; +import java.io.Writer; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction; + /** * A GuacamoleWriter which wraps a standard Java Writer, using that Writer as * the Guacamole instruction stream. diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java index bb6b58722..a61b12508 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/net/GuacamoleSocket.java @@ -1,10 +1,6 @@ package net.sourceforge.guacamole.net; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.io.GuacamoleReader; -import net.sourceforge.guacamole.io.GuacamoleWriter; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -23,6 +19,10 @@ import net.sourceforge.guacamole.io.GuacamoleWriter; * along with this program. If not, see . */ +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.io.GuacamoleReader; +import net.sourceforge.guacamole.io.GuacamoleWriter; + /** * Provides abstract socket-like access to a Guacamole connection. * diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java index 145df86ff..0db73caac 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/properties/GuacamoleProperty.java @@ -1,8 +1,6 @@ package net.sourceforge.guacamole.properties; -import net.sourceforge.guacamole.GuacamoleException; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -21,6 +19,8 @@ import net.sourceforge.guacamole.GuacamoleException; * along with this program. If not, see . */ +import net.sourceforge.guacamole.GuacamoleException; + /** * An abstract representation of a property in the guacamole.properties file, * which parses into a specific type. diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java index afa5ad8d0..3406da582 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/ConfiguredGuacamoleSocket.java @@ -1,12 +1,6 @@ package net.sourceforge.guacamole.protocol; -import net.sourceforge.guacamole.io.GuacamoleReader; -import net.sourceforge.guacamole.io.GuacamoleWriter; -import net.sourceforge.guacamole.GuacamoleException; -import net.sourceforge.guacamole.net.GuacamoleSocket; -import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -25,6 +19,12 @@ import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; * along with this program. If not, see . */ +import net.sourceforge.guacamole.io.GuacamoleReader; +import net.sourceforge.guacamole.io.GuacamoleWriter; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.net.GuacamoleSocket; +import net.sourceforge.guacamole.protocol.GuacamoleInstruction.Operation; + /** * A GuacamoleSocket which pre-configures the connection based on a given * GuacamoleConfiguration, completing the initial protocol handshake before diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java index 728e3f8e8..878dbb2de 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleConfiguration.java @@ -1,8 +1,6 @@ package net.sourceforge.guacamole.protocol; -import java.util.HashMap; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -21,6 +19,8 @@ import java.util.HashMap; * along with this program. If not, see . */ +import java.util.HashMap; + /** * All information necessary to complete the initial protocol handshake of a * Guacamole session. diff --git a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java index f0d65a3f0..bf8f7f614 100644 --- a/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java +++ b/guacamole-common/src/main/java/net/sourceforge/guacamole/protocol/GuacamoleInstruction.java @@ -1,8 +1,6 @@ package net.sourceforge.guacamole.protocol; -import java.util.HashMap; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -21,6 +19,8 @@ import java.util.HashMap; * along with this program. If not, see . */ +import java.util.HashMap; + /** * An abstract representation of a Guacamole instruction, as defined by the * Guacamole protocol.