Skip to content
Snippets Groups Projects
Select Git revision
  • 735375b2dd2079722cad506ebecce5ecbec097f3
  • master default protected
  • v1.23.2
  • v1.23.1
  • v1.23.0
  • v1.22.0
  • v1.21.1
  • v1.21.0
  • v1.20.3
  • v1.20.2
  • v1.20.1
  • v1.20.0
  • v1.19.4
  • v1.19.3
  • v1.19.2
  • v1.19.1
  • v1.19.0
  • v1.18.2
  • v1.18.1
  • v1.18.0
  • v1.17.0
  • v1.16.1
22 results

manager.go

Blame
  • 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()