This commit is contained in:
Horis
2024-02-04 23:00:31 +08:00
parent 787263c20a
commit f091607a48
2 changed files with 25 additions and 26 deletions
@@ -23,6 +23,8 @@ import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import splitties.init.appCtx
import splitties.systemservices.notificationManager
import java.util.concurrent.Executors
@@ -43,6 +45,7 @@ class CacheBookService : BaseService() {
Executors.newFixedThreadPool(min(threadCount, AppConst.MAX_THREAD)).asCoroutineDispatcher()
private var downloadJob: Job? = null
private var notificationContent = appCtx.getString(R.string.service_starting)
private var mutex = Mutex()
private val notificationBuilder by lazy {
val builder = NotificationCompat.Builder(this, AppConst.channelIdDownload)
.setSmallIcon(R.drawable.ic_download)
@@ -102,6 +105,7 @@ class CacheBookService : BaseService() {
val chapterCount = appDb.bookChapterDao.getChapterCount(bookUrl)
val book = cacheBook.book
if (chapterCount == 0) {
mutex.withLock {
val name = book.name
if (book.tocUrl.isEmpty()) {
kotlin.runCatching {
@@ -124,6 +128,7 @@ class CacheBookService : BaseService() {
}
book.save()
}
}
val end2 = if (end < 0) {
book.lastChapterIndex
} else {
@@ -14,12 +14,8 @@ import io.legado.app.web.utils.AssetsWeb
import kotlinx.coroutines.runBlocking
import okio.Pipe
import okio.buffer
import java.io.BufferedWriter
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.OutputStreamWriter
import kotlin.collections.HashMap
import kotlin.collections.List
import kotlin.collections.set
class HttpServer(port: Int) : NanoHTTPD(port) {
@@ -115,12 +111,10 @@ class HttpServer(port: Int) : NanoHTTPD(port) {
if (data is List<*> && data.size > 3000) {
val pipe = Pipe(16 * 1024)
Coroutine.async {
pipe.sink.buffer().outputStream().use { out ->
BufferedWriter(OutputStreamWriter(out, "UTF-8")).use {
pipe.sink.buffer().outputStream().bufferedWriter(Charsets.UTF_8).use {
GSON.toJson(returnData, it)
}
}
}
newChunkedResponse(
Response.Status.OK,
"application/json",