Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
65eecbc
Push branch.
ultraviolet-jordan Feb 23, 2023
010f55b
Add System import.
ultraviolet-jordan Feb 23, 2023
d58c224
Rename Storage class.
ultraviolet-jordan Feb 23, 2023
8aa37ad
Change vars to vals.
ultraviolet-jordan Feb 23, 2023
f850ae5
Update Js5Store.
ultraviolet-jordan Feb 23, 2023
e03d40e
Add return type to validIndexCount function.
ultraviolet-jordan Feb 23, 2023
85432fe
Update decompression logic.
ultraviolet-jordan Feb 24, 2023
812778e
Update decompression logic.
ultraviolet-jordan Feb 24, 2023
6364085
Update decompression logic.
ultraviolet-jordan Feb 24, 2023
22395e6
Fix crc issue on decompressing.
ultraviolet-jordan Feb 24, 2023
69d1b14
Fix issue with getting groups from an index.
ultraviolet-jordan Feb 24, 2023
30cf092
Remove use of default group object.
ultraviolet-jordan Feb 24, 2023
d38315c
Remove use of default file object.
ultraviolet-jordan Feb 24, 2023
cbd1d08
Cleanup loaders.
ultraviolet-jordan Feb 24, 2023
dc5af63
Remove default index file object.
ultraviolet-jordan Feb 24, 2023
b506670
Change group functions to return possible nullable types.
ultraviolet-jordan Feb 24, 2023
d55af16
Add comment.
ultraviolet-jordan Feb 24, 2023
9817b34
Merge conditions for file decoding.
ultraviolet-jordan Feb 24, 2023
a04b2bd
Create extension functions and minor changes.
ultraviolet-jordan Feb 24, 2023
d2b72c2
Add fix to decoding files.
ultraviolet-jordan Feb 24, 2023
a357c5a
Remove redundant Array allocation for group files.
ultraviolet-jordan Feb 24, 2023
90f6065
Change index storage and idxfile storage to an array.
ultraviolet-jordan Feb 24, 2023
d46fbe1
Add default whirlpool ByteArray.
ultraviolet-jordan Feb 24, 2023
52a8e17
Update Js5Store checksums functions.
ultraviolet-jordan Feb 25, 2023
1fb132e
Remove unnecessary ByteBuffer flip.
ultraviolet-jordan Feb 28, 2023
31f6c3f
DatFile minor fixes.
ultraviolet-jordan Feb 28, 2023
e2894bf
Rename currentIndex to currentId.
ultraviolet-jordan Feb 28, 2023
33f9eed
Rename length to size and change byteArrayOf() to ByteArray(0).
ultraviolet-jordan Feb 28, 2023
ff396a2
Upgrading gradle and setting language version to 11 for backward comp…
tyler27 Mar 7, 2023
de8ae27
Upgrade to latest cryptography api version.
ultraviolet-jordan Mar 11, 2023
a823751
Remove unnecessary extension function.
ultraviolet-jordan Mar 11, 2023
a1dcdba
Upgrade project version to 2.0.0
ultraviolet-jordan Mar 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ A cache library written in Kotlin.
# Implementation
Just use cache if you do not require any of the revision specific loaders.
```groovy
cache = { module = "com.runetopic.cache:cache", version.ref "1.4.19-SNAPSHOT" }
loader = { module = "com.runetopic.cache:loader", version.ref "647.6.4-SNAPSHOT" }
cache = { module = "com.runetopic.cache:cache", version.ref "2.0.0-SNAPSHOT" }
```

```groovy
Expand Down
41 changes: 25 additions & 16 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,31 +1,40 @@
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain

@Suppress("DSL_SCOPE_VIOLATION")
plugins {
kotlin("jvm")
alias(deps.plugins.jvm)
}

configure(allprojects) {
allprojects {
group = "com.runetopic.cache"

plugins.withType<KotlinPluginWrapper> {
java.sourceCompatibility = JavaVersion.VERSION_16
java.targetCompatibility = JavaVersion.VERSION_16

tasks {
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
}
apply {
plugin("org.jetbrains.kotlin.jvm")
}
}

configure(subprojects) {
plugins.withType<KotlinPluginWrapper> {
dependencies {
implementation(kotlin("stdlib"))
}
}

tasks.withType<Test> {
dependencies {
testImplementation(kotlin("test"))
}
}

kotlin {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(JavaVersion.VERSION_11.majorVersion))
}
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(JavaVersion.VERSION_11.majorVersion))
}
}
}
4 changes: 2 additions & 2 deletions cache/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
signing
}

version = "1.6.0"
version = "2.0.0-SNAPSHOT"

java {
withJavadocJar()
Expand Down Expand Up @@ -72,5 +72,5 @@ dependencies {
implementation("com.michael-bull.kotlin-inline-logger:kotlin-inline-logger:1.0.4")
implementation("org.slf4j:slf4j-simple:2.0.4")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.0")
implementation("com.runetopic.cryptography:cryptography:1.0.6-SNAPSHOT")
implementation("com.runetopic.cryptography:cryptography:1.2.0-SNAPSHOT")
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package com.runetopic.cache.codec
* @author Tyler Telis
* @email <[email protected]>
*/
internal interface IFileCodec {
fun compress(data: ByteArray, length: Int, keys: IntArray): ByteArray
internal interface ArchiveCodec {
fun decompress(data: ByteArray, length: Int, keys: IntArray): ByteArray
}
13 changes: 5 additions & 8 deletions cache/src/main/kotlin/com/runetopic/cache/codec/CodecType.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,16 @@ package com.runetopic.cache.codec

import com.runetopic.cache.codec.impl.BZip2Codec
import com.runetopic.cache.codec.impl.GZipCodec
import com.runetopic.cache.codec.impl.NoFileCodec

/**
* @author Tyler Telis
* @email <[email protected]>
*
* @author Jordan Abraham
*/
internal sealed class CodecType(
val codec: IFileCodec
) {
object BadCodec : CodecType(NoFileCodec())
object NoCodec : CodecType(NoFileCodec())
object BZipCodec : CodecType(BZip2Codec())
object GZipCodec : CodecType(GZipCodec())
internal class CodecType {
companion object {
val bzip = BZip2Codec()
val gzip = GZipCodec()
}
}
34 changes: 0 additions & 34 deletions cache/src/main/kotlin/com/runetopic/cache/codec/Container.kt

This file was deleted.

83 changes: 0 additions & 83 deletions cache/src/main/kotlin/com/runetopic/cache/codec/ContainerCodec.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.runetopic.cache.codec

import java.nio.ByteBuffer

/**
* @author Tyler Telis
* @email <[email protected]>
*/
data class DecompressedArchive(
val buffer: ByteBuffer,
val compression: Int,
val revision: Int,
val crc: Int
)

This file was deleted.

38 changes: 9 additions & 29 deletions cache/src/main/kotlin/com/runetopic/cache/codec/impl/BZip2Codec.kt
Original file line number Diff line number Diff line change
@@ -1,43 +1,23 @@
package com.runetopic.cache.codec.impl

import com.runetopic.cache.codec.IFileCodec
import com.runetopic.cache.codec.ArchiveCodec
import com.runetopic.cache.store.Constants.BZIP_HEADER
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream
import org.apache.commons.compress.utils.IOUtils
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.InputStream
import java.util.Arrays
import java.lang.System.arraycopy

/**
* @author Tyler Telis
* @email <[email protected]>
*/
internal class BZip2Codec : IFileCodec {
override fun compress(data: ByteArray, length: Int, keys: IntArray): ByteArray {
val stream: InputStream = ByteArrayInputStream(data)
val bout = ByteArrayOutputStream()
BZip2CompressorOutputStream(bout, 1).use { os -> IOUtils.copy(stream, os) }

val buffer = bout.toByteArray()

assert(BZIP_HEADER[0] == buffer[0])
assert(BZIP_HEADER[1] == buffer[1])
assert(BZIP_HEADER[2] == buffer[2])
assert(BZIP_HEADER[3] == buffer[3])

return Arrays.copyOfRange(buffer, BZIP_HEADER.size, buffer.size)
}

override fun decompress(data: ByteArray, length: Int, keys: IntArray): ByteArray {
val buffer = ByteArray(length + BZIP_HEADER.size)

System.arraycopy(BZIP_HEADER, 0, buffer, 0, BZIP_HEADER.size)
System.arraycopy(data, 0, buffer, BZIP_HEADER.size, length)

val stream = ByteArrayOutputStream()
BZip2CompressorInputStream(ByteArrayInputStream(buffer)).use { IOUtils.copy(it, stream) }
return stream.toByteArray()
internal class BZip2Codec : ArchiveCodec {
override fun decompress(data: ByteArray, length: Int, keys: IntArray): ByteArray = with(ByteArray(length + BZIP_HEADER.size)) {
arraycopy(BZIP_HEADER, 0, this, 0, BZIP_HEADER.size)
arraycopy(data, 0, this, BZIP_HEADER.size, length)
ByteArrayOutputStream()
.apply { BZip2CompressorInputStream(ByteArrayInputStream(this@with)).use { IOUtils.copy(it, this) } }
.toByteArray()
}
}
22 changes: 5 additions & 17 deletions cache/src/main/kotlin/com/runetopic/cache/codec/impl/GZipCodec.kt
Original file line number Diff line number Diff line change
@@ -1,29 +1,17 @@
package com.runetopic.cache.codec.impl

import com.runetopic.cache.codec.IFileCodec
import com.runetopic.cache.codec.ArchiveCodec
import org.apache.commons.compress.utils.IOUtils
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.util.zip.GZIPInputStream
import java.util.zip.GZIPOutputStream

/**
* @author Tyler Telis
* @email <[email protected]>
*/
internal class GZipCodec : IFileCodec {
override fun compress(data: ByteArray, length: Int, keys: IntArray): ByteArray {
val inputStream = ByteArrayInputStream(data)
val outputStream = ByteArrayOutputStream()
GZIPOutputStream(outputStream).use { os -> IOUtils.copy(inputStream, os) }
return outputStream.toByteArray()
}

override fun decompress(data: ByteArray, length: Int, keys: IntArray): ByteArray {
val outputStream = ByteArrayOutputStream()
GZIPInputStream(ByteArrayInputStream(data, 0, length)).use {
IOUtils.copy(it, outputStream)
}
return outputStream.toByteArray()
}
internal class GZipCodec : ArchiveCodec {
override fun decompress(data: ByteArray, length: Int, keys: IntArray): ByteArray = ByteArrayOutputStream()
.apply { GZIPInputStream(ByteArrayInputStream(data, 0, length)).use { IOUtils.copy(it, this) } }
.toByteArray()
}

This file was deleted.

Loading