Documentation
¶
Index ¶
- func InitGlobalManager(config ManagerConfig)
- func NewJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string) (types.Job, error)
- type JobHandler
- type Logger
- type ManagerConfig
- type OptimizedConfig
- type OptimizedScheduler
- type Scheduler
- type SchedulerManager
- func (sm *SchedulerManager) CancelJob(jobID string) error
- func (sm *SchedulerManager) IsRunning() bool
- func (sm *SchedulerManager) ListJobs() ([]types.Job, error)
- func (sm *SchedulerManager) RunDaemon() error
- func (sm *SchedulerManager) ScheduleJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, ...) error
- func (sm *SchedulerManager) Stop() error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InitGlobalManager ¶
func InitGlobalManager(config ManagerConfig)
InitGlobalManager initializes the global scheduler manager singleton
Types ¶
type JobHandler ¶
type Logger ¶
type Logger interface {
Infof(format string, args ...any)
Warnf(format string, args ...any)
Errorf(format string, args ...any)
}
Logger is a minimal logging interface compatible with logrus.Logger and our logger package.
type ManagerConfig ¶
type ManagerConfig struct {
DBPath string
SMTPConfig config.SMTPConfig
OptimizedConfig OptimizedConfig
ShutdownDelay time.Duration // Time to wait before auto-shutdown when no jobs
AutoShutdown bool // Whether to auto-shutdown when idle
}
ManagerConfig provides configuration for the scheduler manager
func DefaultManagerConfig ¶
func DefaultManagerConfig() ManagerConfig
DefaultManagerConfig returns sensible defaults for the manager
type OptimizedConfig ¶
type OptimizedConfig struct {
MaxConcurrency int
AdaptivePolling bool
BaseInterval time.Duration
MaxInterval time.Duration
MetricsPort int
}
OptimizedConfig provides configuration for the scheduler
func DefaultOptimizedConfig ¶
func DefaultOptimizedConfig() OptimizedConfig
DefaultOptimizedConfig returns sensible defaults
func DefaultOptimizedConfigWithPort ¶ added in v1.1.0
func DefaultOptimizedConfigWithPort(port int) OptimizedConfig
DefaultOptimizedConfigWithPort returns config with specified metrics port
type OptimizedScheduler ¶
type OptimizedScheduler struct {
*Scheduler
}
OptimizedScheduler is a simplified scheduler that wraps the base Scheduler. It maintains the same interface for backward compatibility but delegates to the simpler, more reliable base implementation.
func NewOptimizedScheduler ¶
func NewOptimizedScheduler(db *database.BoltDBClient, log Logger, smtpCfg any, config OptimizedConfig) (*OptimizedScheduler, error)
NewOptimizedScheduler creates a scheduler (simplified wrapper around base Scheduler)
func (*OptimizedScheduler) CancelJob ¶
func (s *OptimizedScheduler) CancelJob(jobID string) bool
CancelJob cancels a scheduled job
func (*OptimizedScheduler) ReattachHandlers ¶
func (s *OptimizedScheduler) ReattachHandlers(handler JobHandler)
ReattachHandlers reattaches handlers to existing jobs
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler provides durable, concurrent job scheduling with persistent state.
func NewScheduler ¶
func NewScheduler(db *database.BoltDBClient, log Logger) *Scheduler
NewScheduler constructs a scheduler and starts the dispatcher loop.
func (*Scheduler) AddJob ¶
func (s *Scheduler) AddJob(job types.Job, handler JobHandler) error
AddJob registers a job and its handler, persists it, and schedules execution.
func (*Scheduler) ListJobs ¶
ListJobs returns all stored jobs, always reading from the DB so external modifications (e.g. from another process or test) are reflected immediately.
func (*Scheduler) ReattachHandlers ¶
func (s *Scheduler) ReattachHandlers(handler JobHandler)
ReattachHandlers sets a default handler for all existing jobs that do not have one in-memory.
type SchedulerManager ¶
type SchedulerManager struct {
// contains filtered or unexported fields
}
SchedulerManager provides automatic scheduler lifecycle management It automatically starts the scheduler when jobs are scheduled and manages cleanup
func GetGlobalManager ¶
func GetGlobalManager() *SchedulerManager
GetGlobalManager returns the global scheduler manager singleton. Returns nil if not initialized.
func MustGetGlobalManager ¶ added in v1.1.0
func MustGetGlobalManager() *SchedulerManager
MustGetGlobalManager returns the global scheduler manager singleton. Panics if not initialized.
func NewSchedulerManager ¶
func NewSchedulerManager(config ManagerConfig) *SchedulerManager
NewSchedulerManager creates a new scheduler manager
func (*SchedulerManager) CancelJob ¶
func (sm *SchedulerManager) CancelJob(jobID string) error
CancelJob cancels a scheduled job
func (*SchedulerManager) IsRunning ¶
func (sm *SchedulerManager) IsRunning() bool
IsRunning returns whether the scheduler is currently running
func (*SchedulerManager) ListJobs ¶
func (sm *SchedulerManager) ListJobs() ([]types.Job, error)
ListJobs returns all scheduled jobs
func (*SchedulerManager) RunDaemon ¶
func (sm *SchedulerManager) RunDaemon() error
RunDaemon runs the scheduler as a daemon process
func (*SchedulerManager) ScheduleJob ¶
func (sm *SchedulerManager) ScheduleJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler JobHandler) error
ScheduleJob schedules a job, automatically starting the scheduler if needed
func (*SchedulerManager) Stop ¶
func (sm *SchedulerManager) Stop() error
Stop gracefully stops the scheduler and all associated services