task

package
v0.4.6 Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Monitor

type Monitor struct {
	TaskLock sync.Mutex
	Tasks    map[string]*Task
}

Monitor monitors the progress of all tasks.

func NewTaskMonitor

func NewTaskMonitor() *Monitor

NewTaskMonitor creates a Monitor and add pending tasks.

func (*Monitor) Fail

func (tm *Monitor) Fail(name, err string)

func (*Monitor) Finish

func (tm *Monitor) Finish(name string)

Finish a task.

func (*Monitor) Get

func (tm *Monitor) Get(name string) int

Get the progress of a task.

func (*Monitor) List

func (tm *Monitor) List(workers ...string) []Task

List all tasks and remove tasks from disconnected workers.

func (*Monitor) NewTaskTracker

func (tm *Monitor) NewTaskTracker(name string) *Tracker

NewTaskTracker creates a Tracker from Monitor.

func (*Monitor) Pending

func (tm *Monitor) Pending(name string)

Pending a task.

func (*Monitor) Start

func (tm *Monitor) Start(name string, total int)

Start a task.

func (*Monitor) Suspend

func (tm *Monitor) Suspend(name string, flag bool)

Suspend a task.

func (*Monitor) Update

func (tm *Monitor) Update(name string, done int)

Update the progress of a task.

type Runner

type Runner struct {
	*Scheduler
	Name string
}

Runner is a Scheduler bounded with a task.

func (*Runner) Lock

func (locker *Runner) Lock()

Lock gets the permission to run task.

func (*Runner) UnLock

func (locker *Runner) UnLock()

UnLock returns the permission to run task.

type Scheduler

type Scheduler struct {
	*sync.Cond
	Privileged *strset.Set
	Running    bool
}

Scheduler schedules that pre-locked tasks are executed first.

func NewTaskScheduler

func NewTaskScheduler() *Scheduler

NewTaskScheduler creates a Scheduler.

func (*Scheduler) Lock

func (t *Scheduler) Lock(name string)

Lock gets the permission to run task.

func (*Scheduler) NewRunner

func (t *Scheduler) NewRunner(name string) *Runner

func (*Scheduler) PreLock

func (t *Scheduler) PreLock(name string)

PreLock a task, the task has the privilege to run first than un-pre-clocked tasks.

func (*Scheduler) UnLock

func (t *Scheduler) UnLock(name string)

UnLock returns the permission to run task.

type Status

type Status string
const (
	StatusPending   Status = "Pending"
	StatusComplete  Status = "Complete"
	StatusRunning   Status = "Running"
	StatusSuspended Status = "Suspended"
	StatusFailed    Status = "Failed"
)

type SubTaskTracker

type SubTaskTracker struct {
	*Tracker
	Offset int
	Total  int
}

SubTaskTracker tracks part of progress of a task.

func (*SubTaskTracker) Fail

func (tt *SubTaskTracker) Fail(err string)

Fail reports the error message.

func (*SubTaskTracker) Finish

func (tt *SubTaskTracker) Finish()

Finish a task.

func (*SubTaskTracker) Start

func (tt *SubTaskTracker) Start(total int)

Start a task.

func (*SubTaskTracker) SubTracker

func (tt *SubTaskTracker) SubTracker() model.Tracker

SubTracker creates a sub tracker of a sub tracker.

func (*SubTaskTracker) Suspend

func (tt *SubTaskTracker) Suspend(flag bool)

func (*SubTaskTracker) Update

func (tt *SubTaskTracker) Update(done int)

Update the progress of current task.

type Task

type Task struct {
	Name       string
	Status     Status
	Done       int
	Total      int
	StartTime  time.Time
	FinishTime time.Time
	Error      string
}

Task progress information.

func NewTask

func NewTask(name string, total int) *Task

func NewTaskFromPB

func NewTaskFromPB(in *protocol.PushTaskInfoRequest) *Task

func (*Task) Finish

func (t *Task) Finish()

func (*Task) ToPB

func (t *Task) ToPB() *protocol.PushTaskInfoRequest

func (*Task) Update

func (t *Task) Update(done int)

type Tasks

type Tasks []Task

Tasks is used to sort []Task.

func (Tasks) Len

func (t Tasks) Len() int

Len is used to sort []Task.

func (Tasks) Less

func (t Tasks) Less(i, j int) bool

Less is used to sort []Task.

func (Tasks) Swap

func (t Tasks) Swap(i, j int)

Swap is used to sort []Task.

type Tracker

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

Tracker tracks the progress of a task.

func (*Tracker) Fail

func (tt *Tracker) Fail(err string)

func (*Tracker) Finish

func (tt *Tracker) Finish()

Finish the task.

func (*Tracker) Start

func (tt *Tracker) Start(total int)

Start the task.

func (*Tracker) SubTracker

func (tt *Tracker) SubTracker() model.Tracker

SubTracker creates a sub tracker

func (*Tracker) Suspend

func (tt *Tracker) Suspend(flag bool)

func (*Tracker) Update

func (tt *Tracker) Update(done int)

Update the progress of this task.

Jump to

Keyboard shortcuts

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