< prev index next >
test/jdk/java/net/httpclient/http2/server/Http2TestExchangeImpl.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -24,16 +24,18 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.InetSocketAddress;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
import javax.net.ssl.SSLSession;
import jdk.incubator.http.internal.common.HttpHeadersImpl;
import jdk.incubator.http.internal.frame.HeaderFrame;
import jdk.incubator.http.internal.frame.HeadersFrame;
-public class Http2TestExchange {
+public class Http2TestExchangeImpl implements Http2TestExchange {
final HttpHeadersImpl reqheaders;
final HttpHeadersImpl rspheaders;
final URI uri;
final String method;
@@ -46,11 +48,11 @@
final Http2TestServer server;
int responseCode = -1;
long responseLength;
- Http2TestExchange(int streamid,
+ Http2TestExchangeImpl(int streamid,
String method,
HttpHeadersImpl reqheaders,
HttpHeadersImpl rspheaders,
URI uri,
InputStream is,
@@ -69,48 +71,62 @@
this.pushAllowed = pushAllowed;
this.conn = conn;
this.server = conn.server;
}
+ @Override
public HttpHeadersImpl getRequestHeaders() {
return reqheaders;
}
+ @Override
+ public CompletableFuture<Long> sendPing() {
+ return conn.sendPing();
+ }
+
+ @Override
public HttpHeadersImpl getResponseHeaders() {
return rspheaders;
}
+ @Override
public URI getRequestURI() {
return uri;
}
+ @Override
public String getRequestMethod() {
return method;
}
+ @Override
public SSLSession getSSLSession() {
return sslSession;
}
+ @Override
public void close() {
try {
is.close();
os.close();
} catch (IOException e) {
System.err.println("TestServer: HttpExchange.close exception: " + e);
e.printStackTrace();
}
}
+ @Override
public InputStream getRequestBody() {
return is;
}
+ @Override
public OutputStream getResponseBody() {
return os;
}
+ @Override
public void sendResponseHeaders(int rCode, long responseLength) throws IOException {
this.responseLength = responseLength;
if (responseLength > 0 || responseLength < 0) {
long clen = responseLength > 0 ? responseLength : 0;
rspheaders.setHeader("Content-length", Long.toString(clen));
@@ -120,39 +136,47 @@
Http2TestServerConnection.ResponseHeaders response
= new Http2TestServerConnection.ResponseHeaders(rspheaders);
response.streamid(streamid);
response.setFlag(HeaderFrame.END_HEADERS);
+
+
if (responseLength < 0) {
response.setFlag(HeadersFrame.END_STREAM);
os.closeInternal();
}
conn.outputQ.put(response);
os.goodToGo();
System.err.println("Sent response headers " + rCode);
}
+ @Override
public InetSocketAddress getRemoteAddress() {
return (InetSocketAddress) conn.socket.getRemoteSocketAddress();
}
+ @Override
public int getResponseCode() {
return responseCode;
}
+ @Override
public InetSocketAddress getLocalAddress() {
return server.getAddress();
}
+ @Override
public String getProtocol() {
return "HTTP/2";
}
+ @Override
public boolean serverPushAllowed() {
return pushAllowed;
}
+ @Override
public void serverPush(URI uri, HttpHeadersImpl headers, InputStream content) {
OutgoingPushPromise pp = new OutgoingPushPromise(
streamid, uri, headers, content);
headers.setHeader(":method", "GET");
headers.setHeader(":scheme", uri.getScheme());
< prev index next >