github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/pcsutil/taskframework/task_unit.go (about)

     1  package taskframework
     2  
     3  import "time"
     4  
     5  type (
     6  	TaskUnit interface {
     7  		SetTaskInfo(info *TaskInfo)
     8  		// 执行任务
     9  		Run() (result *TaskUnitRunResult)
    10  		// 重试任务执行的方法
    11  		// 当达到最大重试次数, 执行失败
    12  		OnRetry(lastRunResult *TaskUnitRunResult)
    13  		// 每次执行成功执行的方法
    14  		OnSuccess(lastRunResult *TaskUnitRunResult)
    15  		// 每次执行失败执行的方法
    16  		OnFailed(lastRunResult *TaskUnitRunResult)
    17  		// 每次执行结束执行的方法, 不管成功失败
    18  		OnComplete(lastRunResult *TaskUnitRunResult)
    19  		// 重试等待的时间
    20  		RetryWait() time.Duration
    21  	}
    22  
    23  	// 任务单元执行结果
    24  	TaskUnitRunResult struct {
    25  		Succeed       bool        // 是否执行成功
    26  		NeedRetry     bool        // 是否需要重试
    27  		NeedNextdindex  bool      // 是否需要切换到备用下载链接
    28  
    29  		// 以下是额外的信息
    30  		Err           error       // 错误信息
    31  		ResultCode    int         // 结果代码
    32  		ResultMessage string      // 结果描述
    33  		Extra         interface{} // 额外的信息
    34  	}
    35  )
    36  
    37  var (
    38  	// TaskUnitRunResultSuccess 任务执行成功
    39  	TaskUnitRunResultSuccess = &TaskUnitRunResult{}
    40  )