Skip to content

Commit 2109207

Browse files
stuartwdouglasgsmet
authored andcommitted
Add ability to always require a socket
I have a use case the combines both virtual dispatch and standard HTTP, this lets extensions support both. (cherry picked from commit 6750fe6)
1 parent ebcc9c7 commit 2109207

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.quarkus.vertx.http.deployment;
2+
3+
import io.quarkus.builder.item.SimpleBuildItem;
4+
5+
/**
6+
* Marker class that can be used to force the socket to open even when using virtual HTTP.
7+
*
8+
* There are some use cases that may want to handle both real and virtual HTTP requests, such as mapping incoming
9+
* gRPC requests onto JAX-RS handlers.
10+
*/
11+
public final class RequireSocketHttpBuildItem extends SimpleBuildItem {
12+
public static final RequireSocketHttpBuildItem MARKER = new RequireSocketHttpBuildItem();
13+
}

extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/VertxHttpProcessor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ void openSocket(ApplicationStartBuildItem start,
420420
BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
421421
HttpBuildTimeConfig httpBuildTimeConfig,
422422
Optional<RequireVirtualHttpBuildItem> requireVirtual,
423+
Optional<RequireSocketHttpBuildItem> requireSocket,
423424
EventLoopCountBuildItem eventLoopCount,
424425
List<WebsocketSubProtocolsBuildItem> websocketSubProtocols,
425426
Capabilities capabilities,
@@ -430,8 +431,9 @@ void openSocket(ApplicationStartBuildItem start,
430431
.produce(ReflectiveClassBuildItem.builder(VirtualServerChannel.class)
431432
.build());
432433
}
433-
boolean startSocket = (!startVirtual || launchMode.getLaunchMode() != LaunchMode.NORMAL)
434-
&& (requireVirtual.isEmpty() || !requireVirtual.get().isAlwaysVirtual());
434+
boolean startSocket = requireSocket.isPresent() ||
435+
((!startVirtual || launchMode.getLaunchMode() != LaunchMode.NORMAL)
436+
&& (requireVirtual.isEmpty() || !requireVirtual.get().isAlwaysVirtual()));
435437
recorder.startServer(vertx.getVertx(), shutdown,
436438
launchMode.getLaunchMode(), startVirtual, startSocket,
437439
eventLoopCount.getEventLoopCount(),

0 commit comments

Comments
 (0)