Skip to content

Commit c91dc53

Browse files
author
Robin Duda
committed
Listeners: failure to bind must propagate on fresh Promise.
1 parent a05e07a commit c91dc53

File tree

4 files changed

+24
-11
lines changed

4 files changed

+24
-11
lines changed

core/main/java/com/codingchili/core/listener/transport/RestListener.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,23 @@ public CoreListener handler(CoreHandler handler) {
6767

6868
@Override
6969
public void start(Promise<Void> start) {
70-
start.future().onSuccess((v) -> {
70+
var handlerPromise = Promise.<Void>promise();
71+
72+
handlerPromise.future().onSuccess((v) -> {
7173
core.vertx().createHttpServer(settings.getHttpOptions())
7274
.requestHandler(router)
7375
.exceptionHandler(logger::onError)
7476
.listen(settings.getPort(), getBindAddress(), listen -> {
7577
if (listen.succeeded()) {
7678
settings.addListenPort(listen.result().actualPort());
79+
start.complete();
7780
} else {
7881
start.fail(listen.cause());
7982
}
8083
});
81-
});
82-
handler.start(start);
84+
}).onFailure(start::fail);
85+
86+
handler.start(handlerPromise);
8387
}
8488

8589
@Override

core/main/java/com/codingchili/core/listener/transport/TcpListener.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ public CoreListener handler(CoreHandler handler) {
4141

4242
@Override
4343
public void start(Promise<Void> start) {
44-
start.future().onSuccess((v) -> {
44+
var handlerPromise = Promise.<Void>promise();
45+
46+
handlerPromise.future().onSuccess((v) -> {
4547
core.vertx().createNetServer(settings.getHttpOptions())
4648
.exceptionHandler(logger::onError)
4749
.connectHandler(socket -> {
@@ -54,12 +56,14 @@ public void start(Promise<Void> start) {
5456
}).listen(settings.getPort(), getBindAddress(), listen -> {
5557
if (listen.succeeded()) {
5658
settings.addListenPort(listen.result().actualPort());
59+
start.complete();
5760
} else {
5861
start.fail(listen.cause());
5962
}
6063
});
61-
});
62-
handler.start(start);
64+
}).onFailure(start::fail);
65+
66+
handler.start(handlerPromise);
6367
}
6468

6569
public Connection connected(NetSocket socket) {

core/main/java/com/codingchili/core/listener/transport/UdpListener.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,23 @@ public CoreListener handler(CoreHandler handler) {
4343

4444
@Override
4545
public void start(Promise<Void> start) {
46+
var handlerPromise = Promise.<Void>promise();
47+
4648
start.future().onSuccess((v) -> {
4749
core.vertx().createDatagramSocket().listen(settings.getPort(), getBindAddress(), listen -> {
4850
if (listen.succeeded()) {
4951
settings.addListenPort(listen.result().localAddress().port());
5052
listen.result()
5153
.handler(this::handle)
5254
.exceptionHandler(logger::onError);
55+
start.complete();
5356
} else {
5457
start.fail(listen.cause());
5558
}
5659
});
57-
});
58-
handler.start(start);
60+
}).onFailure(start::fail);
61+
62+
handler.start(handlerPromise);
5963
}
6064

6165
@Override

core/main/java/com/codingchili/core/listener/transport/WebsocketListener.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ private void listen(Promise<Void> start) {
7070
.encodePrettily());
7171
});
7272

73-
start.future().onSuccess((v) -> {
73+
var handlerPromise = Promise.<Void>promise();
74+
handlerPromise.future().onSuccess((v) -> {
7475
core.vertx().createHttpServer(settings.getHttpOptions())
7576
.exceptionHandler(logger::onError)
7677
.webSocketHandler(socket -> {
@@ -88,8 +89,8 @@ private void listen(Promise<Void> start) {
8889
start.fail(listen.cause());
8990
}
9091
});
91-
});
92-
handler.start(start);
92+
}).onFailure(start::fail);
93+
handler.start(handlerPromise);
9394
}
9495

9596
private Connection connected(ServerWebSocket socket) {

0 commit comments

Comments
 (0)