Add the ability to set job priority.

This commit is contained in:
Greyson Parrelli
2023-11-03 09:21:27 -07:00
committed by GitHub
parent d00f2aa8d0
commit 145794bf04
8 changed files with 127 additions and 26 deletions

View File

@@ -59,6 +59,7 @@ class JobDatabase(
const val SERIALIZED_DATA = "serialized_data"
const val SERIALIZED_INPUT_DATA = "serialized_input_data"
const val IS_RUNNING = "is_running"
const val PRIORITY = "priority"
val CREATE_TABLE =
"""
@@ -75,7 +76,8 @@ class JobDatabase(
$SERIALIZED_DATA TEXT,
$SERIALIZED_INPUT_DATA TEXT DEFAULT NULL,
$IS_RUNNING INTEGER,
$NEXT_BACKOFF_INTERVAL INTEGER
$NEXT_BACKOFF_INTERVAL INTEGER,
$PRIORITY INTEGER DEFAULT 0
)
""".trimIndent()
}
@@ -145,6 +147,10 @@ class JobDatabase(
db.execSQL("ALTER TABLE job_spec ADD COLUMN next_backoff_interval INTEGER")
db.execSQL("UPDATE job_spec SET last_run_attempt_time = 0")
}
if (oldVersion < 3) {
db.execSQL("ALTER TABLE job_spec ADD COLUMN priority INTEGER DEFAULT 0")
}
}
override fun onOpen(db: SQLiteDatabase) {
@@ -189,7 +195,8 @@ class JobDatabase(
Jobs.LIFESPAN,
Jobs.SERIALIZED_DATA,
Jobs.SERIALIZED_INPUT_DATA,
Jobs.IS_RUNNING
Jobs.IS_RUNNING,
Jobs.PRIORITY
)
return readableDatabase
.query(Jobs.TABLE_NAME, columns, null, null, null, null, "${Jobs.CREATE_TIME}, ${Jobs.ID} ASC")
@@ -329,7 +336,8 @@ class JobDatabase(
Jobs.LIFESPAN to job.lifespan,
Jobs.SERIALIZED_DATA to job.serializedData,
Jobs.SERIALIZED_INPUT_DATA to job.serializedInputData,
Jobs.IS_RUNNING to if (job.isRunning) 1 else 0
Jobs.IS_RUNNING to if (job.isRunning) 1 else 0,
Jobs.PRIORITY to job.priority
)
.run(SQLiteDatabase.CONFLICT_IGNORE)
}
@@ -378,7 +386,8 @@ class JobDatabase(
serializedData = cursor.requireBlob(Jobs.SERIALIZED_DATA),
serializedInputData = cursor.requireBlob(Jobs.SERIALIZED_INPUT_DATA),
isRunning = cursor.requireBoolean(Jobs.IS_RUNNING),
isMemoryOnly = false
isMemoryOnly = false,
priority = cursor.requireInt(Jobs.PRIORITY)
)
}
@@ -416,7 +425,7 @@ class JobDatabase(
companion object {
private val TAG = Log.tag(JobDatabase::class.java)
private const val DATABASE_VERSION = 2
private const val DATABASE_VERSION = 3
private const val DATABASE_NAME = "signal-jobmanager.db"
@SuppressLint("StaticFieldLeak")