Hi, Karl!
The question regarding the order (which in may case is very important) during executing Finalize funcs at the end of an app. So, the code:
package main
import (
"flag"
"log"
"github.com/karlkfi/inject"
)
var (
ctx CtxInterface
indicator IndicatorInterface
translator TranslatorInterface
config = flag.String("config-file", "./etc/banjo-dev.toml", "Banjo configuration file")
)
func main() {
flag.Parse()
graph := inject.NewGraph()
graph.Define(&ctx, inject.NewProvider(NewCtx, config))
graph.Define(&indicator, inject.NewProvider(NewIndicator, &ctx))
graph.Define(&translator, inject.NewProvider(NewTranslator, &ctx))
graph.ResolveAll()
log.Printf("banjo: indicator: %T, %v", indicator, indicator)
log.Printf("banjo: translator: %T, %v", translator, translator)
indicator.Display(translator.T("test1"))
graph.Finalize()
}
Above snippet of code initializes and executes successfully, but at the end of the application inject calls Finalizable funcs in random order...
First run:
> $ ./bin/banjo-linux-amd64
2017/01/10 11:07:49 banjo: initializing instance ctx...
2017/01/10 11:07:49 banjo: initializing instance indicator...
2017/01/10 11:07:49 banjo: initializing instance translator...
2017/01/10 11:07:49 banjo: indicator: *main.Indicator, &{0xc42000e340}
2017/01/10 11:07:49 banjo: translator: *main.Translator, &{0xc42000e340}
2017/01/10 11:07:49 banjo: instance indicator displaying test1: value
2017/01/10 11:07:49 banjo: finalizing instance indicator...
2017/01/10 11:07:49 banjo: finalizing instance translator...
2017/01/10 11:07:49 banjo: finalizing instance ctx...
Next run:
> $ ./bin/banjo-linux-amd64 [±master ●●]
2017/01/10 11:07:53 banjo: initializing instance ctx...
2017/01/10 11:07:53 banjo: initializing instance indicator...
2017/01/10 11:07:53 banjo: initializing instance translator...
2017/01/10 11:07:53 banjo: indicator: *main.Indicator, &{0xc42000e340}
2017/01/10 11:07:53 banjo: translator: *main.Translator, &{0xc42000e340}
2017/01/10 11:07:53 banjo: instance indicator displaying test1: value
2017/01/10 11:07:53 banjo: finalizing instance ctx...
2017/01/10 11:07:53 banjo: finalizing instance indicator...
2017/01/10 11:07:53 banjo: finalizing instance translator...
So, do you have some suggestions or recommendations?
Thanks!
Hi, Karl!
The question regarding the order (which in may case is very important) during executing Finalize funcs at the end of an app. So, the code:
Above snippet of code initializes and executes successfully, but at the end of the application inject calls Finalizable funcs in random order...
First run:
Next run:
So, do you have some suggestions or recommendations?
Thanks!