Skip to content

Commit

Permalink
fix(core-getter/jsonrpc): drop workermanager
Browse files Browse the repository at this point in the history
  • Loading branch information
xz-dev committed May 28, 2024
1 parent 0db34e8 commit 9da9f58
Show file tree
Hide file tree
Showing 7 changed files with 10 additions and 83 deletions.
5 changes: 0 additions & 5 deletions app/src/main/java/net/xzos/upgradeall/application/Init.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import kotlinx.coroutines.launch
import net.xzos.upgradeall.app.backup.initBackupContext
import net.xzos.upgradeall.core.androidutils.initCoreContext
import net.xzos.upgradeall.core.manager.CloudConfigGetter
import net.xzos.upgradeall.core.stopCore
import net.xzos.upgradeall.data.PreferencesMap
import net.xzos.upgradeall.utils.egg.egg
import net.xzos.upgradeall.utils.file.refreshDataAndStatus
Expand All @@ -18,10 +17,6 @@ fun initCore() {
egg()
}

fun shutdownCore() {
stopCore()
}

private fun initObject() {
initContext()
}
Expand Down
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ allprojects {
maven { url "https://jitpack.io" }
// For https://gitlab.com/AuroraOSS/gplayapi
maven { url "https://gitlab.com/api/v4/projects/18497829/packages/maven"}
maven { url "https://maven.pkg.github.com/SanmerApps/PI-Lite"}
}
}

Expand Down
3 changes: 0 additions & 3 deletions core-getter/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ dependencies {
// JSON RPC
implementation 'com.github.briandilley.jsonrpc4j:jsonrpc4j:1.6'
implementation project(":core-websdk:data")

// Worker
implementation "androidx.work:work-runtime-ktx:$work_version"
}

tasks.matching { it.name.matches(/merge.*JniLibFolders/) }.configureEach {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import java.net.URL

class GetterPort(private val config: RustConfig) {
private lateinit var service: GetterService
private val mutex = Mutex(true)
private val mutex = Mutex()
private var isInit = false

fun runService() {
Expand All @@ -40,7 +40,6 @@ class GetterPort(private val config: RustConfig) {
) break
delay(1000L)
}
mutex.unlock()
return isServiceRunning()
}

Expand Down Expand Up @@ -69,6 +68,7 @@ class GetterPort(private val config: RustConfig) {
fun init(): Boolean {
return runBlocking {
return@runBlocking mutex.withLock {
runBlocking { waitService() }
if (isInit) return@withLock true
val dataPath = config.dataDir.toString()
val cachePath = config.cacheDir.toString()
Expand Down Expand Up @@ -104,8 +104,7 @@ class GetterPort(private val config: RustConfig) {
.also { Log.d("GetterPort", "getAppReleases: $it") }
}

suspend fun shutdownService() {
fun shutdownService() {
service.shutdown()
mutex.lock()
}
}
Original file line number Diff line number Diff line change
@@ -1,62 +1,16 @@
package net.xzos.upgradeall.getter

import android.content.Context
import android.util.Log
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.OutOfQuotaPolicy
import androidx.work.WorkManager
import androidx.work.WorkRequest
import androidx.work.Worker
import androidx.work.WorkerParameters
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.delay

lateinit var GETTER_PORT: GetterPort
private val mutex = Mutex()

suspend fun runGetterServer(getterPort: GetterPort) {
GETTER_PORT = getterPort
GETTER_PORT.runService()
}

suspend fun waitGetterServer() {
GETTER_PORT.waitService()
}

suspend fun runGetterWorker(context: Context, getterPort: GetterPort) {
GETTER_PORT = getterPort
val workRequest: WorkRequest =
OneTimeWorkRequestBuilder<GetterWorker>()
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
.build()
WorkManager
.getInstance(context)
.enqueue(workRequest)
waitGetterServer()
}

class GetterWorker(appContext: Context, workerParams: WorkerParameters) :
Worker(appContext, workerParams) {

override fun doWork(): Result {
runBlocking {
mutex.withLock {
Log.d("GetterWorker", "doWork(${id}): start")
GETTER_PORT.runService()
Log.d("GetterWorker", "doWork(${id}): stopped")
}
}
return Result.success()
}

override fun onStopped() {
runBlocking {
mutex.withLock {
Log.d("GetterWorker", "onStopped(${id}): start")
GETTER_PORT.shutdownService()
Log.d("GetterWorker", "onStopped(${id}): stopped")
}
}
while (!GETTER_PORT.waitService()) {
delay(1000L)
}
}
14 changes: 3 additions & 11 deletions core-websdk/src/main/java/net/xzos/upgradeall/core/websdk/Init.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package net.xzos.upgradeall.core.websdk

import android.content.Context
import net.xzos.upgradeall.core.utils.data_cache.CacheConfig
import net.xzos.upgradeall.core.utils.data_cache.DataCacheManager
import net.xzos.upgradeall.core.websdk.api.ServerApi
import net.xzos.upgradeall.core.websdk.api.ServerApiProxy
import net.xzos.upgradeall.getter.GetterPort
import net.xzos.upgradeall.getter.RustConfig
import net.xzos.upgradeall.getter.runGetterWorker
import net.xzos.upgradeall.getter.waitGetterServer
import net.xzos.upgradeall.getter.runGetterServer
import java.io.File

class Data(
Expand All @@ -31,17 +29,11 @@ fun initRustSdkApi(dataDir: File, cacheDir: File, globalExpireTime: Long) {
}
}

suspend fun runGetterService(context: Context) {
runGetterWorker(context, getterPort)
suspend fun runGetterService() {
runGetterServer(getterPort)
getterPort.init()
}

suspend fun waitGetterService() = waitGetterServer()

suspend fun shutdownGetterService() {
getterPort.shutdownService()
}

fun renewSdkApi(host: String) {
with(data) {
serverApi?.shutdown()
Expand Down
11 changes: 1 addition & 10 deletions core/src/main/java/net/xzos/upgradeall/core/Init.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import android.content.Context
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import net.xzos.upgradeall.core.data.CoreConfig
import net.xzos.upgradeall.core.database.initDatabase
import net.xzos.upgradeall.core.manager.AppManager
Expand All @@ -15,8 +14,6 @@ import net.xzos.upgradeall.core.websdk.initRustSdkApi
import net.xzos.upgradeall.core.websdk.initSdkCache
import net.xzos.upgradeall.core.websdk.renewSdkApi
import net.xzos.upgradeall.core.websdk.runGetterService
import net.xzos.upgradeall.core.websdk.shutdownGetterService
import net.xzos.upgradeall.core.websdk.waitGetterService


@SuppressLint("StaticFieldLeak")
Expand All @@ -39,7 +36,7 @@ fun initCore(
_coreConfig.data_expiration_time.toLong(),
)
GlobalScope.launch(Dispatchers.IO) {
runGetterService(context)
runGetterService()
}
renewSdkApi(_coreConfig.update_server_url)
initObject(context)
Expand All @@ -52,10 +49,4 @@ private fun initObject(context: Context) {
initDatabase(context)
HubManager
AppManager.initObject(context)
}

fun stopCore() {
runBlocking(Dispatchers.IO) {
shutdownGetterService()
}
}

0 comments on commit 9da9f58

Please sign in to comment.