Http2SocketHandler http2SocketHandler = new Http2SocketHandler(socket, protocol); Http2Connection connection = new Http2Connection.Builder(false) .socket(socket)
stream.enqueueTrailers(trailers); pushPromises(stream, request, response.getPushPromises()); if (body != null) { BufferedSink sink = Okio.buffer(stream.getSink());
RecordedRequest request = readRequest(stream); requestCount.incrementAndGet(); requestQueue.add(request); return; writeResponse(stream, request, response); if (logger.isLoggable(Level.INFO)) { logger.info(MockWebServer.this + " received request: " + request
Http2SocketHandler http2SocketHandler = new Http2SocketHandler(socket, protocol); Http2Connection connection = new Http2Connection.Builder(false) .socket(socket)
boolean closeStreamAfterHeaders = body != null || !response.getPushPromises().isEmpty(); stream.sendResponseHeaders(http2Headers, closeStreamAfterHeaders); pushPromises(stream, response.getPushPromises()); if (body != null) { BufferedSink sink = Okio.buffer(stream.getSink());
RecordedRequest request = readRequest(stream); requestCount.incrementAndGet(); requestQueue.add(request); return; writeResponse(stream, response); if (logger.isLoggable(Level.INFO)) { logger.info(MockWebServer.this + " received request: " + request
private void pushPromises(Http2Stream stream, List<PushPromise> promises) throws IOException { for (PushPromise pushPromise : promises) { List<Header> pushedHeaders = new ArrayList<>(); pushedHeaders.add(new Header(Header.TARGET_AUTHORITY, url(pushPromise.path()).host())); pushedHeaders.add(new Header(Header.TARGET_METHOD, pushPromise.method())); pushedHeaders.add(new Header(Header.TARGET_PATH, pushPromise.path())); Headers pushPromiseHeaders = pushPromise.headers(); for (int i = 0, size = pushPromiseHeaders.size(); i < size; i++) { pushedHeaders.add(new Header(pushPromiseHeaders.name(i), pushPromiseHeaders.value(i))); } String requestLine = pushPromise.method() + ' ' + pushPromise.path() + " HTTP/1.1"; List<Integer> chunkSizes = Collections.emptyList(); // No chunked encoding for HTTP/2. requestQueue.add(new RecordedRequest(requestLine, pushPromise.headers(), chunkSizes, 0, new Buffer(), sequenceNumber.getAndIncrement(), socket)); boolean hasBody = pushPromise.response().getBody() != null; Http2Stream pushedStream = stream.getConnection().pushStream(stream.getId(), pushedHeaders, hasBody); writeResponse(pushedStream, pushPromise.response()); } } }
private void pushPromises(Http2Stream stream, RecordedRequest request, List<PushPromise> promises) throws IOException { for (PushPromise pushPromise : promises) { List<Header> pushedHeaders = new ArrayList<>(); pushedHeaders.add(new Header(Header.TARGET_AUTHORITY, url(pushPromise.path()).host())); pushedHeaders.add(new Header(Header.TARGET_METHOD, pushPromise.method())); pushedHeaders.add(new Header(Header.TARGET_PATH, pushPromise.path())); Headers pushPromiseHeaders = pushPromise.headers(); for (int i = 0, size = pushPromiseHeaders.size(); i < size; i++) { pushedHeaders.add(new Header(pushPromiseHeaders.name(i), pushPromiseHeaders.value(i))); } String requestLine = pushPromise.method() + ' ' + pushPromise.path() + " HTTP/1.1"; List<Integer> chunkSizes = Collections.emptyList(); // No chunked encoding for HTTP/2. requestQueue.add(new RecordedRequest(requestLine, pushPromise.headers(), chunkSizes, 0, new Buffer(), sequenceNumber.getAndIncrement(), socket)); boolean hasBody = pushPromise.response().getBody() != null; Http2Stream pushedStream = stream.getConnection().pushStream(stream.getId(), pushedHeaders, hasBody); writeResponse(pushedStream, request, pushPromise.response()); } } }