mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
48 lines
877 B
Go
48 lines
877 B
Go
package jobqueue
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/rotisserie/eris"
|
|
)
|
|
|
|
var (
|
|
ctx context.Context
|
|
cancel context.CancelFunc
|
|
worker *Worker
|
|
)
|
|
|
|
// Start will intantiate the queue and start doing work
|
|
func Start() {
|
|
ctx, cancel = context.WithCancel(context.Background())
|
|
q := &Queue{
|
|
jobs: make(chan Job),
|
|
ctx: ctx,
|
|
cancel: cancel,
|
|
}
|
|
|
|
// Defines a queue worker, which will execute our queue.
|
|
worker = newWorker(q)
|
|
|
|
// Execute jobs in queue.
|
|
go worker.doWork()
|
|
}
|
|
|
|
// Shutdown will gracefully stop the queue
|
|
func Shutdown() error {
|
|
if cancel == nil {
|
|
return eris.New("Unable to shutdown, jobqueue has not been started")
|
|
}
|
|
cancel()
|
|
return nil
|
|
}
|
|
|
|
// AddJob adds a job to the queue for processing
|
|
func AddJob(j Job) error {
|
|
if worker == nil {
|
|
return eris.New("Unable to add job, jobqueue has not been started")
|
|
}
|
|
worker.Queue.AddJob(j)
|
|
return nil
|
|
}
|