mirror of
https://github.com/aljazceru/ark.git
synced 2025-12-17 20:24:21 +01:00
35 lines
654 B
Go
35 lines
654 B
Go
package scheduler
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/ark-network/ark/internal/core/ports"
|
|
"github.com/go-co-op/gocron"
|
|
)
|
|
|
|
type service struct {
|
|
scheduler *gocron.Scheduler
|
|
}
|
|
|
|
func NewScheduler() ports.SchedulerService {
|
|
svc := gocron.NewScheduler(time.UTC)
|
|
return &service{svc}
|
|
}
|
|
|
|
func (s *service) Start() {
|
|
s.scheduler.StartAsync()
|
|
}
|
|
|
|
func (s *service) Stop() {
|
|
s.scheduler.Stop()
|
|
}
|
|
|
|
func (s *service) ScheduleTask(interval int64, immediate bool, task func()) error {
|
|
if immediate {
|
|
_, err := s.scheduler.Every(interval).Seconds().Do(task)
|
|
return err
|
|
}
|
|
_, err := s.scheduler.Every(interval).Seconds().WaitForSchedule().Do(task)
|
|
return err
|
|
}
|