start moving to kotlinx-io

This commit is contained in:
InsanusMokrassar 2024-07-24 00:34:49 +06:00
parent 877b62fe5d
commit 52157ee0e7
3 changed files with 34 additions and 5 deletions

View File

@ -11,6 +11,7 @@ kotlin {
commonMain {
dependencies {
api libs.klock
api libs.kt.io
}
}
jvmMain {

View File

@ -1,5 +1,11 @@
package dev.inmo.micro_utils.common
import kotlinx.io.Buffer
import kotlinx.io.Source
import kotlinx.io.buffered
import kotlinx.io.files.Path
import kotlinx.io.files.SystemFileSystem
import kotlinx.io.readByteArray
import kotlinx.serialization.Serializable
import kotlin.jvm.JvmInline
@ -23,12 +29,31 @@ value class FileName(val string: String) {
}
expect class MPPFile
typealias MPPFile = Path
expect val MPPFile.filename: FileName
expect val MPPFile.filesize: Long
expect val MPPFile.bytesAllocatorSync: ByteArrayAllocator
expect val MPPFile.bytesAllocator: SuspendByteArrayAllocator
val MPPFile.filename: FileName
get() = FileName(name)
val MPPFile.filesize: Long
get() = SystemFileSystem.metadataOrNull(this) ?.size ?.takeIf { it > -1 } ?: error("Path $filename does not exists or is folder")
val MPPFile.bytesAllocatorSync: ByteArrayAllocator
get() = {
source().readByteArray()
}
val MPPFile.bytesAllocator: SuspendByteArrayAllocator
get() = {
bytesAllocatorSync()
}
fun MPPFile.bytesSync() = bytesAllocatorSync()
suspend fun MPPFile.bytes() = bytesAllocator()
fun MPPFile.source(): Source = SystemFileSystem.source(this).buffered()
//expect class MPPFile
//
//expect val MPPFile.filename: FileName
//expect val MPPFile.filesize: Long
//expect val MPPFile.bytesAllocatorSync: ByteArrayAllocator
//expect val MPPFile.bytesAllocator: SuspendByteArrayAllocator
//fun MPPFile.bytesSync() = bytesAllocatorSync()
//suspend fun MPPFile.bytes() = bytesAllocator()

View File

@ -4,6 +4,8 @@ kt = "1.9.23"
kt-serialization = "1.6.3"
kt-coroutines = "1.8.1"
kt-io = "0.5.1"
kslog = "1.3.4"
jb-compose = "1.6.2"
@ -53,6 +55,7 @@ kt-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", vers
kt-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kt-coroutines" }
kt-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kt-coroutines" }
kt-io = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kt-io" }
ktor-io = { module = "io.ktor:ktor-io", version.ref = "ktor" }
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }