Make worker pool size, add autoscale option

This commit is contained in:
Gregory Eremin 2015-10-27 03:09:19 +03:00
parent e0eb526af5
commit b0142de4a7

View File

@ -19,6 +19,9 @@ type Satan struct {
DaemonStats stats.Publisher DaemonStats stats.Publisher
Logger *log.Logger Logger *log.Logger
DefaultNumWorkers int
AutoScale bool
daemons []Daemon daemons []Daemon
queue chan *task queue chan *task
runtimeStats stats.Manager runtimeStats stats.Manager
@ -57,10 +60,6 @@ type task struct {
name string name string
} }
const (
defaultNumWorkers = 10
)
var ( var (
workerIndex uint64 workerIndex uint64
) )
@ -68,11 +67,13 @@ var (
// Summon creates a new instance of Satan. // Summon creates a new instance of Satan.
func Summon() *Satan { func Summon() *Satan {
return &Satan{ return &Satan{
Logger: log.New(os.Stdout, "[daemons] ", log.LstdFlags), Logger: log.New(os.Stdout, "[daemons] ", log.LstdFlags),
queue: make(chan *task), DefaultNumWorkers: 10,
runtimeStats: stats.NewBasicStats(), AutoScale: false,
shutdownWorkers: make(chan struct{}), queue: make(chan *task),
shutdownSystem: make(chan struct{}), runtimeStats: stats.NewBasicStats(),
shutdownWorkers: make(chan struct{}),
shutdownSystem: make(chan struct{}),
} }
} }
@ -92,7 +93,7 @@ func (s *Satan) AddDaemon(d Daemon) {
// StartDaemons starts all registered daemons. // StartDaemons starts all registered daemons.
func (s *Satan) StartDaemons() { func (s *Satan) StartDaemons() {
s.addWorkers(defaultNumWorkers) s.addWorkers(s.DefaultNumWorkers)
} }
// StopDaemons stops all running daemons. // StopDaemons stops all running daemons.