Skip to content

Commit 8f1245c

Browse files
author
Robin Duda
committed
Listeners: start the handler fully before passing events.
1 parent 034df21 commit 8f1245c

File tree

5 files changed

+69
-60
lines changed

5 files changed

+69
-60
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.codingchili.core.listener.transport;
22

3-
import io.vertx.core.Future;
43
import io.vertx.core.Promise;
54

65
import java.util.stream.Stream;
@@ -42,12 +41,14 @@ public CoreListener handler(CoreHandler handler) {
4241

4342
@Override
4443
public void start(Promise<Void> start) {
45-
Stream.of(handler.address().split(","))
46-
.forEach(address -> {
47-
core.bus().consumer(handler.address())
48-
.exceptionHandler(logger::onError)
49-
.handler(message -> handler.handle(new ClusterRequest(message)));
50-
});
44+
start.future().onSuccess((v) -> {
45+
Stream.of(handler.address().split(","))
46+
.forEach(address -> {
47+
core.bus().consumer(handler.address())
48+
.exceptionHandler(logger::onError)
49+
.handler(message -> handler.handle(new ClusterRequest(message)));
50+
});
51+
});
5152
handler.start(start);
5253
}
5354

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

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

6868
@Override
6969
public void start(Promise<Void> start) {
70-
core.vertx().createHttpServer(settings.getHttpOptions())
71-
.requestHandler(router)
72-
.exceptionHandler(logger::onError)
73-
.listen(settings.getPort(), getBindAddress(), listen -> {
74-
if (listen.succeeded()) {
75-
settings.addListenPort(listen.result().actualPort());
76-
handler.start(start);
77-
} else {
78-
start.fail(listen.cause());
79-
}
80-
});
70+
start.future().onSuccess((v) -> {
71+
core.vertx().createHttpServer(settings.getHttpOptions())
72+
.requestHandler(router)
73+
.exceptionHandler(logger::onError)
74+
.listen(settings.getPort(), getBindAddress(), listen -> {
75+
if (listen.succeeded()) {
76+
settings.addListenPort(listen.result().actualPort());
77+
} else {
78+
start.fail(listen.cause());
79+
}
80+
});
81+
});
82+
handler.start(start);
8183
}
8284

8385
@Override

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

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,23 +41,25 @@ public CoreListener handler(CoreHandler handler) {
4141

4242
@Override
4343
public void start(Promise<Void> start) {
44-
core.vertx().createNetServer(settings.getHttpOptions())
45-
.exceptionHandler(logger::onError)
46-
.connectHandler(socket -> {
47-
Connection connection = connected(socket);
44+
start.future().onSuccess((v) -> {
45+
core.vertx().createNetServer(settings.getHttpOptions())
46+
.exceptionHandler(logger::onError)
47+
.connectHandler(socket -> {
48+
Connection connection = connected(socket);
4849

49-
socket.handler(data -> packet(connection, data));
50-
socket.closeHandler((v) -> connection.runCloseHandlers());
51-
socket.exceptionHandler(logger::onError);
50+
socket.handler(data -> packet(connection, data));
51+
socket.closeHandler((close) -> connection.runCloseHandlers());
52+
socket.exceptionHandler(logger::onError);
5253

53-
}).listen(settings.getPort(), getBindAddress(), listen -> {
54-
if (listen.succeeded()) {
55-
settings.addListenPort(listen.result().actualPort());
56-
handler.start(start);
57-
} else {
58-
start.fail(listen.cause());
59-
}
54+
}).listen(settings.getPort(), getBindAddress(), listen -> {
55+
if (listen.succeeded()) {
56+
settings.addListenPort(listen.result().actualPort());
57+
} else {
58+
start.fail(listen.cause());
59+
}
60+
});
6061
});
62+
handler.start(start);
6163
}
6264

6365
public Connection connected(NetSocket socket) {

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

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

4444
@Override
4545
public void start(Promise<Void> start) {
46-
core.vertx().createDatagramSocket().listen(settings.getPort(), getBindAddress(), listen -> {
47-
if (listen.succeeded()) {
48-
settings.addListenPort(listen.result().localAddress().port());
49-
listen.result()
50-
.handler(this::handle)
51-
.exceptionHandler(logger::onError);
52-
handler.start(start);
53-
} else {
54-
start.fail(listen.cause());
55-
}
46+
start.future().onSuccess((v) -> {
47+
core.vertx().createDatagramSocket().listen(settings.getPort(), getBindAddress(), listen -> {
48+
if (listen.succeeded()) {
49+
settings.addListenPort(listen.result().localAddress().port());
50+
listen.result()
51+
.handler(this::handle)
52+
.exceptionHandler(logger::onError);
53+
} else {
54+
start.fail(listen.cause());
55+
}
56+
});
5657
});
58+
handler.start(start);
5759
}
5860

5961
@Override

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

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

73-
core.vertx().createHttpServer(settings.getHttpOptions())
74-
.exceptionHandler(logger::onError)
75-
.webSocketHandler(socket -> {
76-
Connection connection = connected(socket);
77-
78-
socket.handler(data -> handle(connection, data));
79-
socket.closeHandler(closed -> connection.runCloseHandlers());
80-
socket.exceptionHandler(logger::onError);
81-
82-
}).requestHandler(router)
83-
.listen(settings.getPort(), getBindAddress(), listen -> {
84-
if (listen.succeeded()) {
85-
settings.addListenPort(listen.result().actualPort());
86-
handler.start(start);
87-
} else {
88-
start.fail(listen.cause());
89-
}
90-
});
73+
start.future().onSuccess((v) -> {
74+
core.vertx().createHttpServer(settings.getHttpOptions())
75+
.exceptionHandler(logger::onError)
76+
.webSocketHandler(socket -> {
77+
Connection connection = connected(socket);
78+
79+
socket.handler(data -> handle(connection, data));
80+
socket.closeHandler(closed -> connection.runCloseHandlers());
81+
socket.exceptionHandler(logger::onError);
82+
83+
}).requestHandler(router)
84+
.listen(settings.getPort(), getBindAddress(), listen -> {
85+
if (listen.succeeded()) {
86+
settings.addListenPort(listen.result().actualPort());
87+
} else {
88+
start.fail(listen.cause());
89+
}
90+
});
91+
});
92+
handler.start(start);
9193
}
9294

9395
private Connection connected(ServerWebSocket socket) {

0 commit comments

Comments
 (0)