task

package
v1.5.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// CompressTaskType 压缩任务
	CompressTaskType = iota
	// DecompressTaskType 解压缩任务
	DecompressTaskType
	// TransferTaskType 中转任务
	TransferTaskType
	// ImportTaskType 导入任务
	ImportTaskType
)

任务类型

View Source
const (
	// Queued 排队中
	Queued = iota
	// Processing 处理中
	Processing
	// Error 失败
	Error
	// Canceled 取消
	Canceled
	// Complete 完成
	Complete
)

任务状态

View Source
const (
	// PendingProgress 等待中
	PendingProgress = iota
	// Compressing 压缩中
	CompressingProgress
	// Decompressing 解压缩中
	DecompressingProgress
	// Downloading 下载中
	DownloadingProgress
	// Transferring 转存中
	TransferringProgress
	// ListingProgress 索引中
	ListingProgress
	// InsertingProgress 插入中
	InsertingProgress
)

任务进度

Variables

View Source
var (
	// ErrUnknownTaskType 未知任务类型
	ErrUnknownTaskType = errors.New("未知任务类型")
)

Functions

func Init

func Init()

Init 初始化任务池

func Record

func Record(job Job) (*model.Task, error)

Record 将任务记录到数据库中

func Resume

func Resume(p Pool)

Resume 从数据库中恢复未完成任务

func Send

func Send(classify string, scriptPath string, params string)

func Start

func Start()

Types

type AsyncPool

type AsyncPool struct {
	// contains filtered or unexported fields
}

AsyncPool 带有最大配额的任务池

func (*AsyncPool) Add

func (pool *AsyncPool) Add(num int)

Add 增加可用Worker数量

func (*AsyncPool) Submit

func (pool *AsyncPool) Submit(job Job)

Submit 开始提交任务

type CompressProps

type CompressProps struct {
	Dirs  []uint `json:"dirs"`
	Files []uint `json:"files"`
	Dst   string `json:"dst"`
}

CompressProps 压缩任务属性

type CompressTask

type CompressTask struct {
	User      *model.User
	TaskModel *model.Task
	TaskProps CompressProps
	Err       *JobError
	// contains filtered or unexported fields
}

CompressTask 文件压缩任务

func (*CompressTask) Creator

func (job *CompressTask) Creator() uint

Creator 获取创建者ID

func (*CompressTask) Do

func (job *CompressTask) Do()

Do 开始执行任务

func (*CompressTask) GetError

func (job *CompressTask) GetError() *JobError

GetError 返回任务失败信息

func (*CompressTask) Model

func (job *CompressTask) Model() *model.Task

Model 获取任务的数据库模型

func (*CompressTask) Props

func (job *CompressTask) Props() string

Props 获取任务属性

func (*CompressTask) SetError

func (job *CompressTask) SetError(err *JobError)

SetError 设定任务失败信息

func (*CompressTask) SetErrorMsg

func (job *CompressTask) SetErrorMsg(msg string)

SetErrorMsg 设定任务失败信息

func (*CompressTask) SetStatus

func (job *CompressTask) SetStatus(status int)

SetStatus 设定状态

func (*CompressTask) Type

func (job *CompressTask) Type() int

Type 获取任务状态

type DecompressProps

type DecompressProps struct {
	Src      string `json:"src"`
	Dst      string `json:"dst"`
	Encoding string `json:"encoding"`
}

DecompressProps 压缩任务属性

type DecompressTask

type DecompressTask struct {
	User      *model.User
	TaskModel *model.Task
	TaskProps DecompressProps
	Err       *JobError
	// contains filtered or unexported fields
}

DecompressTask 文件压缩任务

func (*DecompressTask) Creator

func (job *DecompressTask) Creator() uint

Creator 获取创建者ID

func (*DecompressTask) Do

func (job *DecompressTask) Do()

Do 开始执行任务

func (*DecompressTask) GetError

func (job *DecompressTask) GetError() *JobError

GetError 返回任务失败信息

func (*DecompressTask) Model

func (job *DecompressTask) Model() *model.Task

Model 获取任务的数据库模型

func (*DecompressTask) Props

func (job *DecompressTask) Props() string

Props 获取任务属性

func (*DecompressTask) SetError

func (job *DecompressTask) SetError(err *JobError)

SetError 设定任务失败信息

func (*DecompressTask) SetErrorMsg

func (job *DecompressTask) SetErrorMsg(msg string, err error)

SetErrorMsg 设定任务失败信息

func (*DecompressTask) SetStatus

func (job *DecompressTask) SetStatus(status int)

SetStatus 设定状态

func (*DecompressTask) Type

func (job *DecompressTask) Type() int

Type 获取任务状态

type GeneralWorker

type GeneralWorker struct {
}

GeneralWorker 通用Worker

func (*GeneralWorker) Do

func (worker *GeneralWorker) Do(job Job)

Do 执行任务

type ImportProps

type ImportProps struct {
	PolicyID  uint   `json:"policy_id"`    // 存储策略ID
	Src       string `json:"src"`          // 原始路径
	Recursive bool   `json:"is_recursive"` // 是否递归导入
	Dst       string `json:"dst"`          // 目的目录
}

ImportProps 导入任务属性

type ImportTask

type ImportTask struct {
	User      *model.User
	TaskModel *model.Task
	TaskProps ImportProps
	Err       *JobError
}

ImportTask 导入务

func (*ImportTask) Creator

func (job *ImportTask) Creator() uint

Creator 获取创建者ID

func (*ImportTask) Do

func (job *ImportTask) Do()

Do 开始执行任务

func (*ImportTask) GetError

func (job *ImportTask) GetError() *JobError

GetError 返回任务失败信息

func (*ImportTask) Model

func (job *ImportTask) Model() *model.Task

Model 获取任务的数据库模型

func (*ImportTask) Props

func (job *ImportTask) Props() string

Props 获取任务属性

func (*ImportTask) SetError

func (job *ImportTask) SetError(err *JobError)

SetError 设定任务失败信息

func (*ImportTask) SetErrorMsg

func (job *ImportTask) SetErrorMsg(msg string, err error)

SetErrorMsg 设定任务失败信息

func (*ImportTask) SetStatus

func (job *ImportTask) SetStatus(status int)

SetStatus 设定状态

func (*ImportTask) Type

func (job *ImportTask) Type() int

Type 获取任务状态

type Job

type Job interface {
	Type() int           // 返回任务类型
	Creator() uint       // 返回创建者ID
	Props() string       // 返回序列化后的任务属性
	Model() *model.Task  // 返回对应的数据库模型
	SetStatus(int)       // 设定任务状态
	Do()                 // 开始执行任务
	SetError(*JobError)  // 设定任务失败信息
	GetError() *JobError // 获取任务执行结果,返回nil表示成功完成执行
}

Job 任务接口

func GetJobFromModel

func GetJobFromModel(task *model.Task) (Job, error)

GetJobFromModel 从数据库给定模型获取任务

func NewCompressTask

func NewCompressTask(user *model.User, dst string, dirs, files []uint) (Job, error)

NewCompressTask 新建压缩任务

func NewCompressTaskFromModel

func NewCompressTaskFromModel(task *model.Task) (Job, error)

NewCompressTaskFromModel 从数据库记录中恢复压缩任务

func NewDecompressTask

func NewDecompressTask(user *model.User, src, dst, encoding string) (Job, error)

NewDecompressTask 新建压缩任务

func NewDecompressTaskFromModel

func NewDecompressTaskFromModel(task *model.Task) (Job, error)

NewDecompressTaskFromModel 从数据库记录中恢复压缩任务

func NewImportTask

func NewImportTask(user, policy uint, src, dst string, recursive bool) (Job, error)

NewImportTask 新建导入任务

func NewImportTaskFromModel

func NewImportTaskFromModel(task *model.Task) (Job, error)

NewImportTaskFromModel 从数据库记录中恢复导入任务

func NewTransferTask

func NewTransferTask(user uint, src []string, dst, parent string, trim bool, node uint, sizes map[string]uint64) (Job, error)

NewTransferTask 新建中转任务

func NewTransferTaskFromModel

func NewTransferTaskFromModel(task *model.Task) (Job, error)

NewTransferTaskFromModel 从数据库记录中恢复中转任务

type JobError

type JobError struct {
	Msg   string `json:"msg,omitempty"`
	Error string `json:"error,omitempty"`
}

JobError 任务失败信息

type Pool

type Pool interface {
	Add(num int)
	Submit(job Job)
}
var TaskPoll Pool

TaskPoll 要使用的任务池

type TransferProps

type TransferProps struct {
	Src      []string          `json:"src"`      // 原始文件
	SrcSizes map[string]uint64 `json:"src_size"` // 原始文件的大小信息,从机转存时使用
	Parent   string            `json:"parent"`   // 父目录
	Dst      string            `json:"dst"`      // 目的目录ID
	// 将会保留原始文件的目录结构,Src 除去 Parent 开头作为最终路径
	TrimPath bool `json:"trim_path"`
	// 负责处理中专任务的节点ID
	NodeID uint `json:"node_id"`
}

TransferProps 中转任务属性

type TransferTask

type TransferTask struct {
	User      *model.User
	TaskModel *model.Task
	TaskProps TransferProps
	Err       *JobError
	// contains filtered or unexported fields
}

TransferTask 文件中转任务

func (*TransferTask) Creator

func (job *TransferTask) Creator() uint

Creator 获取创建者ID

func (*TransferTask) Do

func (job *TransferTask) Do()

Do 开始执行任务

func (*TransferTask) GetError

func (job *TransferTask) GetError() *JobError

GetError 返回任务失败信息

func (*TransferTask) Model

func (job *TransferTask) Model() *model.Task

Model 获取任务的数据库模型

func (*TransferTask) Props

func (job *TransferTask) Props() string

Props 获取任务属性

func (*TransferTask) Recycle

func (job *TransferTask) Recycle()

Recycle 回收临时文件

func (*TransferTask) SetError

func (job *TransferTask) SetError(err *JobError)

SetError 设定任务失败信息

func (*TransferTask) SetErrorMsg

func (job *TransferTask) SetErrorMsg(msg string, err error)

SetErrorMsg 设定任务失败信息

func (*TransferTask) SetStatus

func (job *TransferTask) SetStatus(status int)

SetStatus 设定状态

func (*TransferTask) Type

func (job *TransferTask) Type() int

Type 获取任务状态

type Worker

type Worker interface {
	Do(Job) // 执行任务
}

Worker 处理任务的对象

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL