Created
March 5, 2016 01:03
-
-
Save tedsuo/d2a1fa85cbebb5fc2709 to your computer and use it in GitHub Desktop.
ifrit.Exec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package ifrit | |
| import ( | |
| "os" | |
| "os/signal" | |
| ) | |
| const SIGNAL_BUFFER_SIZE = 1024 | |
| func Exec(logger Logger, runner Runner, signalTypes ...os.Signal) { | |
| logger.Info("starting") | |
| defer logger.Info("complete") | |
| signals := make(chan os.Signal, SIGNAL_BUFFER_SIZE) | |
| signal.Notify(signals, signalTypes...) | |
| ready := make(chan struct{}) | |
| go func() { | |
| <-ready | |
| logger.Info("started") | |
| }() | |
| err := runner.Run(signals, ready) | |
| if err != nil { | |
| logger.Fatal("failed", err) | |
| } | |
| } | |
| // Logger conforms to lager.Logger from github.com/pivotal-golang/lager/ | |
| // It is repeated here to avoid an import dependency. | |
| type Logger interface { | |
| Info(action string, data ...Data) | |
| Fatal(action string, err error, data ...Data) | |
| } | |
| func NewNoopLager() Logger { | |
| return NoopLager(nil) | |
| } | |
| type NoopLager nil | |
| func (NoopLager) Info(action string, data ...Data) {} | |
| func (NoopLager) Fatal(action string, data ...Data) {} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment