org.apache.tomcat.util.buf.Utf8Decoder Java Examples

The following examples show how to use org.apache.tomcat.util.buf.Utf8Decoder. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: StreamInbound.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
@Override
public final SocketState onData() throws IOException {
    // Must be start the start of a message (which may consist of multiple
    // frames)
    WsInputStream wsIs = new WsInputStream(processor, getWsOutbound());

    try {
        WsFrame frame = wsIs.nextFrame(false);

        while (frame != null) {
            // TODO User defined extensions may define values for rsv
            if (frame.getRsv() > 0) {
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }

            byte opCode = frame.getOpCode();

            if (opCode == Constants.OPCODE_BINARY) {
                doOnBinaryData(wsIs);
            } else if (opCode == Constants.OPCODE_TEXT) {
                InputStreamReader r =
                        new InputStreamReader(wsIs, new Utf8Decoder());
                doOnTextData(r);
            } else if (opCode == Constants.OPCODE_CLOSE){
                closeOutboundConnection(frame);
                return SocketState.CLOSED;
            } else if (opCode == Constants.OPCODE_PING) {
                getWsOutbound().pong(frame.getPayLoad());
            } else if (opCode == Constants.OPCODE_PONG) {
                doOnPong(frame.getPayLoad());
            } else {
                // Unknown OpCode
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }
            frame = wsIs.nextFrame(false);
        }
    } catch (MalformedInputException mie) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (UnmappableCharacterException uce) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (IOException ioe) {
        // Given something must have gone to reach this point, this
        // might not work but try it anyway.
        closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
        return SocketState.CLOSED;
    }
    return SocketState.UPGRADED;
}
 
Example #2
Source File: StreamInbound.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
@Override
public final SocketState onData() throws IOException {
    // Must be start the start of a message (which may consist of multiple
    // frames)
    WsInputStream wsIs = new WsInputStream(processor, getWsOutbound());

    try {
        WsFrame frame = wsIs.nextFrame(false);

        while (frame != null) {
            // TODO User defined extensions may define values for rsv
            if (frame.getRsv() > 0) {
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }

            byte opCode = frame.getOpCode();

            if (opCode == Constants.OPCODE_BINARY) {
                doOnBinaryData(wsIs);
            } else if (opCode == Constants.OPCODE_TEXT) {
                InputStreamReader r =
                        new InputStreamReader(wsIs, new Utf8Decoder());
                doOnTextData(r);
            } else if (opCode == Constants.OPCODE_CLOSE){
                closeOutboundConnection(frame);
                return SocketState.CLOSED;
            } else if (opCode == Constants.OPCODE_PING) {
                getWsOutbound().pong(frame.getPayLoad());
            } else if (opCode == Constants.OPCODE_PONG) {
                doOnPong(frame.getPayLoad());
            } else {
                // Unknown OpCode
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }
            frame = wsIs.nextFrame(false);
        }
    } catch (MalformedInputException mie) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (UnmappableCharacterException uce) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (IOException ioe) {
        // Given something must have gone to reach this point, this
        // might not work but try it anyway.
        closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
        return SocketState.CLOSED;
    }
    return SocketState.UPGRADED;
}