better initial rendering and setup procedure
parent
c15b292197
commit
d66fe625f8
|
@ -31,10 +31,14 @@ import static spark.Spark.*;
|
|||
public class TileServer {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(TileServer.class);
|
||||
|
||||
private static TileServerConfig cfg;
|
||||
|
||||
private static Injector injector;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
TileServerConfig cfg = ConfigFactory.create(TileServerConfig.class);
|
||||
cfg = ConfigFactory.create(TileServerConfig.class);
|
||||
|
||||
if (cfg.enableDebug()){
|
||||
TileServer.logger.warn("Enabling debug/logging mode");
|
||||
|
@ -45,7 +49,7 @@ public class TileServer {
|
|||
loggerImpl.setLevel(Level.DEBUG);
|
||||
}
|
||||
|
||||
Injector injector = Guice.createInjector(
|
||||
injector = Guice.createInjector(
|
||||
new ConfigModule(cfg),
|
||||
new DBModule(cfg),
|
||||
new ServiceModule(cfg)
|
||||
|
@ -90,8 +94,6 @@ public class TileServer {
|
|||
get("/protector/:layerId/:x/:z", injector.getInstance(ProtectorRoute.class), json);
|
||||
get("/trainline", injector.getInstance(TrainlineRoute.class), json);
|
||||
|
||||
//Initialize web server
|
||||
init();
|
||||
|
||||
//Initialize ws updater
|
||||
injector.getInstance(WebSocketUpdater.class).init();
|
||||
|
@ -126,16 +128,17 @@ public class TileServer {
|
|||
|
||||
ScheduledExecutorService executor = injector.getInstance(ScheduledExecutorService.class);
|
||||
|
||||
executor.scheduleAtFixedRate(injector.getInstance(UpdateChangedTilesJob.class), 0, cfg.tilerendererUpdateInterval(), TimeUnit.SECONDS);
|
||||
executor.scheduleAtFixedRate(injector.getInstance(UpdatePlayerJob.class), 0, cfg.playerUpdateInterval(), TimeUnit.SECONDS);
|
||||
|
||||
if (cfg.tilerendererEnableInitialRendering()){
|
||||
//Start initial rendering
|
||||
executor.submit(injector.getInstance(InitialTileRendererJob.class));
|
||||
} else {
|
||||
startUpdateJobs();
|
||||
startWebserver();
|
||||
}
|
||||
|
||||
//TODO: do this properly, join or something
|
||||
AtomicBoolean running = new AtomicBoolean(true);
|
||||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
stop();
|
||||
running.set(false);
|
||||
|
@ -148,5 +151,20 @@ public class TileServer {
|
|||
if (cfg.prometheusEnable())
|
||||
promServer.stop();
|
||||
}
|
||||
|
||||
public static void startWebserver(){
|
||||
//Initialize web server
|
||||
logger.info("Starting webserver");
|
||||
init();
|
||||
}
|
||||
|
||||
public static void startUpdateJobs(){
|
||||
logger.info("Starting update jobs");
|
||||
ScheduledExecutorService executor = injector.getInstance(ScheduledExecutorService.class);
|
||||
|
||||
//Start normal tasks
|
||||
executor.scheduleAtFixedRate(injector.getInstance(UpdateChangedTilesJob.class), 0, cfg.tilerendererUpdateInterval(), TimeUnit.SECONDS);
|
||||
executor.scheduleAtFixedRate(injector.getInstance(UpdatePlayerJob.class), 0, cfg.playerUpdateInterval(), TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package io.rudin.minetest.tileserver.job;
|
||||
|
||||
import io.rudin.minetest.tileserver.TileRenderer;
|
||||
import io.rudin.minetest.tileserver.TileServer;
|
||||
import io.rudin.minetest.tileserver.config.Layer;
|
||||
import io.rudin.minetest.tileserver.config.LayerConfig;
|
||||
import io.rudin.minetest.tileserver.config.TileServerConfig;
|
||||
|
@ -19,6 +20,8 @@ import org.slf4j.LoggerFactory;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
import static io.rudin.minetest.tileserver.blockdb.tables.Blocks.BLOCKS;
|
||||
|
||||
@Singleton
|
||||
|
@ -27,13 +30,18 @@ public class InitialTileRendererJob implements Runnable {
|
|||
private static final Logger logger = LoggerFactory.getLogger(InitialTileRendererJob.class);
|
||||
|
||||
@Inject
|
||||
public InitialTileRendererJob(@MapDB DSLContext ctx, TileServerConfig cfg, TileRenderer renderer, YQueryBuilder yQueryBuilder, LayerConfig layerCfg){
|
||||
public InitialTileRendererJob(@MapDB DSLContext ctx, TileServerConfig cfg, TileRenderer renderer,
|
||||
YQueryBuilder yQueryBuilder, LayerConfig layerCfg,
|
||||
ScheduledExecutorService executor){
|
||||
this.ctx = ctx;
|
||||
this.renderer = renderer;
|
||||
this.yQueryBuilder = yQueryBuilder;
|
||||
this.layerCfg = layerCfg;
|
||||
this.executor = executor;
|
||||
}
|
||||
|
||||
private final ScheduledExecutorService executor;
|
||||
|
||||
private final YQueryBuilder yQueryBuilder;
|
||||
|
||||
private final LayerConfig layerCfg;
|
||||
|
@ -150,5 +158,7 @@ public class InitialTileRendererJob implements Runnable {
|
|||
logger.error("run", e);
|
||||
}
|
||||
|
||||
TileServer.startUpdateJobs();
|
||||
TileServer.startWebserver();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#tilerenderer.initialrendering.enable=true
|
||||
tilerenderer.initialrendering.enable=true
|
||||
|
||||
#log.tile.updatetimings=true
|
||||
tilerenderer.updateinterval=10
|
||||
|
|
Loading…
Reference in New Issue