Skip to content

Commit

Permalink
Add support for changing cache size in KamelConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
alialbaali committed Jan 24, 2021
1 parent 42893bb commit c1ec1b5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
11 changes: 9 additions & 2 deletions src/main/kotlin/io/kamel/core/config/KamelConfig.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package io.kamel.core.config

import androidx.compose.ui.graphics.ImageBitmap
import io.kamel.core.cache.Cache
import io.kamel.core.decoder.Decoder
import io.kamel.core.fetcher.Fetcher
import io.kamel.core.mapper.Mapper
import io.ktor.client.features.logging.*

public fun KamelConfig(block: KamelConfigBuilder.() -> Unit): KamelConfig = KamelConfigBuilder().apply(block).build()
public const val DefaultImageBitmapCacheSize: Int = 1000

public interface KamelConfig {

Expand All @@ -15,14 +17,18 @@ public interface KamelConfig {

public val mappers: List<Mapper<Any, Any>>

public val imageBitmapCache: Cache<Any, ImageBitmap>

public companion object {

public val Default: KamelConfig = KamelConfig {
fileFetcher()
imageBitmapCacheSize = DefaultImageBitmapCacheSize
imageBitmapDecoder()
fileFetcher()
httpFetcher {
Logging {
level = LogLevel.INFO
logger = Logger.SIMPLE
}
}
}
Expand All @@ -31,3 +37,4 @@ public interface KamelConfig {

}

public fun KamelConfig(block: KamelConfigBuilder.() -> Unit): KamelConfig = KamelConfigBuilder().apply(block).build()
15 changes: 14 additions & 1 deletion src/main/kotlin/io/kamel/core/config/KamelConfigBuilder.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package io.kamel.core.config

import androidx.compose.ui.graphics.ImageBitmap
import io.kamel.core.cache.Cache
import io.kamel.core.cache.LruCache
import io.kamel.core.decoder.Decoder
import io.kamel.core.decoder.ImageBitmapDecoder
import io.kamel.core.fetcher.Fetcher
Expand All @@ -17,6 +20,14 @@ public class KamelConfigBuilder {

private val mappers: MutableList<Mapper<Any, Any>> = mutableListOf()

public var imageBitmapCacheSize: Int = 0
set(value) {
field = value
imageBitmapCache = LruCache(value)
}

private var imageBitmapCache = LruCache<Any, ImageBitmap>(imageBitmapCacheSize)

public fun <T : Any> fetcher(fetcher: Fetcher<T>) {
fetchers += fetcher as Fetcher<Any>
}
Expand All @@ -40,6 +51,9 @@ public class KamelConfigBuilder {
override val mappers: List<Mapper<Any, Any>>
get() = this@KamelConfigBuilder.mappers

override val imageBitmapCache: Cache<Any, ImageBitmap>
get() = this@KamelConfigBuilder.imageBitmapCache

}

}
Expand All @@ -50,7 +64,6 @@ public fun KamelConfigBuilder.httpFetcher(engine: HttpClientEngine, block: HttpC
public fun KamelConfigBuilder.httpFetcher(block: HttpClientConfig<*>.() -> Unit = {}): Unit =
fetcher(HttpFetcher(HttpClient(block)))


public fun KamelConfigBuilder.fileFetcher(): Unit = fetcher(FileFetcher)

public fun KamelConfigBuilder.imageBitmapDecoder(): Unit = decoder(ImageBitmapDecoder)

0 comments on commit c1ec1b5

Please sign in to comment.