<@U1NH2D3J6> ``` private class CompositeVerticle...
# vertx
c
@julienviet
Copy code
private class CompositeVerticle(val children: List<Verticle>) : Verticle {
        override fun start(startFuture: Future<Void>) {
            action(startFuture, Verticle::start)
        }

        override fun stop(stopFuture: Future<Void>) {
            action(stopFuture, Verticle::stop)
        }

        override fun init(vertx: Vertx, context: Context) {
            children.forEach { it.init(vertx, context) }
        }

        override fun getVertx() = children.mapNotNull { it.vertx }.first()

        private fun <R> action(future: Future<R>, action: (Verticle, Future<R>) -> Unit) {
            children.map { verticle -> Future.future<R>().apply { action(verticle, this) } }
                    .reduce { a, b -> a.compose { b } }
                    .compose { future }
        }
    }