/** * Create a new {@link io.undertow.server.protocol.framed.AbstractFramedChannel} * 8 * * @param connectedStreamChannel The {@link org.xnio.channels.ConnectedStreamChannel} over which the WebSocket Frames should get send and received. * Be aware that it already must be "upgraded". * @param bufferPool The {@link org.xnio.Pool} which will be used to acquire {@link java.nio.ByteBuffer}'s from. */ public AjpClientChannel(StreamConnection connectedStreamChannel, ByteBufferPool bufferPool, OptionMap settings) { super(connectedStreamChannel, bufferPool, AjpClientFramePriority.INSTANCE, null, settings); ajpParser = new AjpResponseParser(); }
return new StringHolder(headers(stringLength & 0xFF));
@Override protected FrameHeaderData parseFrame(ByteBuffer data) throws IOException { ajpParser.parse(data); if (ajpParser.isComplete()) { try { AjpResponseParser parser = ajpParser; if (parser.prefix == FRAME_TYPE_SEND_HEADERS) { return new SendHeadersResponse(parser.statusCode, parser.reasonPhrase, parser.headers); } else if (parser.prefix == FRAME_TYPE_REQUEST_BODY_CHUNK) { return new RequestBodyChunk(parser.readBodyChunkSize); } else if (parser.prefix == FRAME_TYPE_SEND_BODY_CHUNK) { return new SendBodyChunk(parser.currentIntegerPart + 1); //+1 for the null terminator } else if (parser.prefix == FRAME_TYPE_END_RESPONSE) { boolean persistent = parser.currentIntegerPart != 0; if (!persistent) { lastFrameReceived = true; lastFrameSent = true; } return new EndResponse(); } else if (parser.prefix == FRAME_TYPE_CPONG) { return new CpongResponse(); } else { UndertowLogger.ROOT_LOGGER.debug("UNKOWN FRAME"); } } finally { ajpParser.reset(); } } return null; }
IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { return; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_DATA_SIZE; IntegerHolder result = parse16BitInteger(buf); if (result.readComplete) { if (this.prefix == FRAME_TYPE_SEND_HEADERS) { StringHolder result = parseString(buf, false); if (result.readComplete) { reasonPhrase = result.value; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_NUM_HEADERS; while (readHeaders < this.numHeaders) { if (this.currentHeader == null) { StringHolder result = parseString(buf, true); if (!result.readComplete) { this.state = READING_HEADERS; StringHolder result = parseString(buf, false); if (!result.readComplete) { this.state = READING_HEADERS;
IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { return; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_DATA_SIZE; IntegerHolder result = parse16BitInteger(buf); if (result.readComplete) { if (this.prefix == FRAME_TYPE_SEND_HEADERS) { StringHolder result = parseString(buf, false); if (result.readComplete) { reasonPhrase = result.value; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_NUM_HEADERS; while (readHeaders < this.numHeaders) { if (this.currentHeader == null) { StringHolder result = parseString(buf, true); if (!result.readComplete) { this.state = READING_HEADERS; StringHolder result = parseString(buf, false); if (!result.readComplete) { this.state = READING_HEADERS;
@Override protected FrameHeaderData parseFrame(ByteBuffer data) throws IOException { ajpParser.parse(data); if (ajpParser.isComplete()) { try { AjpResponseParser parser = ajpParser; if (parser.prefix == FRAME_TYPE_SEND_HEADERS) { return new SendHeadersResponse(parser.statusCode, parser.reasonPhrase, parser.headers); } else if (parser.prefix == FRAME_TYPE_REQUEST_BODY_CHUNK) { return new RequestBodyChunk(parser.readBodyChunkSize); } else if (parser.prefix == FRAME_TYPE_SEND_BODY_CHUNK) { return new SendBodyChunk(parser.currentIntegerPart + 1); //+1 for the null terminator } else if (parser.prefix == FRAME_TYPE_END_RESPONSE) { boolean persistent = parser.currentIntegerPart != 0; if (!persistent) { lastFrameReceived = true; lastFrameSent = true; } return new EndResponse(); } else if (parser.prefix == FRAME_TYPE_CPONG) { return new CpongResponse(); } else { UndertowLogger.ROOT_LOGGER.debug("UNKOWN FRAME"); } } finally { ajpParser.reset(); } } return null; }
IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { return; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_DATA_SIZE; IntegerHolder result = parse16BitInteger(buf); if (result.readComplete) { if (this.prefix == FRAME_TYPE_SEND_HEADERS) { StringHolder result = parseString(buf, false); if (result.readComplete) { reasonPhrase = result.value; IntegerHolder result = parse16BitInteger(buf); if (!result.readComplete) { this.state = READING_NUM_HEADERS; while (readHeaders < this.numHeaders) { if (this.currentHeader == null) { StringHolder result = parseString(buf, true); if (!result.readComplete) { this.state = READING_HEADERS; StringHolder result = parseString(buf, false); if (!result.readComplete) { this.state = READING_HEADERS;
/** * Create a new {@link io.undertow.server.protocol.framed.AbstractFramedChannel} * 8 * * @param connectedStreamChannel The {@link org.xnio.channels.ConnectedStreamChannel} over which the WebSocket Frames should get send and received. * Be aware that it already must be "upgraded". * @param bufferPool The {@link org.xnio.Pool} which will be used to acquire {@link java.nio.ByteBuffer}'s from. */ public AjpClientChannel(StreamConnection connectedStreamChannel, ByteBufferPool bufferPool, OptionMap settings) { super(connectedStreamChannel, bufferPool, AjpClientFramePriority.INSTANCE, null, settings); ajpParser = new AjpResponseParser(); }
return new StringHolder(headers(stringLength & 0xFF));
@Override protected FrameHeaderData parseFrame(ByteBuffer data) throws IOException { ajpParser.parse(data); if (ajpParser.isComplete()) { try { AjpResponseParser parser = ajpParser; if (parser.prefix == FRAME_TYPE_SEND_HEADERS) { return new SendHeadersResponse(parser.statusCode, parser.reasonPhrase, parser.headers); } else if (parser.prefix == FRAME_TYPE_REQUEST_BODY_CHUNK) { return new RequestBodyChunk(parser.readBodyChunkSize); } else if (parser.prefix == FRAME_TYPE_SEND_BODY_CHUNK) { return new SendBodyChunk(parser.currentIntegerPart + 1); //+1 for the null terminator } else if (parser.prefix == FRAME_TYPE_END_RESPONSE) { boolean persistent = parser.currentIntegerPart != 0; if (!persistent) { lastFrameReceived = true; lastFrameSent = true; } return new EndResponse(); } else if (parser.prefix == FRAME_TYPE_CPONG) { return new CpongResponse(); } else { UndertowLogger.ROOT_LOGGER.debug("UNKOWN FRAME"); } } finally { ajpParser.reset(); } } return null; }
/** * Create a new {@link io.undertow.server.protocol.framed.AbstractFramedChannel} * 8 * * @param connectedStreamChannel The {@link org.xnio.channels.ConnectedStreamChannel} over which the WebSocket Frames should get send and received. * Be aware that it already must be "upgraded". * @param bufferPool The {@link org.xnio.Pool} which will be used to acquire {@link java.nio.ByteBuffer}'s from. */ public AjpClientChannel(StreamConnection connectedStreamChannel, ByteBufferPool bufferPool, OptionMap settings) { super(connectedStreamChannel, bufferPool, AjpClientFramePriority.INSTANCE, null, settings); ajpParser = new AjpResponseParser(); }
return new StringHolder(headers(stringLength & 0xFF));