feat: 还在进行的主从节点重构工作.

This commit is contained in:
2025-01-13 10:35:29 +08:00
parent 68a1c23469
commit c0126c900c
27 changed files with 798 additions and 136 deletions

View 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()
}

View File

@ -0,0 +1,2 @@
package net.lamgc.scext.onedrive_transfer.remote.request

View File

@ -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
)

View File

@ -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
)

View File

@ -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
)

View File

@ -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,
)

View File

@ -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,
}