@@ -5,15 +5,15 @@ import com.google.common.collect.Range
55import com.google.common.collect.RangeSet
66import com.google.common.collect.TreeRangeSet
77import fr.sncf.osrd.sim_infra.api.ZoneId
8+ import fr.sncf.osrd.utils.compress
9+ import fr.sncf.osrd.utils.compressToZip
10+ import fr.sncf.osrd.utils.decompress
811import io.lettuce.core.api.StatefulRedisConnection
912import io.opentelemetry.api.trace.Span
1013import io.opentelemetry.api.trace.SpanKind
1114import io.opentelemetry.instrumentation.annotations.WithSpan
12- import java.io.ByteArrayOutputStream
1315import java.nio.file.Files
1416import java.util.concurrent.ConcurrentHashMap
15- import java.util.zip.GZIPInputStream
16- import java.util.zip.GZIPOutputStream
1717import kotlin.io.path.Path
1818import kotlin.io.path.exists
1919import kotlin.io.path.readBytes
@@ -290,29 +290,18 @@ class TimetableCacheManager(
290290 private fun saveToS3 (timetableId : TimetableId , requirements : STDCMTimetableData ) {
291291 if (s3Context == null ) return
292292
293- val objectPath = " stdcm/saved_timetables/$timetableId .cbor"
293+ val objectPath = " stdcm/saved_timetables/$timetableId .cbor.zip "
294294 s3Context.writeFileIfMissing(objectPath) {
295295 try {
296296 val serializable = requirements.toSerializable()
297297 val cbor = Cbor {}
298298 val serializer = STDCMTimetableData .SerializableMap .serializer()
299299 val bytes = cbor.encodeToByteArray(serializer, serializable)
300-
301- bytes
300+ bytes.compressToZip(" $timetableId .cbor" )
302301 } catch (e: Exception ) {
303302 logger.error(" failed to save timetable to s3" , e)
304303 null
305304 }
306305 }
307306 }
308307}
309-
310- fun ByteArray.compress (): ByteArray {
311- val outputStream = ByteArrayOutputStream (this .size)
312- GZIPOutputStream (outputStream).use { it.write(this ) }
313- return outputStream.toByteArray()
314- }
315-
316- fun ByteArray.decompress (): ByteArray {
317- return GZIPInputStream (this .inputStream()).use { it.readBytes() }
318- }
0 commit comments