Search in sources :

Example 1 with AbstractHttp2Frame

use of com.webpieces.http2parser.api.dto.lib.AbstractHttp2Frame in project webpieces by deanhiller.

the class Http2ParserImpl method parseBody.

private boolean parseBody(Http2MementoImpl state) {
    DataWrapper allData = state.getLeftOverData();
    FrameHeaderData headerData = state.getFrameHeaderData();
    if (headerData == null)
        throw new IllegalArgumentException("Bug, this should never be null at this point");
    int payloadLen = headerData.getPayloadLength();
    if (allData.getReadableSize() < payloadLen)
        return false;
    List<? extends DataWrapper> split = dataGen.split(allData, payloadLen);
    DataWrapper framePayloadData = split.get(0);
    AbstractHttp2Frame frame;
    Optional<Http2FrameType> optFrameType = Http2FrameType.fromId(headerData.getFrameTypeId());
    if (optFrameType.isPresent()) {
        Http2FrameType frameType = optFrameType.get();
        FrameMarshaller marshaller = dtoToMarshaller.get(frameType);
        if (marshaller == null)
            throw new IllegalArgumentException("bug, our developer forgot to add marshaller and only added the enum=" + frameType);
        frame = marshaller.unmarshal(state, framePayloadData);
    } else {
        frame = new UnknownFrame(headerData.getFlagsByte(), headerData.getFrameTypeId(), headerData.getStreamId(), framePayloadData);
    }
    //reset header data
    state.setFrameHeaderData(null);
    //set leftover data
    state.setLeftOverData(split.get(1));
    state.addParsedFrame(frame);
    return true;
}
Also used : DataWrapper(org.webpieces.data.api.DataWrapper) UnknownFrame(com.webpieces.http2parser.api.dto.UnknownFrame) FrameMarshaller(com.webpieces.http2parser.impl.marshallers.FrameMarshaller) Http2FrameType(com.webpieces.http2parser.api.dto.lib.Http2FrameType) AbstractHttp2Frame(com.webpieces.http2parser.api.dto.lib.AbstractHttp2Frame)

Aggregations

UnknownFrame (com.webpieces.http2parser.api.dto.UnknownFrame)1 AbstractHttp2Frame (com.webpieces.http2parser.api.dto.lib.AbstractHttp2Frame)1 Http2FrameType (com.webpieces.http2parser.api.dto.lib.Http2FrameType)1 FrameMarshaller (com.webpieces.http2parser.impl.marshallers.FrameMarshaller)1 DataWrapper (org.webpieces.data.api.DataWrapper)1