|
|
|
@ -22,25 +22,25 @@ import (
|
|
|
|
|
// Supervisor AFAIRE.
|
|
|
|
|
type Supervisor struct { |
|
|
|
|
app *application.Application |
|
|
|
|
cfg *config.Config |
|
|
|
|
ege *engine.Engine |
|
|
|
|
config *config.Config |
|
|
|
|
engine *engine.Engine |
|
|
|
|
logger logger.Logger |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// New AFAIRE.
|
|
|
|
|
func New(app *application.Application) *Supervisor { |
|
|
|
|
cfg := config.New(app) |
|
|
|
|
ege := engine.New(app, cfg) |
|
|
|
|
config := config.New(app) |
|
|
|
|
engine := engine.New(app, config) |
|
|
|
|
|
|
|
|
|
return &Supervisor{ |
|
|
|
|
app: app, |
|
|
|
|
cfg: cfg, |
|
|
|
|
ege: ege, |
|
|
|
|
app: app, |
|
|
|
|
config: config, |
|
|
|
|
engine: engine, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Supervisor) supervise() time.Duration { |
|
|
|
|
cfgVersion, err := s.cfg.HasChanged() |
|
|
|
|
cfgVersion, err := s.config.HasChanged() |
|
|
|
|
if err != nil { |
|
|
|
|
d := 10 * time.Minute |
|
|
|
|
|
|
|
|
@ -59,7 +59,7 @@ func (s *Supervisor) supervise() time.Duration {
|
|
|
|
|
|
|
|
|
|
s.logger.Notice("The configuration has changed", "version", cfgVersion) //::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
|
|
|
|
|
|
s.ege.ConfigHasChanged() |
|
|
|
|
s.engine.ConfigHasChanged() |
|
|
|
|
|
|
|
|
|
return 5 * time.Minute |
|
|
|
|
} |
|
|
|
@ -73,25 +73,27 @@ func (s *Supervisor) loop() error {
|
|
|
|
|
|
|
|
|
|
end := false |
|
|
|
|
|
|
|
|
|
ticker := time.NewTicker(time.Millisecond) |
|
|
|
|
timer := time.NewTimer(0) |
|
|
|
|
|
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-ticker.C: |
|
|
|
|
ticker.Reset(s.supervise()) |
|
|
|
|
case <-timer.C: |
|
|
|
|
timer.Reset(s.supervise()) |
|
|
|
|
|
|
|
|
|
case <-endCh: |
|
|
|
|
if end { |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ticker.Stop() |
|
|
|
|
s.ege.Stop() |
|
|
|
|
if !timer.Stop() { |
|
|
|
|
<-timer.C |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
s.engine.Stop() |
|
|
|
|
end = true |
|
|
|
|
|
|
|
|
|
case err := <-s.ege.EndCh(): |
|
|
|
|
s.ege.Wait() |
|
|
|
|
case err := <-s.engine.EndCh(): |
|
|
|
|
s.engine.Wait() |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -123,7 +125,7 @@ func (s *Supervisor) Run() error {
|
|
|
|
|
logger.Info("END", "uptime", time.Since(app.StartedAt()).String()) //:::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
|
}() |
|
|
|
|
|
|
|
|
|
s.ege.Start(logger) |
|
|
|
|
s.engine.Start(logger) |
|
|
|
|
|
|
|
|
|
return s.loop() |
|
|
|
|
} |
|
|
|
|