Select Git revision
plugin.go 1.46 KiB
package drng
import (
"github.com/iotaledger/goshimmer/packages/binary/drng"
"github.com/iotaledger/goshimmer/packages/binary/drng/payload"
"github.com/iotaledger/goshimmer/packages/binary/messagelayer/message"
"github.com/iotaledger/goshimmer/packages/binary/messagelayer/tangle"
"github.com/iotaledger/goshimmer/plugins/messagelayer"
"github.com/iotaledger/hive.go/events"
"github.com/iotaledger/hive.go/logger"
"github.com/iotaledger/hive.go/marshalutil"
"github.com/iotaledger/hive.go/node"
)
const name = "DRNG" // name of the plugin
var PLUGIN = node.NewPlugin(name, node.Enabled, configure, run)
var (
Instance *drng.Instance
log *logger.Logger
)
func configure(*node.Plugin) {
log = logger.NewLogger(name)
Instance = drng.New()
configureEvents()
}
func run(*node.Plugin) {}
func configureEvents() {
messagelayer.Tangle.Events.TransactionSolid.Attach(events.NewClosure(func(cachedMessage *message.CachedMessage, cachedMessageMetadata *tangle.CachedMessageMetadata) {
cachedMessageMetadata.Release()
cachedMessage.Consume(func(msg *message.Message) {
marshalUtil := marshalutil.New(msg.Payload().Bytes())
parsedPayload, err := payload.Parse(marshalUtil)
if err != nil {
//TODO: handle error
log.Info(err)
return
}
if err := Instance.Dispatch(msg.IssuerPublicKey(), msg.IssuingTime(), parsedPayload); err != nil {
//TODO: handle error
log.Info(err)
return
}
log.Info(Instance.State.Randomness())
})
}))
}