Author: markt
Date: Thu Feb 23 11:35:24 2012
New Revision: 1292749
URL: http://svn.apache.org/viewvc?rev=1292749&view=rev
Log:
More javadoc and cleanup
Modified:
tomcat/trunk/java/org/apache/catalina/websocket/WsFrame.java
tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java
tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java
Modified: tomcat/trunk/java/org/apache/catalina/websocket/WsFrame.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/WsFrame.java?rev=1292749&r1=1292748&r2=1292749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/websocket/WsFrame.java (original)
+++ tomcat/trunk/java/org/apache/catalina/websocket/WsFrame.java Thu Feb 23
11:35:24 2012
@@ -23,7 +23,7 @@ import org.apache.catalina.util.Conversi
import org.apache.coyote.http11.upgrade.UpgradeProcessor;
/**
- * Represents a WebSocket frame with the exception of the payload for
+ * Represents a complete WebSocket frame with the exception of the payload for
* non-control frames.
*/
public class WsFrame {
@@ -35,6 +35,17 @@ public class WsFrame {
private long payloadLength;
private ByteBuffer payload;
+ /**
+ * Create the new WebSocket frame, reading data from the processor as
+ * necessary.
+ *
+ * @param processor Processor associated with the WebSocket connection on
+ * which the frame has been sent
+ *
+ * @throws IOException If a problem occurs processing the frame. Any
+ * exception will trigger the closing of the WebSocket
+ * connection.
+ */
public WsFrame(UpgradeProcessor<?> processor) throws IOException {
int b = processorRead(processor);
Modified: tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java?rev=1292749&r1=1292748&r2=1292749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java Thu Feb
23 11:35:24 2012
@@ -37,6 +37,7 @@ public class WsInputStream extends java.
private String error = null;
+
public WsInputStream(UpgradeProcessor<?> processor, WsOutbound outbound)
throws IOException {
this.processor = processor;
@@ -44,10 +45,12 @@ public class WsInputStream extends java.
processFrame();
}
+
public WsFrame getFrame() {
return frame;
}
+
private void processFrame() throws IOException {
frame = new WsFrame(processor);
readThisFragment = 0;
@@ -73,8 +76,8 @@ public class WsInputStream extends java.
} else if (getFrame().getOpCode() == Constants.OPCODE_CLOSE) {
outbound.close(frame);
} else{
- // TODO
- throw new IOException("TODO");
+ // TODO i18n
+ throw new IOException("Unknown control frame");
}
processFrame();
}
Modified: tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java?rev=1292749&r1=1292748&r2=1292749&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java (original)
+++ tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java Thu Feb 23
11:35:24 2012
@@ -25,6 +25,9 @@ import java.nio.charset.CoderResult;
import org.apache.coyote.http11.upgrade.UpgradeOutbound;
import org.apache.tomcat.util.buf.B2CConverter;
+/**
+ * Provides the means to write WebSocket messages to the client.
+ */
public class WsOutbound {
private static final int DEFAULT_BUFFER_SIZE = 8192;
@@ -45,6 +48,18 @@ public class WsOutbound {
}
+ /**
+ * Adds the data to the buffer for binary data. If a textual message is
+ * currently in progress that message will be completed and a new binary
+ * message started. If the buffer for binary data is full, the buffer will
+ * be flushed and a new binary continuation fragment started.
+ *
+ * @param b The byte (only the least significant byte is used) of data to
+ * send to the client.
+ *
+ * @throws IOException If a flush is required and an error occurs writing
+ * the WebSocket frame to the client
+ */
public void writeBinaryData(int b) throws IOException {
if (bb.position() == bb.capacity()) {
doFlush(false);
@@ -60,6 +75,17 @@ public class WsOutbound {
}
+ /**
+ * Adds the data to the buffer for textual data. If a binary message is
+ * currently in progress that message will be completed and a new textual
+ * message started. If the buffer for textual data is full, the buffer will
+ * be flushed and a new textual continuation fragment started.
+ *
+ * @param b The character to send to the client.
+ *
+ * @throws IOException If a flush is required and an error occurs writing
+ * the WebSocket frame to the client
+ */
public void writeTextData(char c) throws IOException {
if (cb.position() == cb.capacity()) {
doFlush(false);
@@ -100,6 +126,7 @@ public class WsOutbound {
doFlush(true);
}
+
private void doFlush(boolean finalFragment) throws IOException {
if (text == null) {
// No data
@@ -138,6 +165,7 @@ public class WsOutbound {
}
}
+
private boolean validateCloseStatus(int status) {
if (status == 1000 || status == 1001 || status == 1002 ||
@@ -155,6 +183,7 @@ public class WsOutbound {
return false;
}
+
public void close(int status, ByteBuffer data) throws IOException {
// TODO Think about threading requirements for writing. This is not
// currently thread safe and writing almost certainly needs to be.
@@ -184,6 +213,7 @@ public class WsOutbound {
upgradeOutbound = null;
}
+
public void pong(ByteBuffer data) throws IOException {
// TODO Think about threading requirements for writing. This is not
// currently thread safe and writing almost certainly needs to be.
@@ -204,6 +234,7 @@ public class WsOutbound {
upgradeOutbound.flush();
}
+
/**
* Writes the provided bytes as the payload in a new WebSocket frame.
*
@@ -269,6 +300,9 @@ public class WsOutbound {
}
+ /*
+ * Convert the textual message to bytes and then output it.
+ */
private void doWriteText(CharBuffer buffer, boolean finalFragment)
throws IOException {
CharsetEncoder encoder = B2CConverter.UTF_8.newEncoder();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]