跳转至

GFJobQueueUtility

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/jobs/gf_job_queue_utility.gd
  • 模块:Standard
  • 继承:GFUtility
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:3.17.0

通用任务队列工具。 提供等待、激活、完成、失败、取消、进度和调试快照能力。 队列不绑定执行线程或业务语义,具体执行由调用方决定。

成员概览

类型 名称 签名
信号 job_enqueued signal job_enqueued(job: GFJob)
信号 job_started signal job_started(job: GFJob)
信号 job_progressed signal job_progressed(job: GFJob, progress: float, message: String)
信号 job_completed signal job_completed(job: GFJob)
信号 job_failed signal job_failed(job: GFJob)
信号 job_cancelled signal job_cancelled(job: GFJob)
属性 max_completed_jobs var max_completed_jobs: int = 64
属性 max_failed_jobs var max_failed_jobs: int = 64
方法 init func init() -> void:
方法 dispose func dispose() -> void:
方法 enqueue func enqueue( queue_name: StringName = &"default", data: Variant = null, metadata: Dictionary = {}, front: bool = false ) -> GFJob:
方法 start_next_job func start_next_job(queue_name: StringName = &"default") -> GFJob:
方法 run_next_job func run_next_job(queue_name: StringName, processor: Callable) -> GFJob:
方法 update_job_progress func update_job_progress(job_id: StringName, progress: float, message: String = "") -> bool:
方法 complete_job func complete_job(job_id: StringName, result: Variant = null) -> bool:
方法 fail_job func fail_job(job_id: StringName, error_message: String = "", result: Variant = null) -> bool:
方法 cancel_job func cancel_job(job_id: StringName) -> bool:
方法 pause_queue func pause_queue(queue_name: StringName = &"default") -> void:
方法 resume_queue func resume_queue(queue_name: StringName = &"default") -> void:
方法 is_queue_paused func is_queue_paused(queue_name: StringName = &"default") -> bool:
方法 get_job func get_job(job_id: StringName) -> GFJob:
方法 get_waiting_jobs func get_waiting_jobs(queue_name: StringName = &"default") -> Array[GFJob]:
方法 clear_queue func clear_queue(queue_name: StringName = &"default", cancel_jobs: bool = true) -> void:
方法 clear_all func clear_all() -> void:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

信号

job_enqueued

  • API:public
signal job_enqueued(job: GFJob)

任务进入等待队列时发出。

参数:

名称 说明
job 任务记录。

job_started

  • API:public
signal job_started(job: GFJob)

任务开始执行时发出。

参数:

名称 说明
job 任务记录。

job_progressed

  • API:public
signal job_progressed(job: GFJob, progress: float, message: String)

任务进度变化时发出。

参数:

名称 说明
job 任务记录。
progress 当前进度。
message 进度说明。

job_completed

  • API:public
signal job_completed(job: GFJob)

任务完成时发出。

参数:

名称 说明
job 任务记录。

job_failed

  • API:public
signal job_failed(job: GFJob)

任务失败时发出。

参数:

名称 说明
job 任务记录。

job_cancelled

  • API:public
signal job_cancelled(job: GFJob)

任务取消时发出。

参数:

名称 说明
job 任务记录。

属性

max_completed_jobs

  • API:public
var max_completed_jobs: int = 64

保留的完成任务数量。

max_failed_jobs

  • API:public
var max_failed_jobs: int = 64

保留的失败任务数量。

方法

init

  • API:public
func init() -> void:

初始化任务队列工具并清空运行时状态。

dispose

  • API:public
func dispose() -> void:

释放任务队列工具持有的运行时状态。

enqueue

  • API:public
func enqueue( queue_name: StringName = &"default", data: Variant = null, metadata: Dictionary = {}, front: bool = false ) -> GFJob:

追加一个等待任务。

参数:

名称 说明
queue_name 队列名。
data 任务输入数据。
metadata 项目自定义元数据。
front 是否插入到队列头部。

返回:新任务记录。

结构:

  • data: Variant,项目侧任务输入载荷。
  • metadata: Dictionary,复制到新建 GFJob 的元数据。

start_next_job

  • API:public
func start_next_job(queue_name: StringName = &"default") -> GFJob:

从队列取出下一个等待任务并标记为执行中。

参数:

名称 说明
queue_name 队列名。

返回:任务记录;没有可执行任务时返回 null。

run_next_job

  • API:public
func run_next_job(queue_name: StringName, processor: Callable) -> GFJob:

使用回调立即处理下一个等待任务。回调返回 false 或 ok=false 字典时标记失败。

参数:

名称 说明
queue_name 队列名。
processor 任务处理回调。

返回:被处理的任务;没有可执行任务时返回 null。

update_job_progress

  • API:public
func update_job_progress(job_id: StringName, progress: float, message: String = "") -> bool:

更新任务进度。

参数:

名称 说明
job_id 任务 ID。
progress 当前进度。
message 进度说明。

返回:更新成功返回 true。

complete_job

  • API:public
func complete_job(job_id: StringName, result: Variant = null) -> bool:

标记任务完成。

参数:

名称 说明
job_id 任务 ID。
result 任务结果。

返回:完成成功返回 true。

结构:

  • result: Variant,项目侧任务结果载荷。

fail_job

  • API:public
func fail_job(job_id: StringName, error_message: String = "", result: Variant = null) -> bool:

标记任务失败。

参数:

名称 说明
job_id 任务 ID。
error_message 错误文本。
result 可选失败结果。

返回:标记成功返回 true。

结构:

  • result: Variant,项目侧失败结果载荷。

cancel_job

  • API:public
func cancel_job(job_id: StringName) -> bool:

取消任务。

参数:

名称 说明
job_id 任务 ID。

返回:取消成功返回 true。

pause_queue

  • API:public
func pause_queue(queue_name: StringName = &"default") -> void:

暂停指定队列。

参数:

名称 说明
queue_name 队列名。

resume_queue

  • API:public
func resume_queue(queue_name: StringName = &"default") -> void:

恢复指定队列。

参数:

名称 说明
queue_name 队列名。

is_queue_paused

  • API:public
func is_queue_paused(queue_name: StringName = &"default") -> bool:

检查队列是否暂停。

参数:

名称 说明
queue_name 队列名。

返回:暂停时返回 true。

get_job

  • API:public
func get_job(job_id: StringName) -> GFJob:

获取任务。

参数:

名称 说明
job_id 任务 ID。

返回:任务记录;不存在时返回 null。

get_waiting_jobs

  • API:public
func get_waiting_jobs(queue_name: StringName = &"default") -> Array[GFJob]:

获取队列中的等待任务。

参数:

名称 说明
queue_name 队列名。

返回:等待任务列表副本。

clear_queue

  • API:public
func clear_queue(queue_name: StringName = &"default", cancel_jobs: bool = true) -> void:

清空指定队列中的等待任务。

参数:

名称 说明
queue_name 队列名。
cancel_jobs 是否把等待任务标记为取消。

clear_all

  • API:public
func clear_all() -> void:

清空全部队列与历史任务。

get_debug_snapshot

  • API:public
func get_debug_snapshot() -> Dictionary:

获取调试快照。

返回:调试快照字典。

结构:

  • return: Dictionary,包含 job_count、queue_count、completed_count、failed_count,以及以队列名为键的 queues。