mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-07-05 05:54:03 +00:00
Update dependencies (#1610)
* Update dependencies * Update module to go 1.17
This commit is contained in:
55
vendor/github.com/mattermost/mattermost-server/v5/model/scheduled_task.go
generated
vendored
55
vendor/github.com/mattermost/mattermost-server/v5/model/scheduled_task.go
generated
vendored
@ -11,42 +11,65 @@ import (
|
||||
type TaskFunc func()
|
||||
|
||||
type ScheduledTask struct {
|
||||
Name string `json:"name"`
|
||||
Interval time.Duration `json:"interval"`
|
||||
Recurring bool `json:"recurring"`
|
||||
function func()
|
||||
cancel chan struct{}
|
||||
cancelled chan struct{}
|
||||
Name string `json:"name"`
|
||||
Interval time.Duration `json:"interval"`
|
||||
Recurring bool `json:"recurring"`
|
||||
function func()
|
||||
cancel chan struct{}
|
||||
cancelled chan struct{}
|
||||
fromNextIntervalTime bool
|
||||
}
|
||||
|
||||
func CreateTask(name string, function TaskFunc, timeToExecution time.Duration) *ScheduledTask {
|
||||
return createTask(name, function, timeToExecution, false)
|
||||
return createTask(name, function, timeToExecution, false, false)
|
||||
}
|
||||
|
||||
func CreateRecurringTask(name string, function TaskFunc, interval time.Duration) *ScheduledTask {
|
||||
return createTask(name, function, interval, true)
|
||||
return createTask(name, function, interval, true, false)
|
||||
}
|
||||
|
||||
func createTask(name string, function TaskFunc, interval time.Duration, recurring bool) *ScheduledTask {
|
||||
func CreateRecurringTaskFromNextIntervalTime(name string, function TaskFunc, interval time.Duration) *ScheduledTask {
|
||||
return createTask(name, function, interval, true, true)
|
||||
}
|
||||
|
||||
func createTask(name string, function TaskFunc, interval time.Duration, recurring bool, fromNextIntervalTime bool) *ScheduledTask {
|
||||
task := &ScheduledTask{
|
||||
Name: name,
|
||||
Interval: interval,
|
||||
Recurring: recurring,
|
||||
function: function,
|
||||
cancel: make(chan struct{}),
|
||||
cancelled: make(chan struct{}),
|
||||
Name: name,
|
||||
Interval: interval,
|
||||
Recurring: recurring,
|
||||
function: function,
|
||||
cancel: make(chan struct{}),
|
||||
cancelled: make(chan struct{}),
|
||||
fromNextIntervalTime: fromNextIntervalTime,
|
||||
}
|
||||
|
||||
go func() {
|
||||
defer close(task.cancelled)
|
||||
|
||||
ticker := time.NewTicker(interval)
|
||||
var firstTick <-chan time.Time
|
||||
var ticker *time.Ticker
|
||||
|
||||
if task.fromNextIntervalTime {
|
||||
currTime := time.Now()
|
||||
first := currTime.Truncate(interval)
|
||||
if first.Before(currTime) {
|
||||
first = first.Add(interval)
|
||||
}
|
||||
firstTick = time.After(time.Until(first))
|
||||
ticker = &time.Ticker{C: nil}
|
||||
} else {
|
||||
firstTick = nil
|
||||
ticker = time.NewTicker(interval)
|
||||
}
|
||||
defer func() {
|
||||
ticker.Stop()
|
||||
}()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-firstTick:
|
||||
ticker = time.NewTicker(interval)
|
||||
function()
|
||||
case <-ticker.C:
|
||||
function()
|
||||
case <-task.cancel:
|
||||
|
Reference in New Issue
Block a user