Files
miarma-backend/bootstrap/src/main/java/net/miarma/api/MasterVerticle.java

67 lines
2.6 KiB
Java

package net.miarma.api;
import java.util.Set;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.Promise;
import net.miarma.api.backlib.Constants;
import net.miarma.api.backlib.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
import net.miarma.api.microservices.core.verticles.CoreMainVerticle;
import net.miarma.api.microservices.huertos.verticles.HuertosMainVerticle;
import net.miarma.api.microservices.huertosdecine.verticles.CineMainVerticle;
import net.miarma.api.microservices.miarmacraft.verticles.MMCMainVerticle;
import net.miarma.api.microservices.mpaste.verticles.MPasteMainVerticle;
public class MasterVerticle extends AbstractVerticle {
@Override
public void start(Promise<Void> startPromise) {
deploy()
.onSuccess(v -> {
vertx.setTimer(300, id -> {
LogAccumulator.flushToLogger(Constants.LOGGER);
startPromise.complete();
});
})
.onFailure(startPromise::fail);
}
private Future<Void> deploy() {
Promise<Void> promise = Promise.promise();
Future<String> core = vertx.deployVerticle(new CoreMainVerticle())
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CoreMainVerticle.class)))
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CoreMainVerticle.class, err)));
Future<String> huertos = vertx.deployVerticle(new HuertosMainVerticle())
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(HuertosMainVerticle.class)))
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(HuertosMainVerticle.class, err)));
Future<String> mmc = vertx.deployVerticle(new MMCMainVerticle())
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MMCMainVerticle.class)))
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MMCMainVerticle.class, err)));
Future<String> cine = vertx.deployVerticle(new CineMainVerticle())
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CineMainVerticle.class)))
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CineMainVerticle.class, err)));
Future<String> mpaste = vertx.deployVerticle(new MPasteMainVerticle())
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MPasteMainVerticle.class)))
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MPasteMainVerticle.class, err)));
Future.all(core, huertos, mmc, cine, mpaste)
.onSuccess(_ -> promise.complete())
.onFailure(promise::fail);
return promise.future();
}
@Override
public void stop(Promise<Void> stopPromise) {
vertx.deploymentIDs().forEach(id -> vertx.undeploy(id));
stopPromise.complete();
}
}