diff --git a/plugins/analysis/packet/heartbeat.go b/plugins/analysis/packet/heartbeat.go index 2cd03c3e5280556f81aff8833925319a38dda50b..65b44f2f30ba4fdc350a0a12ef71a22360b942c1 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 c95ed394b53b3fef198274b4c37a4eb5034cd115..0475b6205b2a0a736c1a8ea6eefb348c73d76275 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 56db8ffce5ab9fa42fd909b04500c99336152547..ce93828929eb2b72932a037e68a281b2145d246c 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()