diff --git a/dapps/faucet/packages/payload/payload.go b/dapps/faucet/packages/payload/payload.go index 441e892fb0154061b6f0e363157c3dc67d214f3c..264aa31134635cf2ba81670eadae8289efe16618 100644 --- a/dapps/faucet/packages/payload/payload.go +++ b/dapps/faucet/packages/payload/payload.go @@ -9,6 +9,11 @@ import ( "github.com/iotaledger/goshimmer/packages/binary/messagelayer/payload" ) +const ( + // ObjectName defines the name of the facuet object. + ObjectName = "faucet" +) + // Payload represents a request which contains an address for the faucet to send funds to. type Payload struct { payloadType payload.Type @@ -27,7 +32,7 @@ func New(addr address.Address) *Payload { } func init() { - payload.RegisterType(Type, GenericPayloadUnmarshalerFactory(Type)) + payload.RegisterType(Type, ObjectName, GenericPayloadUnmarshalerFactory(Type)) } // FromBytes parses the marshaled version of a Payload into an object. diff --git a/dapps/networkdelay/object.go b/dapps/networkdelay/object.go index 5b41369019c68354bdaaa1fd9a3f5db26c8a3b6a..40e45947dddddc662c292e6ec006e59920731f86 100644 --- a/dapps/networkdelay/object.go +++ b/dapps/networkdelay/object.go @@ -9,6 +9,11 @@ import ( "github.com/mr-tron/base58" ) +const ( + // ObjectName defines the name of the networkdelay object. + ObjectName = "networkdelay" +) + // ID represents a 32 byte ID of a network delay object. type ID [32]byte @@ -145,7 +150,7 @@ func (o *Object) Unmarshal(data []byte) (err error) { } func init() { - payload.RegisterType(Type, func(data []byte) (payload payload.Payload, err error) { + payload.RegisterType(Type, ObjectName, func(data []byte) (payload payload.Payload, err error) { payload = &Object{} err = payload.Unmarshal(data) diff --git a/dapps/valuetransfers/packages/payload/payload.go b/dapps/valuetransfers/packages/payload/payload.go index e121327f064e6abb6d5ddd51996801d2edbc16bf..7ad1ffe3ef63f6b258c0f9b8641ba49bb26f6b6b 100644 --- a/dapps/valuetransfers/packages/payload/payload.go +++ b/dapps/valuetransfers/packages/payload/payload.go @@ -12,6 +12,11 @@ import ( "github.com/iotaledger/goshimmer/packages/binary/messagelayer/payload" ) +const ( + // ObjectName defines the name of the value object. + ObjectName = "value" +) + // Payload represents the entity that forms the Tangle by referencing other Payloads using their trunk and branch. // A Payload contains a transaction and defines, where in the Tangle a transaction is attached. type Payload struct { @@ -253,7 +258,7 @@ func (payload *Payload) Unmarshal(data []byte) (err error) { } func init() { - payload.RegisterType(Type, func(data []byte) (payload payload.Payload, err error) { + payload.RegisterType(Type, ObjectName, func(data []byte) (payload payload.Payload, err error) { payload, _, err = FromBytes(data) return diff --git a/packages/binary/drng/payload/payload.go b/packages/binary/drng/payload/payload.go index bbbdaafdf5515373418acbfe71cf51927b3dc0fb..fe9768f70983397509e321fc211a9fd6af708891 100644 --- a/packages/binary/drng/payload/payload.go +++ b/packages/binary/drng/payload/payload.go @@ -9,6 +9,11 @@ import ( "github.com/iotaledger/hive.go/stringify" ) +const ( + // ObjectName defines the name of the dRNG object. + ObjectName = "dRNG" +) + // Payload defines a DRNG payload. type Payload struct { header.Header @@ -140,7 +145,7 @@ func (payload *Payload) Unmarshal(data []byte) (err error) { } func init() { - payload.RegisterType(Type, func(data []byte) (payload payload.Payload, err error) { + payload.RegisterType(Type, ObjectName, func(data []byte) (payload payload.Payload, err error) { payload = &Payload{} err = payload.Unmarshal(data) diff --git a/packages/binary/messagelayer/payload/payload.go b/packages/binary/messagelayer/payload/payload.go index f0f013e6c45c35ca70b0b082da9b774c1e62946d..f70f87578a42015d56bf590921ab93969ab2b5de 100644 --- a/packages/binary/messagelayer/payload/payload.go +++ b/packages/binary/messagelayer/payload/payload.go @@ -4,11 +4,16 @@ import ( "github.com/iotaledger/hive.go/marshalutil" ) +const ( + // ObjectName defines the name of the data object. + ObjectName = "data" +) + func init() { // register the generic unmarshaler SetGenericUnmarshalerFactory(GenericPayloadUnmarshalerFactory) // register the generic data payload type - RegisterType(DataType, GenericPayloadUnmarshalerFactory(DataType)) + RegisterType(DataType, ObjectName, GenericPayloadUnmarshalerFactory(DataType)) } // Payload represents some kind of payload of data which only gains meaning by having diff --git a/packages/binary/messagelayer/payload/type_register.go b/packages/binary/messagelayer/payload/type_register.go index 6549879a0b0c4facc06bef90b7b2c088bbf0883f..eb22e51eca3eeb6d2f5e3342be35de3edb33d9bf 100644 --- a/packages/binary/messagelayer/payload/type_register.go +++ b/packages/binary/messagelayer/payload/type_register.go @@ -7,16 +7,25 @@ import ( // Unmarshaler takes some data and unmarshals it into a payload. type Unmarshaler func(data []byte) (Payload, error) +// Definition defines the properties of a payload type. +type Definition struct { + Name string + Unmarshaler +} + var ( - typeRegister = make(map[Type]Unmarshaler) + typeRegister = make(map[Type]Definition) typeRegisterMutex sync.RWMutex genericUnmarshalerFactory func(payloadType Type) Unmarshaler ) // RegisterType registers a payload type with the given unmarshaler. -func RegisterType(payloadType Type, unmarshaler Unmarshaler) { +func RegisterType(payloadType Type, payloadName string, unmarshaler Unmarshaler) { typeRegisterMutex.Lock() - typeRegister[payloadType] = unmarshaler + typeRegister[payloadType] = Definition{ + Name: payloadName, + Unmarshaler: unmarshaler, + } typeRegisterMutex.Unlock() } @@ -25,8 +34,8 @@ func RegisterType(payloadType Type, unmarshaler Unmarshaler) { func GetUnmarshaler(payloadType Type) Unmarshaler { typeRegisterMutex.RLock() defer typeRegisterMutex.RUnlock() - if unmarshaler, exists := typeRegister[payloadType]; exists { - return unmarshaler + if definition, exists := typeRegister[payloadType]; exists { + return definition.Unmarshaler } return genericUnmarshalerFactory(payloadType) } @@ -35,3 +44,13 @@ func GetUnmarshaler(payloadType Type) Unmarshaler { func SetGenericUnmarshalerFactory(unmarshalerFactory func(payloadType Type) Unmarshaler) { genericUnmarshalerFactory = unmarshalerFactory } + +// Name returns the name of a given payload type. +func Name(payloadType Type) string { + typeRegisterMutex.RLock() + defer typeRegisterMutex.RUnlock() + if definition, exists := typeRegister[payloadType]; exists { + return definition.Name + } + return ObjectName +} diff --git a/plugins/prometheus/tangle.go b/plugins/prometheus/tangle.go index f0d155360960d2afbbab6f42ba27539f7cba0323..ccf33cc15d3504c096fe984885b40329f44856ec 100644 --- a/plugins/prometheus/tangle.go +++ b/plugins/prometheus/tangle.go @@ -57,22 +57,9 @@ func collectTangleMetrics() { messageTips.Set(float64(metrics.MessageTips())) msgCountPerPayload := metrics.MessageCountPerPayload() for payloadType, count := range msgCountPerPayload { - messagePerTypeCount.WithLabelValues(convertPayloadTypeToString(payloadType)).Set(float64(count)) + messagePerTypeCount.WithLabelValues(payload.Name(payloadType)).Set(float64(count)) } messageTotalCount.Set(float64(metrics.MessageTotalCount())) transactionCounter.Set(float64(metrics.ValueTransactionCounter())) valueTips.Set(float64(metrics.ValueTips())) } - -func convertPayloadTypeToString(p payload.Type) string { - switch p { - case 0: - return "data" - case 1: - return "value" - case 111: - return "drng" - default: - return "unknown" - } -} diff --git a/tools/docker-network/grafana/dashboards/local_dashboard.json b/tools/docker-network/grafana/dashboards/local_dashboard.json index cc4ae2058911617251fec9b0a45e185b24a64fec..7e4d3cb1805ad1cdb26b8570d2ab5eacc0d24c33 100644 --- a/tools/docker-network/grafana/dashboards/local_dashboard.json +++ b/tools/docker-network/grafana/dashboards/local_dashboard.json @@ -486,14 +486,20 @@ { "expr": "irate(tangle_messages_per_type_count{message_type=\"drng\"}[5m])", "interval": "", - "legendFormat": "DRNG Message Per Second", + "legendFormat": "dRNG Messages Per Second", "refId": "C" }, { - "expr": "irate(tangle_messages_per_type_count{message_type=\"unknown\"}[5m])", + "expr": "irate(tangle_messages_per_type_count{message_type=\"faucet\"}[5m])", "interval": "", - "legendFormat": "Unknown Type Message Per Second", + "legendFormat": "Faucet Messages Per Second", "refId": "D" + }, + { + "expr": "irate(tangle_messages_per_type_count{message_type=\"netowrkdelay\"}[5m])", + "interval": "", + "legendFormat": "Network Delay Messages Per Second", + "refId": "E" } ], "thresholds": [], diff --git a/tools/monitoring/grafana/dashboards/local_dashboard.json b/tools/monitoring/grafana/dashboards/local_dashboard.json index cc4ae2058911617251fec9b0a45e185b24a64fec..7e4d3cb1805ad1cdb26b8570d2ab5eacc0d24c33 100755 --- a/tools/monitoring/grafana/dashboards/local_dashboard.json +++ b/tools/monitoring/grafana/dashboards/local_dashboard.json @@ -486,14 +486,20 @@ { "expr": "irate(tangle_messages_per_type_count{message_type=\"drng\"}[5m])", "interval": "", - "legendFormat": "DRNG Message Per Second", + "legendFormat": "dRNG Messages Per Second", "refId": "C" }, { - "expr": "irate(tangle_messages_per_type_count{message_type=\"unknown\"}[5m])", + "expr": "irate(tangle_messages_per_type_count{message_type=\"faucet\"}[5m])", "interval": "", - "legendFormat": "Unknown Type Message Per Second", + "legendFormat": "Faucet Messages Per Second", "refId": "D" + }, + { + "expr": "irate(tangle_messages_per_type_count{message_type=\"netowrkdelay\"}[5m])", + "interval": "", + "legendFormat": "Network Delay Messages Per Second", + "refId": "E" } ], "thresholds": [],