split mapblockrenderer

master
Thomas Rudin 2018-12-03 15:42:29 +01:00
parent ec02591720
commit 78fc901ca0
4 changed files with 20 additions and 20 deletions

View File

@ -7,27 +7,21 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.zip.DataFormatException;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.common.util.concurrent.Striped;
import io.prometheus.client.Histogram;
import io.rudin.minetest.tileserver.accessor.Coordinate;
import io.rudin.minetest.tileserver.config.Layer;
import io.rudin.minetest.tileserver.config.TileServerConfig;
import io.rudin.minetest.tileserver.qualifier.MapDB;
import io.rudin.minetest.tileserver.query.YQueryBuilder;
import org.jooq.Condition;
import io.rudin.minetest.tileserver.service.MapBlockRenderService;
import org.jooq.DSLContext;
import org.jooq.Result;
import org.jooq.impl.DSL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -43,7 +37,7 @@ public class TileRenderer {
private static final Logger logger = LoggerFactory.getLogger(TileRenderer.class);
@Inject
public TileRenderer(@MapDB DSLContext ctx, TileCache cache, MapBlockRenderer blockRenderer, TileServerConfig cfg, YQueryBuilder yQueryBuilder) {
public TileRenderer(@MapDB DSLContext ctx, TileCache cache, MapBlockRenderService blockRenderer, TileServerConfig cfg, YQueryBuilder yQueryBuilder) {
this.ctx = ctx;
this.cache = cache;
this.blockRenderer = blockRenderer;
@ -61,7 +55,7 @@ public class TileRenderer {
private final DSLContext ctx;
private final MapBlockRenderer blockRenderer;
private final MapBlockRenderService blockRenderer;
static final Histogram renderTime = Histogram.build()
.name("tileserver_render_time_seconds").help("Render time in seconds.").register();

View File

@ -13,9 +13,9 @@ import io.rudin.minetest.tileserver.provider.ExecutorProvider;
import io.rudin.minetest.tileserver.provider.LayerConfigProvider;
import io.rudin.minetest.tileserver.service.BlocksRecordService;
import io.rudin.minetest.tileserver.service.EventBus;
import io.rudin.minetest.tileserver.service.MapBlockRenderService;
import io.rudin.minetest.tileserver.service.TileCache;
import io.rudin.minetest.tileserver.service.impl.*;
import org.jooq.util.jaxb.Database;
public class ServiceModule extends AbstractModule {
@ -44,5 +44,6 @@ public class ServiceModule extends AbstractModule {
bind(ScheduledExecutorService.class).toProvider(ExecutorProvider.class);
bind(LayerConfig.class).toProvider(LayerConfigProvider.class);
bind(BlocksRecordService.class).to(BlocksRecordDatabaseService.class);
bind(MapBlockRenderService.class).to(DefaultMapBlockRenderService.class);
}
}

View File

@ -0,0 +1,9 @@
package io.rudin.minetest.tileserver.service;
import java.awt.*;
import java.util.concurrent.ExecutionException;
import java.util.zip.DataFormatException;
public interface MapBlockRenderService {
void render(int fromY, int toY, int mapBlockX, int mapBlockZ, Graphics graphics, int scale) throws IllegalArgumentException, DataFormatException, ExecutionException;
}

View File

@ -1,4 +1,4 @@
package io.rudin.minetest.tileserver;
package io.rudin.minetest.tileserver.service.impl;
import java.awt.*;
import java.util.Optional;
@ -9,11 +9,11 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import io.prometheus.client.Histogram;
import io.rudin.minetest.tileserver.ColorTable;
import io.rudin.minetest.tileserver.accessor.Coordinate;
import io.rudin.minetest.tileserver.accessor.MapBlockAccessor;
import io.rudin.minetest.tileserver.config.Layer;
import io.rudin.minetest.tileserver.config.TileServerConfig;
import io.rudin.minetest.tileserver.query.YQueryBuilder;
import io.rudin.minetest.tileserver.service.MapBlockRenderService;
import io.rudin.minetest.tileserver.util.MapBlock;
import io.rudin.minetest.tileserver.util.UnknownBlockCollector;
import org.slf4j.Logger;
@ -21,14 +21,14 @@ import org.slf4j.LoggerFactory;
@Singleton
public class MapBlockRenderer {
public class DefaultMapBlockRenderService implements MapBlockRenderService {
private static final Logger logger = LoggerFactory.getLogger(MapBlockRenderer.class);
private static final Logger logger = LoggerFactory.getLogger(DefaultMapBlockRenderService.class);
private static final int BLOCK_SIZE = 16;
@Inject
public MapBlockRenderer(ColorTable colorTable, MapBlockAccessor mapBlockAccessor, TileServerConfig cfg, UnknownBlockCollector unknownBlockCollector) {
public DefaultMapBlockRenderService(ColorTable colorTable, MapBlockAccessor mapBlockAccessor, TileServerConfig cfg, UnknownBlockCollector unknownBlockCollector) {
this.colorTable = colorTable;
this.mapBlockAccessor = mapBlockAccessor;
this.unknownBlockCollector = unknownBlockCollector;
@ -47,10 +47,6 @@ public class MapBlockRenderer {
private final ColorTable colorTable;
public void render(int fromY, int toY, int x, int z, Graphics graphics) throws IllegalArgumentException, DataFormatException, ExecutionException {
render(fromY, toY, x, z, graphics, 1);
}
public void render(int fromY, int toY, int mapBlockX, int mapBlockZ, Graphics graphics, int scale) throws IllegalArgumentException, DataFormatException, ExecutionException {
logger.debug("Rendering block: x={} z={}", mapBlockX, mapBlockZ);