Something went wrong on our end
Select Git revision
-
Volker Schukai authoredVolker Schukai authored
manager.go 8.57 KiB
package jobqueue
import (
"fmt"
"github.com/robfig/cron/v3"
"gorm.io/gorm"
"sync"
"time"
)
type ManagerState int
const (
ManagerStateStopped = iota
ManagerStateRunning
)
type Manager struct {
state ManagerState
queue *Queue
workerMap map[WorkerID]Worker
eventBus *EventBus
activeJobs map[JobID]GenericJob
jobEventCh chan interface{}
cronInstance *cron.Cron
logger Logger
database *gorm.DB
dbSaver *DBSaver
mu sync.Mutex
}
// NewManager initializes a new Manager
func NewManager() *Manager {
eventBus := NewEventBus()
mng := &Manager{
state: ManagerStateStopped,
queue: NewQueue(eventBus),
workerMap: make(map[WorkerID]Worker),
eventBus: eventBus,
activeJobs: make(map[JobID]GenericJob),
}
return mng
}
func (m *Manager) GetEventBus() *EventBus {
m.mu.Lock()
defer m.mu.Unlock()
return m.eventBus
}
func (m *Manager) SetCronInstance(cronInstance *cron.Cron) *Manager {
m.mu.Lock()
defer m.mu.Unlock()
m.cronInstance = cronInstance
return m
}
func (m *Manager) GetCronInstance() *cron.Cron {
m.mu.Lock()
defer m.mu.Unlock()