From 17adaafca9e7d23f83da5111aa9a8cab6b8f2116 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 20 Feb 2023 20:59:36 +1300 Subject: [PATCH] config: use Fx to construct PeerRouting --- config/config.go | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/config/config.go b/config/config.go index a24030812a..83570a130f 100644 --- a/config/config.go +++ b/config/config.go @@ -338,17 +338,12 @@ func (cfg *Config) NewNode() (host.Host, error) { } fxopts = append(fxopts, transportOpts...) - var h *bhost.BasicHost - fxopts = append(fxopts, fx.Invoke(func(ho *bhost.BasicHost) { h = ho })) - // Configure routing and autorelay - var router routing.PeerRouting if cfg.Routing != nil { - router, err = cfg.Routing(h) - if err != nil { - h.Close() - return nil, err - } + fxopts = append(fxopts, + fx.Provide(cfg.Routing), + fx.Decorate(func(h host.Host, router routing.PeerRouting) host.Host { return routed.Wrap(h, router) }), + ) } // Note: h.AddrsFactory may be changed by relayFinder, but non-relay version is @@ -366,22 +361,21 @@ func (cfg *Config) NewNode() (host.Host, error) { ) } + var h host.Host + var bh *bhost.BasicHost + fxopts = append(fxopts, fx.Invoke(func(ho host.Host, bho *bhost.BasicHost) { h = ho; bh = bho })) + app := fx.New(fxopts...) if err := app.Start(context.Background()); err != nil { return nil, err } - if err := cfg.addAutoNAT(h); err != nil { + if err := cfg.addAutoNAT(bh); err != nil { h.Close() return nil, err } - var ho host.Host - ho = h - if router != nil { - ho = routed.Wrap(h, router) - } - return &closableHost{App: app, Host: ho}, nil + return &closableHost{App: app, Host: h}, nil } func (cfg *Config) addAutoNAT(h *bhost.BasicHost) error {