diff --git a/src/main/kotlin/OneDriveTransferCenter.kt b/src/main/kotlin/OneDriveTransferCenter.kt index 83aaf5b..4b5bcf3 100644 --- a/src/main/kotlin/OneDriveTransferCenter.kt +++ b/src/main/kotlin/OneDriveTransferCenter.kt @@ -25,7 +25,8 @@ import java.util.concurrent.* object OneDriveTransferCenter { - private val executor = OneDriveTransferTaskExecutor(5, DefaultOneDriveTransferCallback, ArrayBlockingQueue(100)) + private val executor = + OneDriveTransferTaskExecutor(2, DefaultOneDriveTransferCallback, ArrayBlockingQueue(100)) fun submitUploadTask(task: OneDriveTransferTask) { executor.submitTransferTask(task) @@ -34,21 +35,37 @@ object OneDriveTransferCenter { } object DefaultOneDriveTransferCallback : OneDriveTransferCallback { - override fun onTransferStart(progress: OneDriveTransferWorkerProgress) { - val message = progress.currentTask.bot.execute( + override fun onTransferTaskCreated(task: OneDriveTransferTask) { + val message = task.bot.execute( SendMessage.builder() + .text( + """ + OneDrive 中转任务已创建 + 正在排队中... + 文件名: ${task.document.fileName} + """.trimIndent() + ) + .chatId(task.extra["chatId"].toString().toLong()) + .replyToMessageId(task.extra["messageId"].toString().toInt()) + .build() + ) + task.extra["messageId"] = message.messageId + } + + override fun onTransferStart(progress: OneDriveTransferWorkerProgress) { + progress.currentTask.bot.execute( + EditMessageText.builder() + .chatId(progress.currentTask.extra["chatId"].toString().toLong()) + .messageId(progress.currentTask.extra["messageId"].toString().toInt()) .text( """ OneDrive 中转任务开始执行 - 正在获取文件信息... + 正在获取文件信息...(需要一些时间从 Telegram 服务器下载文件) 文件名: ${progress.currentTask.document.fileName} """.trimIndent() ) - .chatId(progress.currentTask.extra["chatId"].toString().toLong()) - .replyToMessageId(progress.currentTask.extra["messageId"].toString().toInt()) .build() ) - progress.currentTask.extra["messageId"] = message.messageId } override fun onProgress(progress: OneDriveTransferWorkerProgress) { @@ -90,6 +107,7 @@ object DefaultOneDriveTransferCallback : OneDriveTransferCallback { } interface OneDriveTransferCallback { + fun onTransferTaskCreated(task: OneDriveTransferTask) fun onTransferStart(progress: OneDriveTransferWorkerProgress) fun onProgress(progress: OneDriveTransferWorkerProgress) fun onTransferFailure(task: OneDriveTransferTask, progress: OneDriveTransferWorkerProgress) @@ -120,6 +138,7 @@ class OneDriveTransferTaskExecutor( fun submitTransferTask(task: OneDriveTransferTask) { taskQueue.offer(task) + callback.onTransferTaskCreated(task) } private fun createWorker(id: Int): Runnable = Runnable {