/
module.go
59 lines (53 loc) · 1.4 KB
/
module.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package p2p
import (
logging "github.com/ipfs/go-log/v2"
"github.com/libp2p/go-libp2p/core/metrics"
"go.uber.org/fx"
"github.com/furyaxyz/elysium-node/nodebuilder/node"
)
var log = logging.Logger("module/p2p")
// ConstructModule collects all the components and services related to p2p.
func ConstructModule(tp node.Type, cfg *Config) fx.Option {
// sanitize config values before constructing module
cfgErr := cfg.Validate()
baseComponents := fx.Options(
fx.Supply(*cfg),
fx.Error(cfgErr),
fx.Provide(Key),
fx.Provide(id),
fx.Provide(peerStore),
fx.Provide(connectionManager),
fx.Provide(connectionGater),
fx.Provide(host),
fx.Provide(routedHost),
fx.Provide(pubSub),
fx.Provide(dataExchange),
fx.Provide(blockService),
fx.Provide(peerRouting),
fx.Provide(contentRouting),
fx.Provide(addrsFactory(cfg.AnnounceAddresses, cfg.NoAnnounceAddresses)),
fx.Provide(metrics.NewBandwidthCounter),
fx.Provide(newModule),
fx.Invoke(Listen(cfg.ListenAddresses)),
fx.Provide(resourceManager),
fx.Provide(resourceManagerOpt(allowList)),
)
switch tp {
case node.Full, node.Bridge:
return fx.Module(
"p2p",
baseComponents,
fx.Provide(blockstoreFromEDSStore),
fx.Provide(infiniteResources),
)
case node.Light:
return fx.Module(
"p2p",
baseComponents,
fx.Provide(blockstoreFromDatastore),
fx.Provide(autoscaleResources),
)
default:
panic("invalid node type")
}
}