forked from TrueCloudLab/frostfs-node
[#328] cmd/node: Add the ability to listen Container contract's events
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
7e586aef90
commit
e9cbdc4a0d
3 changed files with 25 additions and 0 deletions
|
@ -219,6 +219,9 @@ type cfgContainer struct {
|
|||
scriptHash util.Uint160
|
||||
|
||||
fee fixedn.Fixed8
|
||||
|
||||
parsers map[event.Type]event.Parser
|
||||
subscribers map[event.Type][]event.Handler
|
||||
}
|
||||
|
||||
type cfgNetmap struct {
|
||||
|
|
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client/container"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client/container/wrapper"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/network"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/network/cache"
|
||||
containerTransportGRPC "github.com/nspcc-dev/neofs-node/pkg/network/transport/container/grpc"
|
||||
|
@ -61,6 +62,26 @@ func initContainerService(c *cfg) {
|
|||
)
|
||||
}
|
||||
|
||||
func addContainerNotificationHandler(c *cfg, sTyp string, h event.Handler) {
|
||||
typ := event.TypeFromString(sTyp)
|
||||
|
||||
if c.cfgContainer.subscribers == nil {
|
||||
c.cfgContainer.subscribers = make(map[event.Type][]event.Handler, 1)
|
||||
}
|
||||
|
||||
c.cfgContainer.subscribers[typ] = append(c.cfgContainer.subscribers[typ], h)
|
||||
}
|
||||
|
||||
func setContainerNotificationParser(c *cfg, sTyp string, p event.Parser) {
|
||||
typ := event.TypeFromString(sTyp)
|
||||
|
||||
if c.cfgContainer.parsers == nil {
|
||||
c.cfgContainer.parsers = make(map[event.Type]event.Parser, 1)
|
||||
}
|
||||
|
||||
c.cfgContainer.parsers[typ] = p
|
||||
}
|
||||
|
||||
type morphLoadWriter struct {
|
||||
log *logger.Logger
|
||||
|
||||
|
|
|
@ -119,6 +119,7 @@ func listenMorphNotifications(c *cfg) {
|
|||
|
||||
setNetmapNotificationParser(c, newEpochNotification, netmapEvent.ParseNewEpoch)
|
||||
registerNotificationHandlers(c.cfgNetmap.scriptHash, lis, c.cfgNetmap.parsers, c.cfgNetmap.subscribers)
|
||||
registerNotificationHandlers(c.cfgContainer.scriptHash, lis, c.cfgContainer.parsers, c.cfgContainer.subscribers)
|
||||
}
|
||||
|
||||
func registerNotificationHandlers(scHash util.Uint160, lis event.Listener, parsers map[event.Type]event.Parser,
|
||||
|
|
Loading…
Reference in a new issue