|
|
|
@ -37,24 +37,24 @@ type Worker struct{}
@@ -37,24 +37,24 @@ type Worker struct{}
|
|
|
|
|
|
|
|
|
|
// Example loop, it will be spwaned in a goroutine |
|
|
|
|
func (w *Worker) Spawn(um UnitManager) { |
|
|
|
|
ticker := time.NewTicker(time.Second) |
|
|
|
|
ticker := time.NewTicker(time.Second) |
|
|
|
|
|
|
|
|
|
// Worker's loop |
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-ticker.C: |
|
|
|
|
log.Println("tick") |
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-ticker.C: |
|
|
|
|
log.Println("tick") |
|
|
|
|
|
|
|
|
|
// Read from channel if this worker unit should stop |
|
|
|
|
case <-um.ShouldStop(): |
|
|
|
|
case <-um.ShouldStop(): |
|
|
|
|
|
|
|
|
|
// Shutdown work for current unit |
|
|
|
|
w.Shutdown() |
|
|
|
|
w.Shutdown() |
|
|
|
|
|
|
|
|
|
// Notify manager that this unit is done. |
|
|
|
|
um.Done() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
um.Done() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (w *Worker) Shutdown() { |
|
|
|
|