From addd9a2b713adc63158178a1e8f1474df588aae0 Mon Sep 17 00:00:00 2001
From: Levente Pap <levente.pap@iota.org>
Date: Wed, 13 May 2020 10:28:38 +0200
Subject: [PATCH] Add message registry for analysis packet types

---
 plugins/analysis/packet/heartbeat.go |  6 ------
 plugins/analysis/packet/packet.go    | 23 ++++++++++++++++++++++-
 plugins/analysis/server/plugin.go    |  2 +-
 3 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/plugins/analysis/packet/heartbeat.go b/plugins/analysis/packet/heartbeat.go
index 2cd03c3e..65b44f2f 100644
--- a/plugins/analysis/packet/heartbeat.go
+++ b/plugins/analysis/packet/heartbeat.go
@@ -62,12 +62,6 @@ type Heartbeat struct {
 	InboundIDs [][]byte
 }
 
-func init() {
-	if err := message.RegisterType(MessageTypeHeartbeat, HeartbeatMessageDefinition); err != nil {
-		panic(err)
-	}
-}
-
 // ParseHeartbeat parses a slice of bytes (serialized packet) into a heartbeat.
 func ParseHeartbeat(data []byte) (*Heartbeat, error) {
 	// check minimum size
diff --git a/plugins/analysis/packet/packet.go b/plugins/analysis/packet/packet.go
index c95ed394..0475b620 100644
--- a/plugins/analysis/packet/packet.go
+++ b/plugins/analysis/packet/packet.go
@@ -1,8 +1,29 @@
 package packet
 
-import "errors"
+import (
+	"errors"
+
+	"github.com/iotaledger/hive.go/protocol/message"
+	"github.com/iotaledger/hive.go/protocol/tlv"
+)
 
 var (
 	// ErrMalformedPacket is returned when malformed packets are tried to be parsed.
 	ErrMalformedPacket = errors.New("malformed packet")
 )
+
+// AnalysisMsgRegistry holds all message definitions for analysis server related messages
+var AnalysisMsgRegistry *message.Registry
+
+func init() {
+	AnalysisMsgRegistry = message.NewRegistry()
+	// register tlv header type
+	if err := AnalysisMsgRegistry.RegisterType(tlv.MessageTypeHeader, tlv.HeaderMessageDefinition); err != nil {
+		panic(err)
+	}
+
+	// analysis plugin specific types (msgType > 0)
+	if err := AnalysisMsgRegistry.RegisterType(MessageTypeHeartbeat, HeartbeatMessageDefinition); err != nil {
+		panic(err)
+	}
+}
\ No newline at end of file
diff --git a/plugins/analysis/server/plugin.go b/plugins/analysis/server/plugin.go
index 56db8ffc..ce938289 100644
--- a/plugins/analysis/server/plugin.go
+++ b/plugins/analysis/server/plugin.go
@@ -81,7 +81,7 @@ func HandleConnection(conn *network.ManagedConnection) {
 	}
 
 	// create new protocol instance
-	p := protocol.New(conn)
+	p := protocol.New(conn, packet.AnalysisMsgRegistry)
 
 	onReceiveData := events.NewClosure(func(data []byte) {
 		// process incoming data in protocol.Receive()
-- 
GitLab