private HttpChunk createHttpChunk(MementoImpl memento, int i) { DataWrapper dataToRead = memento.getLeftOverData(); List<? extends DataWrapper> split = dataGen.split(dataToRead, i+2); DataWrapper chunkMetaData = split.get(0); memento.setLeftOverData(split.get(1));
private void readInBody(MementoImpl memento, boolean stripAndCompareLastTwo) { HttpPayload message = memento.getHalfParsedMessage(); DataWrapper dataToRead = memento.getLeftOverData(); int readableSize = dataToRead.getReadableSize(); int numBytesNeeded = memento.getNumBytesLeftToRead(); if(numBytesNeeded <= readableSize) { List<? extends DataWrapper> split = dataGen.split(dataToRead, numBytesNeeded); DataWrapper data = split.get(0); if(stripAndCompareLastTwo) { List<? extends DataWrapper> splitPieces = dataGen.split(data, data.getReadableSize()-2); data = splitPieces.get(0); DataWrapper trailer = splitPieces.get(1); String trailerStr = trailer.createStringFrom(0, trailer.getReadableSize(), iso8859_1); if(!TRAILER_STR.equals(trailerStr)) throw new IllegalStateException("The chunk did not end with \\r\\n . The format is invalid"); } message.setBody(data); memento.setLeftOverData(split.get(1)); memento.setNumBytesLeftToRead(0); memento.getParsedMessages().add(message); //clear any cached message we were waiting for more data for memento.setHalfParsedMessage(null); return; } }
int prefaceLength = Http2EngineImpl.prefaceHexString.length()/2; if(combined.getReadableSize() >= prefaceLength) { List<? extends DataWrapper> split = Http2EngineImpl.wrapperGen.split(combined, prefaceLength); if(Arrays.equals(split.get(0).createByteArray(), (DatatypeConverter.parseHexBinary(Http2EngineImpl.prefaceHexString)))) { gotPreface.set(true);
List<? extends DataWrapper> tuple = dataGen.split(dataToRead, i+4); DataWrapper toBeParsed = tuple.get(0); memento.setLeftOverData(tuple.get(1));
List<? extends DataWrapper> split = wrapperGen.split(body, (int) maxLength); newFrame.setData(split.get(0)); log.info("writing non-final data frame: " + newFrame);