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
|
scriptHash util.Uint160
|
||||||
|
|
||||||
fee fixedn.Fixed8
|
fee fixedn.Fixed8
|
||||||
|
|
||||||
|
parsers map[event.Type]event.Parser
|
||||||
|
subscribers map[event.Type][]event.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
type cfgNetmap struct {
|
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"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client/container"
|
"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/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"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/network/cache"
|
"github.com/nspcc-dev/neofs-node/pkg/network/cache"
|
||||||
containerTransportGRPC "github.com/nspcc-dev/neofs-node/pkg/network/transport/container/grpc"
|
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 {
|
type morphLoadWriter struct {
|
||||||
log *logger.Logger
|
log *logger.Logger
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,7 @@ func listenMorphNotifications(c *cfg) {
|
||||||
|
|
||||||
setNetmapNotificationParser(c, newEpochNotification, netmapEvent.ParseNewEpoch)
|
setNetmapNotificationParser(c, newEpochNotification, netmapEvent.ParseNewEpoch)
|
||||||
registerNotificationHandlers(c.cfgNetmap.scriptHash, lis, c.cfgNetmap.parsers, c.cfgNetmap.subscribers)
|
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,
|
func registerNotificationHandlers(scHash util.Uint160, lis event.Listener, parsers map[event.Type]event.Parser,
|
||||||
|
|
Loading…
Reference in a new issue