use of com.webpieces.http2parser.impl.marshallers.FrameMarshaller 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;
}
use of com.webpieces.http2parser.impl.marshallers.FrameMarshaller in project webpieces by deanhiller.
the class Http2ParserImpl method marshal.
@Override
public DataWrapper marshal(Http2Frame frame) {
Http2FrameType frameType = frame.getFrameType();
FrameMarshaller marshaller = dtoToMarshaller.get(frameType);
if (marshaller == null)
throw new IllegalArgumentException("unknown frame bean=" + frame);
return marshaller.marshal(frame);
}
Aggregations