Skip to content

Commit fd97998

Browse files
committed
Introduce HttpServerStream internal API akin HttpClientStream and decouple Http2ServerRequest/Http2ServerResponse from Http2Stream* API to use instead HttpStream internal API.
1 parent 176ee0a commit fd97998

20 files changed

+368
-223
lines changed

vertx-core/src/main/java/io/vertx/core/http/impl/Http1xClientConnection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ public boolean isWritable() {
501501
}
502502

503503
@Override
504-
public HttpClientStream headersHandler(Handler<HttpResponseHead> handler) {
504+
public HttpClientStream headHandler(Handler<HttpResponseHead> handler) {
505505
this.headHandler = handler;
506506
return this;
507507
}
@@ -573,7 +573,7 @@ public Future<Void> writeHead(HttpRequestHead request, boolean chunked, Buffer b
573573
}
574574

575575
@Override
576-
public Future<Void> write(Buffer buff, boolean end) {
576+
public Future<Void> writeChunk(Buffer buff, boolean end) {
577577
if (buff != null || end) {
578578
Promise<Void> listener = context.promise();
579579
conn.writeBuffer(this, buff != null ? ((BufferInternal)buff).getByteBuf() : null, end, listener);

vertx-core/src/main/java/io/vertx/core/http/impl/Http1xServerConnection.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.vertx.core.*;
2929
import io.vertx.core.buffer.Buffer;
3030
import io.vertx.core.http.ServerWebSocketHandshake;
31+
import io.vertx.core.http.impl.headers.HeadersMultiMap;
3132
import io.vertx.core.internal.buffer.BufferInternal;
3233
import io.vertx.core.http.HttpServerOptions;
3334
import io.vertx.core.http.HttpServerRequest;
@@ -114,6 +115,16 @@ protected void handleShutdown(ChannelPromise promise) {
114115
}
115116
}
116117

118+
@Override
119+
public MultiMap newHeaders() {
120+
return io.vertx.core.http.HttpHeaders.headers();
121+
}
122+
123+
@Override
124+
public boolean supportsSendFile() {
125+
return true;
126+
}
127+
117128
TracingPolicy tracingPolicy() {
118129
return tracingPolicy;
119130
}

vertx-core/src/main/java/io/vertx/core/http/impl/Http2UpgradeClientConnection.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ public Future<Void> writeHead(HttpRequestHead request, boolean chunked, Buffer b
151151
}
152152

153153
@Override
154-
public Future<Void> write(Buffer buf, boolean end) {
155-
return delegate.write(buf, end);
154+
public Future<Void> writeChunk(Buffer buf, boolean end) {
155+
return delegate.writeChunk(buf, end);
156156
}
157157

158158
@Override
@@ -185,8 +185,8 @@ public HttpClientStream customFrameHandler(Handler<HttpFrame> handler) {
185185
}
186186

187187
@Override
188-
public HttpClientStream headersHandler(Handler<HttpResponseHead> handler) {
189-
delegate.headersHandler(handler);
188+
public HttpClientStream headHandler(Handler<HttpResponseHead> handler) {
189+
delegate.headHandler(handler);
190190
return this;
191191
}
192192

@@ -280,7 +280,7 @@ private static class UpgradingStream implements HttpClientStream {
280280

281281
void handleUpgrade(HttpClientConnection conn, HttpClientStream stream) {
282282
upgradedStream = stream;
283-
upgradedStream.headersHandler(headHandler);
283+
upgradedStream.headHandler(headHandler);
284284
upgradedStream.dataHandler(chunkHandler);
285285
upgradedStream.trailersHandler(trailersHandler);
286286
upgradedStream.priorityChangeHandler(priorityHandler);
@@ -292,7 +292,7 @@ void handleUpgrade(HttpClientConnection conn, HttpClientStream stream) {
292292
upgradedStream.pushHandler(pushHandler);
293293
upgradedStream.customFrameHandler(unknownFrameHandler);
294294
upgradedStream.closeHandler(closeHandler);
295-
upgradingStream.headersHandler(null);
295+
upgradingStream.headHandler(null);
296296
upgradingStream.dataHandler(null);
297297
upgradingStream.trailersHandler(null);
298298
upgradingStream.priorityChangeHandler(null);
@@ -531,11 +531,11 @@ public UpgradingStream exceptionHandler(Handler<Throwable> handler) {
531531
}
532532

533533
@Override
534-
public HttpClientStream headersHandler(Handler<HttpResponseHead> handler) {
534+
public HttpClientStream headHandler(Handler<HttpResponseHead> handler) {
535535
if (upgradedStream != null) {
536-
upgradedStream.headersHandler(handler);
536+
upgradedStream.headHandler(handler);
537537
} else {
538-
upgradingStream.headersHandler(handler);
538+
upgradingStream.headHandler(handler);
539539
headHandler = handler;
540540
}
541541
return this;
@@ -605,10 +605,10 @@ public boolean isWritable() {
605605
}
606606

607607
@Override
608-
public Future<Void> write(Buffer buf, boolean end) {
608+
public Future<Void> writeChunk(Buffer buf, boolean end) {
609609
EventExecutor exec = upgradingConnection.channelHandlerContext().executor();
610610
if (exec.inEventLoop()) {
611-
Future<Void> future = upgradingStream.write(buf, end);
611+
Future<Void> future = upgradingStream.writeChunk(buf, end);
612612
if (end) {
613613
ChannelPipeline pipeline = upgradingConnection.channelHandlerContext().pipeline();
614614
future = future.andThen(ar -> {
@@ -621,7 +621,7 @@ public Future<Void> write(Buffer buf, boolean end) {
621621
} else {
622622
Promise<Void> promise = upgradingStream.context().promise();
623623
exec.execute(() -> {
624-
Future<Void> future = write(buf, end);
624+
Future<Void> future = writeChunk(buf, end);
625625
future.onComplete(promise);
626626
});
627627
return promise.future();

vertx-core/src/main/java/io/vertx/core/http/impl/HttpChannelConnector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ private void http1xConnected(HttpVersion version,
259259
conn2.createStream(conn.context()).onComplete(ar -> {
260260
if (ar.succeeded()) {
261261
HttpClientStream stream = ar.result();
262-
stream.headersHandler(resp -> {
262+
stream.headHandler(resp -> {
263263
Http2UpgradeClientConnection connection = (Http2UpgradeClientConnection) stream.connection();
264264
HttpClientConnection unwrap = connection.unwrap();
265265
future.tryComplete(unwrap);

vertx-core/src/main/java/io/vertx/core/http/impl/HttpClientRequestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public abstract class HttpClientRequestBase implements HttpClientRequest {
5757

5858
//
5959
stream.pushHandler(this::handlePush);
60-
stream.headersHandler(resp -> {
60+
stream.headHandler(resp -> {
6161
HttpClientResponseImpl response = new HttpClientResponseImpl(this, stream.version(), stream, resp.statusCode, resp.statusMessage, resp.headers);
6262
stream.dataHandler(response::handleChunk);
6363
stream.trailersHandler(response::handleTrailers);

vertx-core/src/main/java/io/vertx/core/http/impl/HttpClientRequestImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
package io.vertx.core.http.impl;
1313

14-
import io.netty.buffer.ByteBuf;
1514
import io.netty.handler.codec.http.HttpHeaderNames;
1615
import io.netty.handler.codec.http.multipart.HttpPostRequestEncoder;
1716
import io.vertx.codegen.annotations.Nullable;
@@ -543,7 +542,7 @@ private Future<Void> doWrite(Buffer buff, boolean end, boolean connect) {
543542
if (buff == null && !end) {
544543
throw new IllegalArgumentException();
545544
}
546-
future = stream.write(buff, writeEnd);
545+
future = stream.writeChunk(buff, writeEnd);
547546
}
548547
if (end) {
549548
tryComplete();

vertx-core/src/main/java/io/vertx/core/http/impl/HttpClientResponseImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,15 @@ public WriteStream<Buffer> exceptionHandler(@Nullable Handler<Throwable> handler
8787
}
8888
@Override
8989
public Future<Void> write(Buffer data) {
90-
return stream.write(data, false);
90+
return stream.writeChunk(data, false);
9191
}
9292
@Override
9393
public Future<Void> end(Buffer data) {
94-
return stream.write(data, true);
94+
return stream.writeChunk(data, true);
9595
}
9696
@Override
9797
public Future<Void> end() {
98-
return stream.write(BufferInternal.buffer(Unpooled.EMPTY_BUFFER), true);
98+
return stream.writeChunk(BufferInternal.buffer(Unpooled.EMPTY_BUFFER), true);
9999
}
100100
@Override
101101
public WriteStream<Buffer> setWriteQueueMaxSize(int maxSize) {

vertx-core/src/main/java/io/vertx/core/http/impl/HttpClientStream.java

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,56 +17,35 @@
1717
import io.vertx.core.buffer.Buffer;
1818
import io.vertx.core.http.impl.http2.Http2ClientPush;
1919
import io.vertx.core.http.*;
20-
import io.vertx.core.internal.ContextInternal;
2120

2221
/**
2322
* @author <a href="mailto:[email protected]">Julien Viet</a>
2423
*/
25-
public interface HttpClientStream {
26-
27-
/**
28-
* @return the stream id, {@code 1} denotes the first stream, HTTP/1 is a simple sequence, HTTP/2
29-
* is the actual stream identifier.
30-
*/
31-
int id();
32-
33-
Object metric();
24+
public interface HttpClientStream extends HttpStream {
3425

3526
Object trace();
3627

37-
/**
38-
* @return the stream version or null if it's not yet determined
39-
*/
40-
HttpVersion version();
41-
4228
HttpClientConnection connection();
43-
ContextInternal context();
4429

4530
Future<Void> writeHead(HttpRequestHead request, boolean chunked, Buffer buf, boolean end, StreamPriority priority, boolean connect);
46-
Future<Void> write(Buffer buf, boolean end);
47-
Future<Void> writeFrame(int type, int flags, Buffer payload);
48-
Future<Void> writeReset(long code);
4931

32+
HttpClientStream headHandler(Handler<HttpResponseHead> handler);
5033
HttpClientStream resetHandler(Handler<Long> handler);
5134
HttpClientStream exceptionHandler(Handler<Throwable> handler);
5235
HttpClientStream continueHandler(Handler<Void> handler);
5336
HttpClientStream earlyHintsHandler(Handler<MultiMap> handler);
5437
HttpClientStream pushHandler(Handler<Http2ClientPush> handler);
5538
HttpClientStream customFrameHandler(Handler<HttpFrame> handler);
56-
HttpClientStream headersHandler(Handler<HttpResponseHead> handler);
5739
HttpClientStream dataHandler(Handler<Buffer> handler);
5840
HttpClientStream trailersHandler(Handler<MultiMap> handler);
5941
HttpClientStream priorityChangeHandler(Handler<StreamPriority> handler);
6042
HttpClientStream closeHandler(Handler<Void> handler);
6143
HttpClientStream drainHandler(Handler<Void> handler);
6244

6345
HttpClientStream setWriteQueueMaxSize(int maxSize);
64-
boolean isWritable();
65-
6646
HttpClientStream pause();
6747
HttpClientStream fetch(long amount);
6848

69-
StreamPriority priority();
7049
HttpClientStream updatePriority(StreamPriority streamPriority);
7150

7251
}

vertx-core/src/main/java/io/vertx/core/http/impl/HttpRequestHead.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
public class HttpRequestHead implements HttpRequest {
2323

24+
public String scheme;
2425
public SocketAddress remoteAddress;
2526
public final HttpMethod method;
2627
public final String uri;

vertx-core/src/main/java/io/vertx/core/http/impl/HttpServerConnection.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,21 @@
1212

1313
import io.netty.channel.ChannelHandlerContext;
1414
import io.vertx.core.Handler;
15+
import io.vertx.core.MultiMap;
1516
import io.vertx.core.http.HttpConnection;
1617
import io.vertx.core.http.HttpServerRequest;
18+
import io.vertx.core.http.impl.http2.Http2HeadersMultiMap;
1719
import io.vertx.core.internal.ContextInternal;
1820

1921
/**
2022
* @author <a href="mailto:[email protected]">Julien Viet</a>
2123
*/
2224
public interface HttpServerConnection extends HttpConnection {
2325

26+
MultiMap newHeaders();
27+
28+
boolean supportsSendFile();
29+
2430
/**
2531
* @return the connection context
2632
*/

0 commit comments

Comments
 (0)