@Override public CompletableFuture<Void> packetEncrypted(ByteBuffer engineToSocketData) { if(encryptedData != null) { DataWrapper newBuf = dataGen.wrapByteBuffer(engineToSocketData); encryptedData = dataGen.chainDataWrappers(encryptedData, newBuf); return CompletableFuture.completedFuture(null); } encryptedData = dataGen.wrapByteBuffer(engineToSocketData); return CompletableFuture.completedFuture(null); }
@Override public CompletableFuture<Void> sendEncryptedHandshakeData(ByteBuffer engineToSocketData) { if(encryptedData != null) { DataWrapper newBuf = dataGen.wrapByteBuffer(engineToSocketData); encryptedData = dataGen.chainDataWrappers(encryptedData, newBuf); return CompletableFuture.completedFuture(null); } encryptedData = dataGen.wrapByteBuffer(engineToSocketData); return CompletableFuture.completedFuture(null); }
private ByteBuffer translate(List<Http2Msg> frames) { DataWrapper allData = dataGen.emptyWrapper(); for(Http2Msg f : frames) { DataWrapper data = this.http2EngineImpl.marshal(f); allData = dataGen.chainDataWrappers(allData, data); } byte[] byteArray = allData.createByteArray(); return ByteBuffer.wrap(byteArray); }
@Override public CompletableFuture<Void> incomingData(HttpData chunk) { DataWrapper allData = dataGen.chainDataWrappers(response.getData(), chunk.getBodyNonNull()); response.setData(allData); if(chunk.isEndOfData()) { future.complete(response); response = null; } return CompletableFuture.completedFuture(null); } }
public void uncompressBodyAndAssertContainsString(String text) { Header header = getResponse().getHeaderLookupStruct().getHeader(KnownHeaderName.CONTENT_ENCODING); if(header == null) throw new IllegalStateException("Body is not compressed as no CONTENT_ENCODING header field exists"); else if(!"gzip".equals(header.getValue())) throw new IllegalStateException("Body has wrong compression type="+header.getValue()+" in CONTENT_ENCODING header field"); DataWrapper wrapper = getBody(); byte[] compressed = wrapper.createByteArray(); ByteArrayInputStream in = new ByteArrayInputStream(compressed); byte[] out = new byte[10000]; DataWrapper output = dataGen.emptyWrapper(); try (GZIPInputStream str = new GZIPInputStream(in)) { int read = 0; while((read = str.read(out)) > 0) { ByteBuffer buffer = ByteBuffer.wrap(out, 0, read); DataWrapper byteWrapper = dataGen.wrapByteBuffer(buffer); output = dataGen.chainDataWrappers(output, byteWrapper); out = new byte[10000]; } } catch(IOException e) { throw new RuntimeException(e); } Charset charset = extractCharset(); String bodyAsString = output.createStringFrom(0, output.getReadableSize(), charset); if(!bodyAsString.contains(text)) throw new IllegalStateException("Expected compressed body to contain='"+text+"' but body was="+bodyAsString); }
DataWrapper allData = dataGen.chainDataWrappers(leftOverData, moreData); memento.setLeftOverData(allData);
DataWrapper combined = Http2EngineImpl.wrapperGen.chainDataWrappers(firstIncomingData, newData); int prefaceLength = Http2EngineImpl.prefaceHexString.length()/2; if(combined.getReadableSize() >= prefaceLength) {