Skip to content
Snippets Groups Projects
  • Hans Moog's avatar
    b9404478
    Feat: started reworking output model (#311) · b9404478
    Hans Moog authored
    * Feat: started reworking output model
    
    * Refactor: refactored some of the model
    
    * Refactor: started to refactor some additional models
    
    * Refactor: started to refactor message layer
    
    * Refactor: still refactoring :/
    
    * Refactor: refactored some more
    
    * Refactor: some error messages are gone YAY
    
    * Refactor: refactor complete
    Feat: started reworking output model (#311)
    Hans Moog authored
    * Feat: started reworking output model
    
    * Refactor: refactored some of the model
    
    * Refactor: started to refactor some additional models
    
    * Refactor: started to refactor message layer
    
    * Refactor: still refactoring :/
    
    * Refactor: refactored some more
    
    * Refactor: some error messages are gone YAY
    
    * Refactor: refactor complete
plugin.go 1.15 KiB
package metrics

import (
	"time"

	"github.com/iotaledger/hive.go/daemon"
	"github.com/iotaledger/hive.go/events"
	"github.com/iotaledger/hive.go/node"
	"github.com/iotaledger/hive.go/timeutil"

	"github.com/iotaledger/goshimmer/packages/binary/messagelayer/message"
	"github.com/iotaledger/goshimmer/packages/binary/messagelayer/tangle"
	"github.com/iotaledger/goshimmer/packages/shutdown"
	"github.com/iotaledger/goshimmer/plugins/messagelayer"
)

var PLUGIN = node.NewPlugin("Metrics", node.Enabled, configure, run)

func configure(plugin *node.Plugin) {
	// increase received TPS counter whenever we receive a new transaction
	messagelayer.Tangle.Events.TransactionAttached.Attach(events.NewClosure(func(transaction *message.CachedMessage, metadata *tangle.CachedMessageMetadata) {
		transaction.Release()
		metadata.Release()

		increaseReceivedTPSCounter()
	}))
}

func run(plugin *node.Plugin) {
	// create a background worker that "measures" the TPS value every second
	daemon.BackgroundWorker("Metrics TPS Updater", func(shutdownSignal <-chan struct{}) {
		timeutil.Ticker(measureReceivedTPS, 1*time.Second, shutdownSignal)
	}, shutdown.ShutdownPriorityMetrics)
}