gosched

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: May 9, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

go-sched

the idea is based on this article

TODO

  • Implement basic functionality
    • generic min heap
    • task worker
    • task group manager
    • scheduling
    • add test
  • Add cron-like interface
  • Add task cancelling functionality
  • Add task store and restore-after-reboot functionality
  • Refactoring
  • Add detailed careful test.

Architecture

simplified architecture

simplified_architecture

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SimpleCommandFactory

func SimpleCommandFactory(command []string) cron.WorkFn

SimpleCommandFactory builds []string into blocking cli command call. First return value is []byte, output result of command. Usually it is mere text.

Invariants: Command must have 1 or more elements. first must be executable name.

Types

type CommandFactory added in v0.0.4

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

func NewCommandFactory added in v0.0.4

func NewCommandFactory(keyword string, workRegistry *WorkRegistry) *CommandFactory

func (*CommandFactory) Build added in v0.0.4

func (cf *CommandFactory) Build(command []string) cron.WorkFn

type Logger

type Logger interface {
	With(args ...interface{}) Logger
	Debugw(msg string, args ...interface{})
	Infow(msg string, args ...interface{})
	Warnw(msg string, args ...interface{})
	Errorw(msg string, args ...interface{})
	Fatalw(msg string, args ...interface{})
}

type MopLogger

type MopLogger struct{}

func (*MopLogger) Debugw

func (l *MopLogger) Debugw(msg string, args ...interface{})

func (*MopLogger) Errorw

func (l *MopLogger) Errorw(msg string, args ...interface{})

func (*MopLogger) Fatalw

func (l *MopLogger) Fatalw(msg string, args ...interface{})

func (*MopLogger) Infow

func (l *MopLogger) Infow(msg string, args ...interface{})

func (*MopLogger) Warnw

func (l *MopLogger) Warnw(msg string, args ...interface{})

func (*MopLogger) With

func (l *MopLogger) With(args ...interface{}) Logger

type SchedulerCronWrapper

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

func NewWrapperForCron

func NewWrapperForCron(s *scheduler.Scheduler) *SchedulerCronWrapper

func (*SchedulerCronWrapper) SchedTask

func (w *SchedulerCronWrapper) SchedTask(targetTime time.Time, work func(scheduled, current time.Time)) (cron.Task, error)

type SchedulerTaskMapWrapper

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

func NewWrapperForTaskMap

func NewWrapperForTaskMap(s *scheduler.Scheduler) *SchedulerTaskMapWrapper

func (*SchedulerTaskMapWrapper) SchedTask

func (w *SchedulerTaskMapWrapper) SchedTask(targetTime time.Time, work func(scheduled, current time.Time)) (storagewrapper.Task, error)

type WorkFnWrapperFactory

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

func (*WorkFnWrapperFactory) Build

type WorkFnWrapperFactoryBuilder

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

func NewCommandFactoryBuilder

func NewCommandFactoryBuilder() WorkFnWrapperFactoryBuilder

func (WorkFnWrapperFactoryBuilder) Build

func (WorkFnWrapperFactoryBuilder) Deadline

func (WorkFnWrapperFactoryBuilder) Logger

func (WorkFnWrapperFactoryBuilder) Repeat

func (WorkFnWrapperFactoryBuilder) ReschedOnDeadline

func (b WorkFnWrapperFactoryBuilder) ReschedOnDeadline(reschedOnDeadline bool) WorkFnWrapperFactoryBuilder

func (WorkFnWrapperFactoryBuilder) ShouldResched

func (b WorkFnWrapperFactoryBuilder) ShouldResched(shouldResched func(err error, repeat int) bool) WorkFnWrapperFactoryBuilder

type WorkRegistry added in v0.0.4

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

func NewWorkRegistry added in v0.0.4

func NewWorkRegistry() *WorkRegistry

func (*WorkRegistry) Delete added in v0.0.4

func (m *WorkRegistry) Delete(key string)

func (*WorkRegistry) Load added in v0.0.4

func (m *WorkRegistry) Load(key string) (value func(scheduled, current time.Time, params any) error, ok bool)

func (*WorkRegistry) LoadAndDelete added in v0.0.4

func (m *WorkRegistry) LoadAndDelete(key string) (value func(scheduled, current time.Time, params any) error, loaded bool)

func (*WorkRegistry) LoadOrStore added in v0.0.4

func (m *WorkRegistry) LoadOrStore(key string, value func(scheduled, current time.Time, params any) error) (actual func(scheduled, current time.Time, params any) error, loaded bool)

func (*WorkRegistry) Range added in v0.0.4

func (m *WorkRegistry) Range(f func(key string, value func(scheduled, current time.Time, params any) error) bool)

func (*WorkRegistry) Store added in v0.0.4

func (m *WorkRegistry) Store(key string, value func(scheduled, current time.Time, params any) error)

type ZapLogger

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

func NewZapLogger

func NewZapLogger(z *zap.SugaredLogger) *ZapLogger

func (*ZapLogger) Debugw

func (l *ZapLogger) Debugw(msg string, args ...interface{})

func (*ZapLogger) Errorw

func (l *ZapLogger) Errorw(msg string, args ...interface{})

func (*ZapLogger) Fatalw

func (l *ZapLogger) Fatalw(msg string, args ...interface{})

func (*ZapLogger) Infow

func (l *ZapLogger) Infow(msg string, args ...interface{})

func (*ZapLogger) Warnw

func (l *ZapLogger) Warnw(msg string, args ...interface{})

func (*ZapLogger) With

func (l *ZapLogger) With(args ...interface{}) Logger

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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