timing

package module
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2022 License: MIT Imports: 6 Imported by: 0

README

timing

…or create a new repository on the command line echo "# timing" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/kingAndGithub/timing.git git push -u origin main

…or push an existing repository from the command line git remote add origin https://github.com/kingAndGithub/timing.git git branch -M main git push -u origin main

Documentation

Index

Examples

Constants

View Source
const (
	OneShot = 1
	Persist = 0
)

num define

View Source
const (
	DefaultJobChanSize = 2048
)

DefaultJobChanSize default job chan size

Variables

This section is empty.

Functions

func HasRunning

func HasRunning() bool

HasRunning 运行状态

func Location

func Location() *time.Location

Location gets the time zone location

func Remove

func Remove(e *Entry)

Remove entry form timing

func Start

func Start(e *Entry, newInterval ...time.Duration)

Start start the entry

Types

type Entry

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

Entry consists of a schedule and the func to execute on that schedule.

func AddJob

func AddJob(job Job, num uint32, interval time.Duration) *Entry

AddJob add a job

func AddJobFunc

func AddJobFunc(f JobFunc, num uint32, interval time.Duration) *Entry

AddJobFunc add a job function

func AddOneShotJob

func AddOneShotJob(job Job, interval time.Duration) *Entry

AddOneShotJob add one-shot job

func AddOneShotJobFunc

func AddOneShotJobFunc(f JobFunc, interval time.Duration) *Entry

AddOneShotJobFunc add one-shot job function

func AddPersistJob

func AddPersistJob(job Job, interval time.Duration) *Entry

AddPersistJob add persist job

func AddPersistJobFunc

func AddPersistJobFunc(f JobFunc, interval time.Duration) *Entry

AddPersistJobFunc add persist job function

func Entries

func Entries() []Entry

Entries returns a snapshot of the Timing entries.

func NewEntry

func NewEntry(job Job, num uint32, interval time.Duration) *Entry

NewEntry new entry

func NewFuncEntry

func NewFuncEntry(f JobFunc, num uint32, interval time.Duration) *Entry

NewFuncEntry new function entry

func NewOneShotEntry

func NewOneShotEntry(job Job, interval time.Duration) *Entry

NewOneShotEntry new one-shot entry

func NewOneShotFuncEntry

func NewOneShotFuncEntry(f JobFunc, interval time.Duration) *Entry

NewOneShotFuncEntry new one-shot function entry

func NewPersistEntry

func NewPersistEntry(job Job, interval time.Duration) *Entry

NewPersistEntry new persist entry

func NewPersistFuncEntry

func NewPersistFuncEntry(f JobFunc, interval time.Duration) *Entry

NewPersistFuncEntry new persist function entry

type Job

type Job interface {
	Run()
}

Job job interface

type JobFunc

type JobFunc func()

JobFunc job function

func (JobFunc) Run

func (sf JobFunc) Run()

Run implement job interface

type LogProvider

type LogProvider interface {
	Error(format string, v ...interface{})
	Debug(format string, v ...interface{})
}

LogProvider RFC5424 log message levels only Debug and Error

type Option

type Option func(tim *Timing)

Option user's option

func WithEnableLogger

func WithEnableLogger() Option

WithEnableLogger enable logger

func WithGoroutine

func WithGoroutine(use bool) Option

WithGoroutine overwrite useGoroutine or goroutine pool if not use goroutine,set it false and the set goroutine pool submit interface

func WithJobChanSize

func WithJobChanSize(size int) Option

WithJobChanSize overwrite job chan size,default value is DefaultJobChanSize

func WithLocation

func WithLocation(loc *time.Location) Option

WithLocation overrides the timezone of the instance.

func WithLoggerProvider

func WithLoggerProvider(p LogProvider) Option

WithLoggerProvider override default logger provider

func WithPanicHandler

func WithPanicHandler(f func(err interface{})) Option

type Timing

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

Timing keeps track of any number of entries.

func New

func New(opts ...Option) *Timing

New new a time with option

Example
tim := New(WithGoroutine(true)).Run()

tim.AddOneShotJobFunc(func() {
	fmt.Println("1")
}, time.Millisecond*100)
tim.AddJobFunc(func() {
	fmt.Println("2")
}, OneShot, time.Millisecond*200)
tim.AddOneShotJob(&testJob{}, time.Millisecond*300)
tim.AddJob(&testJob{}, 2, time.Millisecond*400)
tim.AddOneShotJobFunc(func() {
	defer func() {
		_ = recover()
	}()
	panic("painc happen")
}, time.Millisecond*100)
time.Sleep(time.Second * 2)
Output:

1
2
job
job
job

func (*Timing) AddJob

func (sf *Timing) AddJob(job Job, num uint32, interval time.Duration) *Entry

AddJob add a job

func (*Timing) AddJobFunc

func (sf *Timing) AddJobFunc(f JobFunc, num uint32, interval time.Duration) *Entry

AddJobFunc add a job function

func (*Timing) AddOneShotJob

func (sf *Timing) AddOneShotJob(job Job, interval time.Duration) *Entry

AddOneShotJob add one-shot job

func (*Timing) AddOneShotJobFunc

func (sf *Timing) AddOneShotJobFunc(f JobFunc, interval time.Duration) *Entry

AddOneShotJobFunc add one-shot job function

func (*Timing) AddPersistJob

func (sf *Timing) AddPersistJob(job Job, interval time.Duration) *Entry

AddPersistJob add persist job

func (*Timing) AddPersistJobFunc

func (sf *Timing) AddPersistJobFunc(f JobFunc, interval time.Duration) *Entry

AddPersistJobFunc add persist job function

func (*Timing) Close

func (sf *Timing) Close() error

Close the time

func (*Timing) Debug

func (sf *Timing) Debug(format string, v ...interface{})

Debug Log DEBUG level message.

func (*Timing) Entries

func (sf *Timing) Entries() []Entry

Entries returns a snapshot of the Timing entries.

func (*Timing) Error

func (sf *Timing) Error(format string, v ...interface{})

Error Log ERROR level message.

func (*Timing) HasRunning

func (sf *Timing) HasRunning() bool

HasRunning 运行状态

func (*Timing) Location

func (sf *Timing) Location() *time.Location

Location gets the time zone location

func (*Timing) LogMode

func (sf *Timing) LogMode(enable bool)

LogMode set enable or disable log output when you has set defaultLogger

func (*Timing) Remove

func (sf *Timing) Remove(e *Entry)

Remove entry form timing

func (*Timing) Run

func (sf *Timing) Run() *Timing

Run the timing in its own goroutine, or no-op if already started.

func (*Timing) Start

func (sf *Timing) Start(e *Entry, newInterval ...time.Duration)

Start start the entry

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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