only save png tiles 256px and up

This commit is contained in:
Adam 2022-07-07 22:28:47 +02:00
parent 1b3e3dc539
commit 4510ec4a6e
3 changed files with 11 additions and 13 deletions

View file

@ -27,7 +27,6 @@ dependencies {
implementation(libs.kotlinx.serialization.core) implementation(libs.kotlinx.serialization.core)
implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json)
// implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf")
implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.coroutines.core)
@ -46,7 +45,6 @@ dependencies {
implementation(callLogging) implementation(callLogging)
implementation(contentNegotiaion) implementation(contentNegotiaion)
implementation(cio) implementation(cio)
// implementation(netty)
implementation(autoHeadResponse) implementation(autoHeadResponse)
implementation(partialContent) implementation(partialContent)
implementation(resources) implementation(resources)
@ -59,7 +57,6 @@ dependencies {
implementation(core) implementation(core)
implementation(tls) implementation(tls)
} }
//</editor-fold> //</editor-fold>

View file

@ -16,17 +16,11 @@ suspend fun eventsProcessor(
wsServer: WebmapWebsocketServer, wsServer: WebmapWebsocketServer,
): Unit = coroutineScope { ): Unit = coroutineScope {
val admin = KafkatorioKafkaAdmin(appProps) val admin = KafkatorioKafkaAdmin(appProps)
admin.createKafkatorioTopics() admin.createKafkatorioTopics()
// val syslogServer = SyslogSocketServer(appProps)
// val wsServer = WebsocketServer()
// val tileServer = WebMapTileServer(appProps)
val topology = KafkatorioTopology(appProps, wsServer, syslogServer) val topology = KafkatorioTopology(appProps, wsServer, syslogServer)
launch { launch {
topology.start() topology.start()

View file

@ -4,6 +4,7 @@ import com.sksamuel.scrimage.ImmutableImage
import com.sksamuel.scrimage.ScaleMethod import com.sksamuel.scrimage.ScaleMethod
import com.sksamuel.scrimage.nio.PngWriter import com.sksamuel.scrimage.nio.PngWriter
import dev.adamko.kafkatorio.library.kxsBinary import dev.adamko.kafkatorio.library.kxsBinary
import dev.adamko.kafkatorio.schema.common.ChunkSize
import dev.adamko.kafkatorio.schema.common.ColourHex import dev.adamko.kafkatorio.schema.common.ColourHex
import dev.adamko.kafkatorio.schema.common.FactorioServerId import dev.adamko.kafkatorio.schema.common.FactorioServerId
import dev.adamko.kafkatorio.schema.common.ServerMapChunkId import dev.adamko.kafkatorio.schema.common.ServerMapChunkId
@ -14,11 +15,15 @@ import dev.adamko.kafkatorio.server.processor.TOPIC_BROADCAST_TO_WEBSOCKET
import dev.adamko.kafkatorio.server.processor.TOPIC_MAP_CHUNK_COLOURED_STATE import dev.adamko.kafkatorio.server.processor.TOPIC_MAP_CHUNK_COLOURED_STATE
import dev.adamko.kotka.extensions.consumedAs import dev.adamko.kotka.extensions.consumedAs
import dev.adamko.kotka.extensions.producedAs import dev.adamko.kotka.extensions.producedAs
import dev.adamko.kotka.extensions.stream
import dev.adamko.kotka.extensions.streams.filter
import dev.adamko.kotka.extensions.streams.map import dev.adamko.kotka.extensions.streams.map
import dev.adamko.kotka.extensions.streams.mapValues import dev.adamko.kotka.extensions.streams.mapValues
import dev.adamko.kotka.kxs.serde import dev.adamko.kotka.kxs.serde
import java.awt.image.BufferedImage import java.awt.image.BufferedImage
import java.nio.file.Path import java.nio.file.Path
import kotlin.collections.component1
import kotlin.collections.component2
import kotlin.io.path.fileSize import kotlin.io.path.fileSize
import kotlin.math.abs import kotlin.math.abs
import org.apache.kafka.streams.StreamsBuilder import org.apache.kafka.streams.StreamsBuilder
@ -41,13 +46,15 @@ fun saveMapTiles(
val subdividedMapChunkTilesDebounced: KStream<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> = val subdividedMapChunkTilesDebounced: KStream<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> =
builder.stream( builder.stream(
TOPIC_MAP_CHUNK_COLOURED_STATE,
consumedAs( consumedAs(
"$pid.consume.grouped-map-chunks", "$pid.consume.grouped-map-chunks",
kxsBinary.serde(), kxsBinary.serde(ServerMapChunkId.serializer()),
kxsBinary.serde(), kxsBinary.serde(ServerMapChunkTiles.serializer(ColourHex.serializer())),
), ),
) TOPIC_MAP_CHUNK_COLOURED_STATE,
).filter("$pid.consume.grouped-map-chunks.filter-size") { _, y ->
y.chunkId.chunkSize.zoomLevel >= ChunkSize.CHUNK_256.zoomLevel
}
val savedChunkFilenames: KStream<ServerMapChunkId, TilePngFilename> = val savedChunkFilenames: KStream<ServerMapChunkId, TilePngFilename> =
subdividedMapChunkTilesDebounced.saveChunkAsImage(serverDataDir) subdividedMapChunkTilesDebounced.saveChunkAsImage(serverDataDir)