feat: 还在进行的主从节点重构工作.
This commit is contained in:
18
onedrive-transfer-remote-common/build.gradle.kts
Normal file
18
onedrive-transfer-remote-common/build.gradle.kts
Normal file
@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
|
||||
group = "net.lamgc.scext"
|
||||
version = "0.1.0-SNAPSHOT"
|
||||
|
||||
dependencies {
|
||||
testImplementation(kotlin("test"))
|
||||
}
|
||||
|
||||
kotlin {
|
||||
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
@ -0,0 +1,11 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
||||
import java.util.*
|
||||
|
||||
data class FileUploadSessionRequest(
|
||||
val taskId: UUID
|
||||
)
|
||||
|
||||
data class FileUploadSessionResponse(
|
||||
val uploadUrl: String
|
||||
)
|
@ -0,0 +1,12 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
||||
data class RegisterWorkerRequest(
|
||||
val workerName: String,
|
||||
val token: String,
|
||||
)
|
||||
|
||||
data class RegisterWorkerResponse(
|
||||
val success: Boolean,
|
||||
val message: String,
|
||||
val workerToken: String
|
||||
)
|
@ -0,0 +1,21 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* 从节点接受任务请求.
|
||||
*/
|
||||
data class TaskAcceptRequest(
|
||||
val taskId: UUID
|
||||
)
|
||||
|
||||
/**
|
||||
* 如果任务被该节点预分配, 则返回确认响应.
|
||||
*
|
||||
* 如果任务并非为该从节点预分配, 或者任务预分配过期, 被其他节点接受, 则返回拒绝响应.
|
||||
*
|
||||
* @property confirmed 是否确认接受任务.
|
||||
*/
|
||||
data class TaskAcceptResponse(
|
||||
val confirmed: Boolean = true
|
||||
)
|
@ -0,0 +1,42 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* 从节点发送任务分配请求.
|
||||
*
|
||||
* 主节点将根据请求的 acceptMaxSize 进行预分配任务.
|
||||
*
|
||||
* @property acceptMaxSize 从节点可接受的最大文件大小.
|
||||
*/
|
||||
data class TaskAllocationRequest(
|
||||
val acceptMaxSize: Long
|
||||
)
|
||||
|
||||
/**
|
||||
* 主节点返回的任务分配结果.
|
||||
*
|
||||
* @property allocated 是否成功分配了任务.
|
||||
* @property info 预分配的任务信息.
|
||||
*/
|
||||
data class TaskAllocationResponse(
|
||||
val allocated: Boolean,
|
||||
val info: TaskAllocationInfo? = null
|
||||
)
|
||||
|
||||
/**
|
||||
* 任务分配信息.
|
||||
*
|
||||
* 主节点将为从节点保留任务一段时间, 直至从节点接受任务, 或者预分配任务超时.
|
||||
*
|
||||
* @property taskId 任务 ID.
|
||||
* @property ownerBotToken 任务所属的 Bot Token.
|
||||
* @property fileId 文件 ID.
|
||||
* @property fileSize 文件大小.
|
||||
*/
|
||||
data class TaskAllocationInfo(
|
||||
val taskId: UUID,
|
||||
val ownerBotToken: String,
|
||||
val fileId: String,
|
||||
val fileSize: Long,
|
||||
)
|
@ -0,0 +1,38 @@
|
||||
package net.lamgc.scext.onedrive_transfer.remote.request
|
||||
|
||||
import java.util.*
|
||||
|
||||
data class TaskProgressUpdateRequest(
|
||||
val taskId: UUID,
|
||||
val status: TaskStatus,
|
||||
val progress: Double
|
||||
)
|
||||
|
||||
data class TaskProgressUpdateResponse(
|
||||
val status: TaskProgressUpdateStatus
|
||||
)
|
||||
|
||||
enum class TaskStatus {
|
||||
|
||||
DOWNLOADING_FILE,
|
||||
|
||||
DOWNLOADED_FILE,
|
||||
|
||||
UPLOADING_FILE,
|
||||
|
||||
COMPLETED
|
||||
|
||||
}
|
||||
|
||||
enum class TaskProgressUpdateStatus {
|
||||
/**
|
||||
* 任务可以继续进行.
|
||||
*/
|
||||
CONTINUE,
|
||||
|
||||
/**
|
||||
* 任务已取消, Worker 应该放弃该任务.
|
||||
*/
|
||||
CANCELLED,
|
||||
|
||||
}
|
Reference in New Issue
Block a user