scheduler

package
v0.0.0-...-7570391 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2023 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	JobScheduled = iota
	JobStarted   = iota
	JobFinished  = iota
	JobAborted   = iota
)

Variables

View Source
var ZeroTime time.Time

Functions

This section is empty.

Types

type DoneCallback

type DoneCallback func(*JobView)

type ErrorResult

type ErrorResult struct {
	Error error
}

func (ErrorResult) Err

func (er ErrorResult) Err() error

func (ErrorResult) ImplName

func (ErrorResult) ImplName() string

func (ErrorResult) MarshalJSON

func (er ErrorResult) MarshalJSON() ([]byte, error)

type ID

type ID uint32

type JobView

type JobView struct {
	ID    `json:"id"`
	State `json:"state"`

	TaskDesc string `json:"task_desc"`

	CreatedAt   time.Time `json:"created_at"`
	ScheduledAt time.Time `json:"scheduled_at"`
	StartedAt   time.Time `json:"started_at"`
	FinishedAt  time.Time `json:"finished_at"`

	Result `json:"result"`
}

type RepetitiveJobRunner

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

func NewRepetitiveJobRunner

func NewRepetitiveJobRunner(sched *Scheduler) *RepetitiveJobRunner

func (*RepetitiveJobRunner) Abort

func (r *RepetitiveJobRunner) Abort(id ID) error

func (*RepetitiveJobRunner) Query

func (*RepetitiveJobRunner) QueryAll

func (r *RepetitiveJobRunner) QueryAll() []*RepetitiveJobView

func (*RepetitiveJobRunner) RunEveryPeriod

func (r *RepetitiveJobRunner) RunEveryPeriod(t Task, period time.Duration) ID

func (*RepetitiveJobRunner) Stop

func (r *RepetitiveJobRunner) Stop()

func (*RepetitiveJobRunner) SyncEveryPeriod

func (r *RepetitiveJobRunner) SyncEveryPeriod(s util.Syncer, period time.Duration) ID

type RepetitiveJobView

type RepetitiveJobView struct {
	ID `json:"id"`

	TaskDesc string `json:"task_desc"`

	CreatedAt       time.Time `json:"created_at"`
	LastScheduledAt time.Time `json:"last_scheduled_at"`

	Period time.Duration `json:"period"`

	ScheduledJob ID `json:"scheduled_job"`
}

type Result

type Result interface {
	Err() error
}

type Scheduler

type Scheduler struct {
	ZombiePeriod time.Duration
	// contains filtered or unexported fields
}

func NewScheduler

func NewScheduler() *Scheduler

func (*Scheduler) Abort

func (s *Scheduler) Abort(id ID)

func (*Scheduler) AbortAllAndStop

func (s *Scheduler) AbortAllAndStop()

func (*Scheduler) ForceGC

func (s *Scheduler) ForceGC()

func (*Scheduler) GetStats

func (s *Scheduler) GetStats() *Stats

func (*Scheduler) Query

func (s *Scheduler) Query(id ID) *JobView

func (*Scheduler) QueryAll

func (s *Scheduler) QueryAll() []*JobView

func (*Scheduler) RunAllAndStop

func (s *Scheduler) RunAllAndStop()

func (*Scheduler) RunAt

func (s *Scheduler) RunAt(task Task, at time.Time, cb DoneCallback) ID

func (*Scheduler) RunImmediately

func (s *Scheduler) RunImmediately(task Task, cb DoneCallback) ID

func (*Scheduler) RunImmediatelyBlock

func (s *Scheduler) RunImmediatelyBlock(task Task) *JobView

type State

type State int32

func (State) String

func (st State) String() string

type Stats

type Stats struct {
	NumRunners  int `json:"num_runners"`
	NumWaitJobs int `json:"num_wait_jobs"`
}

type SyncTask

type SyncTask struct {
	S util.Syncer
}

func (SyncTask) Run

func (t SyncTask) Run(ctx context.Context) Result

func (SyncTask) String

func (t SyncTask) String() string

type Task

type Task interface {
	Run(ctx context.Context) Result
}

Jump to

Keyboard shortcuts

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