@@ -4,8 +4,10 @@ import (
4
4
"context"
5
5
6
6
pubsub "github.com/libp2p/go-libp2p-pubsub"
7
+ "github.com/pkg/errors"
7
8
"github.com/rs/zerolog/log"
8
9
10
+ "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/metricsserver"
9
11
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
10
12
"github.com/shutter-network/rolling-shutter/rolling-shutter/p2p"
11
13
"github.com/shutter-network/rolling-shutter/rolling-shutter/p2pmsg"
@@ -35,13 +37,33 @@ func (dummyMessageHandler) MessagePrototypes() []p2pmsg.Message {
35
37
}
36
38
}
37
39
38
- func New (config * Config ) (service.Service , error ) {
39
- p2pHandler , err := p2p .New (config .P2P )
40
+ type P2PNode struct {
41
+ config * Config
42
+ }
43
+
44
+ func New (config * Config ) * P2PNode {
45
+ return & P2PNode {
46
+ config : config ,
47
+ }
48
+ }
49
+
50
+ func (node * P2PNode ) Start (ctx context.Context , runner service.Runner ) error {
51
+ services := []service.Service {}
52
+
53
+ p2pHandler , err := p2p .New (node .config .P2P )
40
54
if err != nil {
41
- return nil , err
55
+ if err != nil {
56
+ return errors .Wrap (err , "failed to initialize p2p messaging" )
57
+ }
42
58
}
43
- if config .ListenMessages {
59
+ if node . config .ListenMessages {
44
60
p2pHandler .AddMessageHandler (dummyMessageHandler {})
45
61
}
46
- return p2pHandler , nil
62
+ services = append (services , p2pHandler )
63
+
64
+ if node .config .Metrics .Enabled {
65
+ metricsServer := metricsserver .New (node .config .Metrics )
66
+ services = append (services , metricsServer )
67
+ }
68
+ return runner .StartService (services ... )
47
69
}
0 commit comments